#flutter
Вопрос:
Когда вы слишком часто запускаете навигатор в трепете, вас встречает черный экран. Чтобы этого никогда не произошло с пользователем из-за какого-либо непредвиденного события с моей стороны, я создал следующую функцию:
static void safePop<T extends Object>(BuildContext context, [T? result]) {
if (Navigator.canPop(context)) {
Navigator.of(context).pop<T>(result);
}
}
Это отлично подходит для простых всплывающих окон, но я недавно перенес свое приложение на использование именованных маршрутов и хотел бы использовать Navigator.popUntil(контекст, модальный маршрут.withName()) для более точного отображения виджетов, когда я нахожусь на 4 или 5 страницах в приложении. У меня возникли проблемы с поиском способа реализации чего-то подобного вышеописанному с помощью popUntil.
Есть ли способ предотвратить появление навигатора на черном экране в случае передачи функции popUntil неправильного/несуществующего маршрута?
Спасибо
Комментарии:
1. Проблема с обработкой этого условия заключается в том, что, как у вас есть, ничего не произойдет, если вы не сможете выскочить, поэтому вы можете перейти к производству и иметь кнопки, которые ничего не делают, если вы нажмете на них. Я бы на самом деле избегал использовать это условие, потому что оно приносит больше вреда, чем пользы. Вы должны быть в состоянии с уверенностью определить навигационную структуру ваших экранов. Или, по крайней мере, добавьте еще с
assert(false);
, чтобы в dev вы получили какую-то ошибку. Вам также следует заглянуть в Навигатор 2.0.Я оставляю это в качестве комментария, потому что я не ответил на ваш вопрос.2. Я понимаю, к чему вы клоните, но я бы предпочел, чтобы определенная кнопка не работала и ничего не делала (и позволяла пользователю использовать другие части приложения), чем появляться на черном экране, который не позволяет пользователю взаимодействовать с приложением.