Как выскочить последние три маршрута из стека навигатора в флаттер - PullRequest
0 голосов
/ 23 января 2020

Сценарий

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

Итак, я хочу, чтобы все экраны, участвующие в процессе регистрации / входа в систему, сказали: 3 экрана .

То, что я уже пробовал

Я уже пробовал navigator.popUntil , но он может работать, только если вы хотите вернуться к каждый раз по одному экрану, подобному следующему:

Маршрут проталкивания:

Navigator.push(
  context,
  MaterialPageRoute(
    settings: RouteSettings(name: '/loginRedirect'),
      builder: (context) => AttractionScreen(
            attractionData: att,
          )),
);

Отображение маршрута в signInScreen:

Navigator.popUntil(context, ModalRoute.withName('/loginRedirect'));

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

Что я хочу сделать сейчас

Теперь я хочу иметь В реализации, где после успешного входа в систему я выскакиваю три верхних экрана из стека навигаторов, которые я часто искал, но не смог найти никакого решения для этого. Итак, как я могу получить последние маршруты из стека навигатора?

1 Ответ

0 голосов
/ 23 января 2020

Я только что получил решение, в котором раньше не был уверен.

Мне просто нужно позвонить три раза:

Navigator.pop(context)

вот так:

if(needBackRedirect){
    Navigator.pop(context);
    Navigator.pop(context);
    Navigator.pop(context);
}
...