У меня есть страница заказа в моем приложении, где пользователь может удалить заказ. Когда кнопка ниже нажата, заказ удаляется, а экран всплывает. Но за это короткое время до того, как на экране появится сообщение об ошибке, и на полсекунды появится красный экран, потому что требуемый заказ больше не существует, но когда всплывающее окно завершено, приложение работает нормально. Как мне это решить? Я знаю, что мог бы использовать другой подход, когда заказ не удаляется из списка, но я хочу, чтобы он работал таким образом, и я хочу открыть экран, прежде чем удалить заказ из списка.
Сообщение об ошибке: ════════ Исключение, перехваченное библиотекой виджетов Плохое состояние: нет элемента
ElevatedButton(
child: Text('Remove'),
onPressed: () {
Navigator.pop(context);
Provider.of<Orders>(context, listen: false)
.removeOrder(order.id);
},
),
onPressed: () {
Provider.of<Orders>(context, listen: false)
.removeOrder(order.id);
Navigator.pop(context);
},
сделайте это вместо вашего кода. В нем говорится, что заказ на удаление вызывается после navigator.pop(context);
. Это означает, что экран выскакивает, но функция вызывает экран.
Добавьте логическую переменную, которая проверяет, загружены ли данные, после чего вы можете вернуться туда, где вы хотите, чтобы состояние или функциональность вашего провайдера были. #учимсявместе
Отлично, что сработало, спасибо!!!
Это имеет смысл. Я попробовал это сейчас, но это все еще не работает, и я думаю, что это потому, что у меня есть другой провайдер в начале класса, где прослушивание истинно (что должно быть), и этот провайдер вызывает ошибку, когда порядок исчезает, что, конечно же, было невозможно для вас знать, так как я не включил его. Но я думаю, что это приближает меня, может быть, я мог бы как-то «отключить» первого провайдера, когда нажата кнопка удаления...