История маршрутизации Flutter GetX

Можно ли увидеть стек навигатора с помощью GetX? Я просмотрел документацию, но ничего не нашел по этому поводу. Я обычно закрываю, например, такие диалоги

Get.until((route) => !Get.isDialogOpen);

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

  Get.until((route) => !Get.routingHistory.contains('/someRoute'));

Обратите внимание, что это недопустимый синтаксис.

7 ответов

Get.until Удалять экраны до выполнения условия. То же самое и с Navigation.popUntil(). Вы можете использовать его как Get.until((route) => Get.currentRoute == '/home').

Get.offNamed По маршруту Named удалить текущий экран и добавить новый экран. То же самое с Navigation.pushReplacementNamed(). Вы можете использовать его как Get.offNamed('/second').

Get.offAndToNamed По названному маршруту добавьте новый экран, а затем удалите предыдущий экран. То же самое и с Navigation.popAndPushNamed(). Вы можете использовать его как Get.offAndToNamed('/second').

Get.offUntil Удаляйте экраны до тех пор, пока не будет выполнено условие, а затем добавьте новый экран. То же самое и с Navigation.pushAndRemoveUntil(). Вы можете использовать его как Get.offUntil(page, (route) => (route as GetPageRoute).routeName == '/home').

Get.offNamedUntil По именованному маршруту удаляйте экраны до тех пор, пока не будет выполнено условие, а затем добавьте новый экран. То же самое и с Navigation.pushNamedAndRemoveUntil(). Вы можете использовать его как Get.offNamedUntil(page, ModalRoute.withName('/home')).

Пожалуйста, используйте в соответствии с вашим вариантом использования

Вам нужно использовать:

      Get.offUntil(page, (route) => false)

page означает новую страницу для навигации.

      (route) => false

Состояние.

У GetX есть еще одна полезная функция:

      int times = 2;
Get.close(times);

Закройте столько маршрутов, сколько определено в [раз]

Если вы хотите продолжать закрывать маршруты, пока не достигнете маршрута страницы...

Navigator.of(context).popUntil(ModalRoute.withName('/route-name'));
      Get.until((route) {
                if (route.settings.name == Routes.TEST1) {
                  //Return to the specified page
                  return true;
                } else {
                  return false;
                }
              });
      It is possible. Navigator.popUntil pops pages until a passed predicate returns true. We can query the following route in the navigator stack and decide what decision to make. 
The GetX method for doing the same is
`

    Get.offUntil( MaterialPageRoute(builder: (context) => const NewPage()), (route) {
    var currentRoute = route.settings.name;
      debugPrint("Get.currentRoute --- $currentRoute");
        if(currentRoute  == "/Home") {
          return true;
        } else {
          return false;
        }
    }

`


The code above pops until home. Also, we can add custom logic in the if-else block above. 
      Get.offAll(Home());  // remove all previous routes and redirect to home

из с namedRoutes:

      Get.offAllNamed('/home');
Другие вопросы по тегам