【发布时间】:2021-03-14 10:18:45
【问题描述】:
在 Flutter 中,我需要弹出路由堆栈,直到到达模态底部工作表,但我不知道如何使用 Navigator.popUntil 来做到这一点。
场景是这样的:我有一个设置屏幕(我们称之为SettingsScreen),您可以从主要的HomeScreen 以多种不同的方式访问它,从而导致导航器中的路线堆栈不同。因此,例如堆栈可能是:
HomeScreen -> ScreenA -> SettingsScreen
或
HomeScreen -> ScreenA -> ScreenB -> SettingsScreen
现在我需要一种弹出方式,直到我到达 HomeScreen。通常我会使用:
Navigator.popUntil(
context,
(Route<dynamic> route) => route.settings.name == "HomeScreen"
);
但有一个问题:有时HomeScreen 中会打开一个模态底部表,我需要它来保持打开状态。由于模态底部工作表是堆栈上的路由,因此如果工作表打开,则堆栈可能是例如:
HomeScreen -> _ModalBottomSheetRoute<dynamic> -> ScreenA -> ScreenB -> SettingsScreen
所以弹出直到我点击HomeScreen 会导致模态底部表单弹出,从而关闭它。所以,我需要弹出直到我到达HomeScreen 或直到我到达_ModalBottomSheetRoute<dynamic>。
不幸的是,底部工作表路由的设置中没有名称或参数,_ModalBottomSheetRoute<dynamic> 的运行时类型是私有的,所以我什至不能将其用作测试。那么如何更改Navigator.popUntil 中的逻辑以在到达模态底部表时停止?或者有其他方法吗?
【问题讨论】:
标签: flutter flutter-navigation flutter-routes