Маршрут навигации не удален или Pop - PullRequest
0 голосов
/ 27 марта 2020

В настоящее время я делаю страницу настроек безопасности в моем приложении. Теперь проблема, с которой я сталкиваюсь, - это навигация назад или нажатие кнопки назад. Страницы по-прежнему перемещаются, даже всплывающие.

В моем коде я использую его для перехода к первому потоку

Navigator.push(
        context,
        MaterialPageRoute(builder: (context) => otp_mPin())

Теперь во втором или обратном потоке я использовал это

Код, используемый для второго потока

На странице OTP я использовал pop it и pu sh

Navigator.of(context).pop();
Navigator.push(
        context,
        MaterialPageRoute(builder: (context) => mPin())

Вот поток, который я получаю

Страница настроек экрана 1

 onTap: (){
                Navigator.push(context, MaterialPageRoute(builder: (context) => ProtectPhone()));
              },

Страница экрана 2 с паролем

Навигация по успешному паролю

   onPressed: (){
            Navigator.pop(context);
            Navigator.push(context, MaterialPageRoute(builder: (context) => selectScreenLock()));
          },

Кнопка возврата / willPop

Navigator.pop(context);

Экран 3 Выбор

Выберите или щелкните MPin, который будет перенаправлять на страницу OtpMpin

  Navigator.push(
                    context,
                    MaterialPageRoute(builder: (context) => OtpMpin())
                );

Команда возврата или выполнения воли

  Navigator.of(context).pop();
  Navigator.push(
      context,
      MaterialPageRoute(builder: (context) => ProtectPhone())
  );

Secreen 4 OTP

Успешный ввод OTP

 Navigator.pop(context);
                      Navigator.push(context, MaterialPageRoute(builder: (context) => setMPin()));

Экран 5 MPIN

Команда Back или Willpop

        Navigator.of(context).pop();
      Navigator.push(
    context,
    MaterialPageRoute(builder: (context) => selectScreenLock())

Первый поток

1> 2> 3> 4> 5

Второй или обратный поток

5> 3> 2> 4> 2> 1

1 Ответ

1 голос
/ 27 марта 2020

Используйте метод pushReplacement на 3-й и 4-й страницах, чтобы при переходе с 3-й на 4-ю страницу 3-я страница удалялась из стека и перемещалась на 4-ю страницу. так что если пользователь нажимает кнопку «Назад» на 4-й странице, то пользователь получает вторую страницу.

Navigator.pushReplacement(context,
                MaterialPageRoute(builder: (context) {
              return NewPage();
            }));
...