Flutter GetX 路由历史记录

问题描述 投票:0回答:7

我可以使用 GetX 查看导航器堆栈吗?我查看了文档,但找不到有关此主题的任何内容。我通常会关闭这样的对话框

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

但是我想知道如果特定页面的实例位于路由历史记录中,我是否可以关闭路由,就像这样

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

请注意,这不是有效的语法。

flutter flutter-get
7个回答
12
投票

获取.直到 移除屏幕直至满足条件。 与 Navigation.popUntil() 相同。 您可以像 Get.until((route) => Get.currentRoute == '/home') 一样使用它。

Get.offNamed 通过命名路线,删除当前屏幕并添加新屏幕。 与 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')) 一样使用它。

请根据您的用途使用


6
投票

您需要使用:

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

page 表示要导航的新页面。

(route) => false

是条件。


4
投票

GetX 还有另一个有用的功能:

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

关闭[次]定义的尽可能多的路线


2
投票

如果你想继续关闭路由直到到达页面路由....

Navigator.of(context).popUntil(ModalRoute.withName('/route-name'));

0
投票
Get.until((route) {
                if (route.settings.name == Routes.TEST1) {
                  //Return to the specified page
                  return true;
                } else {
                  return false;
                }
              });

0
投票

这是可能的。 Navigator.popUntil 弹出页面,直到传递的谓词返回 true。我们可以在导航器堆栈中查询以下路线并决定做出什么决定。 执行相同操作的 GetX 方法是

    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;
        }
    }

上面的代码会弹出直到回家。另外,我们可以在上面的 if-else 块中添加自定义逻辑。


-1
投票
Get.offAll(Home());  // remove all previous routes and redirect to home

具有命名路由:

Get.offAllNamed('/home');
© www.soinside.com 2019 - 2024. All rights reserved.