У меня есть карта с PopupMenuButton, которую я могу нажать, чтобы выполнить действие «Копировать». Я также могу выполнить то же действие со страницы сведений о карте. Проблема, которую я имею, состоит в том, чтобы вернуться на домашнюю страницу, я должен обслужить оба пути. Поэтому, если действие выполняется со страницы сведений, мне нужно дважды щелкнуть, чтобы вернуться на домашнюю страницу.
Действие с домашней страницы:
Домой> добавить страницу карты
- navigator.pop () возвращает меня на домашнюю страницу
Действие со страницы сведений:
home> страница сведений о карте> страница добавления карты
- Необходимость дважды щелкнуть здесь.
Я знаю, что должен сделать pop
как минимум один раз, а затем я использовал popUntil
, чтобы проверитьтекущее состояние маршрута. По какой-то причине он всегда появляется дважды.
После отладки текущий маршрут отображается как /
void _changeRoute(String newRouteName) {
bool isNewRoute = false;
// Pop once
Navigator.pop(context); // after this I should be on home page for the first path
Navigator.popUntil(context, (route) {
print('Current route is ${route.settings.name}');
if (route.settings.name == newRouteName) { // but this is showing current route as /
isNewRoute = true;
}
return true;
});
print('is home page: $isNewRoute');
if (!isNewRoute) {
Navigator.pop(context);
}
}