我可以使用 GetX 查看导航器堆栈吗?我查看了文档,但找不到有关此主题的任何内容。我通常会关闭这样的对话框
Get.until((route) => !Get.isDialogOpen);
但是我想知道如果特定页面的实例位于路由历史记录中,我是否可以关闭路由,就像这样
Get.until((route) => !Get.routingHistory.contains('/someRoute'));
请注意,这不是有效的语法。
获取.直到 移除屏幕直至满足条件。 与 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')) 一样使用它。
请根据您的用途使用
您需要使用:
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;
}
});
这是可能的。 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 块中添加自定义逻辑。
Get.offAll(Home()); // remove all previous routes and redirect to home
具有命名路由:
Get.offAllNamed('/home');