#flutter #navigation #navigator
Вопрос:
У меня есть приложение, которое использует API Navigator 2.0 и сложную иерархию вложенных навигаторов.
Определенное поведение maybePop
вызывает у меня некоторые проблемы. Он вызывает willPop
, который проверяет, является ли текущий маршрут первым маршрутом Навигатора; если это так, он предотвращает появление pop. Это имеет смысл в мире Navigator 1.0, но в Navigator 2.0 я предоставляю своим навигаторам onPopPage
функцию для обработки всплывающих окон, включая специальную логику для делегирования родительскому Навигатору, если открывается первый маршрут текущего навигатора. Поэтому я не хочу предотвращать всплывающие окна, когда у моего навигатора есть только один маршрут; Я все равно хочу onPopPage
, чтобы мне позвонили.
Я могу обойти эту проверку «первого маршрута», позвонив pop
напрямую вместо maybePop
этого . Однако это также позволяет обойти любые WillPopScope
onWillPop
обратные вызовы, которые мои экраны используют для предотвращения всплывающих окон, когда это может привести к потере данных пользователем.
Есть ли какой-либо способ использовать WillPopScope
без отключения всплывающих окон первого маршрута Навигатора? Есть ли какой — то другой способ, которым я должен подумать о вложенных навигаторах, который позволил бы избежать этой проблемы?