Как убрать backstack, включая домашнюю страницу в флаттере - PullRequest
0 голосов
/ 26 апреля 2020

Я видел много примеров, но ни один из них не дал мне способа удалить весь задний стек (включая домашнюю страницу) при переходе на следующую страницу.

Например: у меня есть несколько страниц входа, как только пользователь успешно ввел учетные данные пользователя, переместится на домашний экран, поэтому здесь я хочу удалить все предыдущие экраны, которые появлялись до сих пор. Как я могу это сделать?

В настоящее время используется код:

   Navigator.of(context).pushNamedAndRemoveUntil(
                            HomeScreen.route_name, ModalRoute.withName('/'));

Ответы [ 2 ]

4 голосов
/ 26 апреля 2020

Чтобы удалить все маршруты ниже проталкиваемого маршрута, используйте RoutePredicate, который всегда возвращает false (например, (Route route) => false).

Таким образом, чтобы ваш код работал должным образом, удалите ModalRoute.withName ('/') и задайте предикат маршрута, который возвращает false. Так что это должно быть

Navigator.of(context).pushNamedAndRemoveUntil(
                            HomeScreen.route_name, (Route<dynamic> route)=>false);

Для справки см. method"> официальную документацию

0 голосов
/ 26 апреля 2020

Попробуйте вот так

Navigator.pushAndRemoveUntil(
              context,
              MaterialPageRoute(builder: (dialogContex) => HomePageScreen()),
              ModalRoute.withName("/HomePageScreen"));
...