在 Flutter 中,我需要弹出路由堆栈,直到到达模态底部表,但我不知道如何使用Navigator.popUntil来做到这一点。
场景是这样的:我有一个设置屏幕(让我们称之为SettingsScreen
),您可以从 main 以多种不同的方式访问它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
OR直到我到达_ModalBottomSheetRoute<dynamic>
.
不幸的是,底部工作表路由的设置中没有名称或参数,并且运行时类型_ModalBottomSheetRoute<dynamic>
是私有的,所以我什至不能将其用作测试。Navigator.popUntil
那么,当它到达模态底部表时,如何更改逻辑以停止?还是有另一种方法可以做到这一点?