Flutter: - Как вернуться или перенаправить (Навигация) 3-4 экрана назад

Предположим, у меня есть 6 экранов A, B, C, D, E, F. Сначала мне нужно пройти по всем экранам один за другим (A = ›B = C =› D = ›E =› F). После этого я хочу перенаправить экран F на экран C, и он работает. Теперь мой текущий экран - C, поэтому моя проблема заключается в том, что после использования кнопки «Назад» или после нажатия на мой экран перейдите к E., но я хочу перейти на экран B.

Примечания: - Я не хочу использовать Get.off при навигации по D = ›E = F.

Я использую для этого плагин Get

Заранее спасибо.


person Alpit Panchal    schedule 30.04.2021    source источник


Ответы (2)


Вы можете использовать popuntil

  • Navigator.of(context).popUntil((route) => route.isFirst);
  • Navigator.of(context).pushNamedAndRemoveUntil('/screen4', ModalRoute.withName('/screen1'));

or

()=> Navigator.pushAndRemoveUntil(
                      context,
                      MaterialPageRoute(builder: (BuildContext context) => LoginPage()),
                      ModalRoute.withName('/'),
                    )

или просто вытолкните все, а затем нажмите замену.

Navigator.of(context).pop();
// More pop
Navigator.pushReplacement(
      context, MaterialPageRoute(builder: (BuildContext context) => A()));
}
person Punreach Rany    schedule 30.04.2021

Пытаться

Get.offUntil (pageB, (route) = ›route is pageA);

person user15476128    schedule 30.04.2021
comment
Спасибо за ответ. Я обновил свой вопрос, поэтому в соответствии с вашим ответом Мы воссоздаем страницу A. - person Alpit Panchal; 30.04.2021
comment
что вы имеете в виду под воссоздать? он очищает маршрут вне страницы B - очищает все до тех пор, пока (route is PageA) не станет «истинным». в вашем случае вы можете вместо этого использовать ((route) = ›route.isFirst), это будет иметь тот же эффект - Get.back будет указывать на страницу A. - person user15476128; 30.04.2021
comment
Если обновление касалось экрана C, просто используйте Get.offUntil (pageC, (route) = ›route is pageB); - person user15476128; 30.04.2021
comment
Я хочу просто удалить только экран D и E, а не весь экран, - person Alpit Panchal; 03.05.2021
comment
Вот и все, offUntil удаляет не весь маршрут, а его часть по условию (route). Get.back (), вызываемый со страницы C, приведет вас к странице B. - person user15476128; 11.05.2021