Флаттер назвал маршруты не строящими историю - PullRequest
0 голосов
/ 29 апреля 2020

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;
      });

И я всегда получаю ноль в предикате.

...