【问题标题】:Swipe back gesture on iOS is overwritten by WillPopScopeiOS 上的向后滑动手势被 WillPopScope 覆盖
【发布时间】:2019-02-23 13:13:26
【问题描述】:

如果我使用 WillPopScope 用新路由覆盖 BackButton 行为,它可以正常工作。但在 iOS 上,自动“SwipeBack”手势不再起作用。如何在 iOS 上设置 SwipeBack 手势以将当前屏幕推送到具有“StartScreen”类的页面?

WillPopScope(onWillPop: (){
      Navigator.push(
        context,
        MaterialPageRoute(
          builder: (context) => StartScreen(),
        ),
      );
    }

【问题讨论】:

  • 你说的BuckButton行为是在AppBar还是系统底部的后退键?
  • 这是在讨论here,到目前为止这是预期的行为。
  • 但是如何用我选择的不同手势覆盖 iOS 的向后滑动手势?

标签: flutter flutter-layout


【解决方案1】:

这可能是一个很晚的答案,但目前没有明确的机会听这个手势

可以实现按下后退键时对onWillPop的调用,同时做ModalRoute类的后代类(或其后代,如MaterialPageRoute)并覆盖hasScopedWillPopCallback 方法(但是,手势不会调用 onWillPop)

【讨论】:

    【解决方案2】:

    WillPopScope 并不意味着影响导航(即:在导航器上推送路线)。当您不希望用户导航离开时,它用于否决(阻止)导航离开当前路线。 (例如,当它可能导致数据丢失时。)

    试试CupertinoWillPopScope,因为它允许您有条件地否决后退导航。所以只有在真正需要的时候才能屏蔽它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-23
      • 1970-01-01
      • 2012-02-17
      • 2019-09-21
      相关资源
      最近更新 更多