У меня есть карточка с PopupMenuButton, которую я могу нажать, чтобы выполнить действие «копировать». Я также могу выполнить то же действие на странице сведений о карте. Проблема, с которой я столкнулся, состоит в том, чтобы вернуться на домашнюю страницу, я должен обслуживать оба пути. Поэтому, если действие выполняется со страницы сведений, мне нужно дважды щелкнуть, чтобы вернуться на домашнюю страницу.
Действие с домашней страницы:
Главная ›страница добавления карты
- navigator.pop () возвращает меня на домашнюю страницу
Действие на странице сведений:
главная ›страница с данными карты› страница добавления карты
- Придется здесь дважды щелкнуть.
Я знаю, что мне нужно сделать 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);
}
}