Navigator.popUntil
всегда возвращает ноль в качестве параметра в обратном вызове.
Я использую named route
для навигации. В приложении материала я добавил routeGenerator
, и я устанавливаю initialRoute
в соответствии со статусом входа в систему - initialRoute : isLoggedIn ? "/" : "Login"
.
На моей странице root у меня есть нижняя панель вкладок для навигации. В моем PageView
у меня есть экземпляры дочерних виджетов. В моем appbar
есть панель поиска, которая при нажатии использует Navigator.of(context).pushNamed("SearchItem",);
и переходит на страницу поиска. При выборе элемента из результатов поиска я хочу, чтобы пользователь перешел на страницу описания элемента, а затем при нажатии назад я хочу, чтобы он снова попал на страницу root, пропуская страницу поиска. Я ожидаю, что Navigator.of(context).pushNamedAndRemoveUntil("ItemDescription", ModalRoute.withName("/"), arguments: item);
добьется цели.
Но когда пользователь нажимает кнопку возврата на странице описания элемента, приложение закрывается. Я попытался проверить имя маршрута, используя popUntil
, и я всегда получаю нулевое значение в обратном вызове. Я также проверил, используя navigatorObserver
, но снова, когда вызывается onPressed, я всегда получаю ноль в обоих параметрах.
Что я делаю не так?
Обновление 1
Я попытался заменить Navigator.of(context).pushNamedAndRemoveUntil("ItemDescription", ModalRoute.withName("/"),
ниже кода
Navigator.of(context).popUntil((Route route){
//putting a debugger here shows route is always null
print(route.settings.name);
return false;
});
И я всегда получаю ноль в предикате.