【问题标题】:Flutter pop until reaching modal bottom sheet颤振弹出直到到达模态底部表
【发布时间】: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&lt;dynamic&gt;

不幸的是,底部工作表路由的设置中没有名称或参数,_ModalBottomSheetRoute&lt;dynamic&gt; 的运行时类型是私有的,所以我什至不能将其用作测试。那么如何更改Navigator.popUntil 中的逻辑以在到达模态底部表时停止?或者有其他方法吗?

【问题讨论】:

    标签: flutter flutter-navigation flutter-routes


    【解决方案1】:

    如何将路由设置传递给 showModalBottomSheet(... routeSettings: RouteSettings(name: 'MyModalBottomSheet'))?然后,您可以测试 popupUntil.... 中给出的名称。

    【讨论】:

      猜你喜欢
      • 2021-02-18
      • 2022-01-18
      • 1970-01-01
      • 2019-03-22
      • 2021-06-11
      • 1970-01-01
      • 2021-05-28
      • 2020-09-04
      • 1970-01-01
      相关资源
      最近更新 更多