【问题标题】:How to simulate device back btn press/ AppBar back press? WillPopScope is not called upon Navigator.pop()如何模拟设备后退按钮按下/ AppBar 后退?不会在 Navigator.pop() 上调用 WillPopScope
【发布时间】:2021-11-25 16:42:41
【问题描述】:

我能够使用WillPopScope 覆盖后退按钮的 onPressed 行为。现在,每当我按下device back buttondefault AppBar back button 时,onWillPop 中的代码都会按预期运行。

现在的问题是我想拥有自己的自定义按钮来向后导航,但是Navigator.of(context).pop() 不会检查 WillPopScope,就好像它不存在一样。

  • 有没有办法模拟系统的后退行为或以某种方式调用它?
  • 我知道我可以调用相同的函数 onWillPop() 在按下我的自定义后退按钮时手动进行,但我渴望找到一种更简洁的方法,因为将来我很容易忘记这样做并导致错误。

【问题讨论】:

  • 你能分享你正在尝试的代码吗?也许我可以帮忙

标签: flutter flutter-navigation


【解决方案1】:

在简单的情况下,当您需要拦截 Android 后退按钮时,通常会将WillPopScope 添加到您的小部件树中。但是,在开发与后退按钮交互的有状态小部件时,使用BackButtonInterceptor 会更方便。

更多详情请查看此链接:https://pub.dev/packages/back_button_interceptor

【讨论】:

    【解决方案2】:

    在使用StateFullWidget时,使用BackButtonInterceptor更方便。 希望这会有所帮助。 有关更多详细信息,请检查: [1]:https://pub.dev/packages/back_button_interceptor

    【讨论】:

      【解决方案3】:

      关键是改用Navigator.of(context).maybePop()。或者更具体地说,在我使用嵌套导航时使用Navigator.of(context, rootNavigator:true).maybePop()

      【讨论】:

        猜你喜欢
        • 2021-11-21
        • 1970-01-01
        • 2020-06-02
        • 2021-04-16
        • 2015-04-09
        • 1970-01-01
        • 2018-02-08
        • 2011-10-17
        • 1970-01-01
        相关资源
        最近更新 更多