【问题标题】:flutter's WillPopScope disables IOS back gestures, How to enable them?flutter WillPopScope 禁用了 IOS 后退手势,如何启用它们?
【发布时间】:2021-08-21 12:59:39
【问题描述】:

我正在创建一个应用程序,我可以完全手动控制每次按下后退按钮。

基本上,我的应用程序中的小部件/视图会发生变化,而不是导航器推送和弹出新屏幕。

我创建了一个函数,我可以在其中显示视图 1,2 和 3。然后使用 android 上的后退按钮返回。但是在 iOS 的情况下,后退手势不起作用,我无法更改视图。

任何解决方法?帮助将不胜感激

  Future<bool> goBackward(){
    if(_isButtonPressed) {
      if(currentView == 0)
        {
          return Future<bool>.value(true);
        }
      else if(currentView == 1)
        {
          currentView = 0;
          notifyListeners();
          return Future<bool>.value(false);
        }
      else
        {
          currentView = 2;
          notifyListeners();
          return Future<bool>.value(false);
        }
    }
  }

以上是代码的最小版本。当我返回 true 时,这意味着我准备好在后按时弹出屏幕

【问题讨论】:

  • 你试过用flutter cupertino按钮吗?
  • Cupertino 按钮是一个简单的按钮小部件。这对我有什么帮助?
  • 因为它比MaterialApp按钮更支持ios。
  • 请在回答前再次阅读问题。 WillPopScope 与材质按钮或cupertino 按钮无关。

标签: ios flutter flutter-layout


【解决方案1】:

在网上搜索并尝试了许多软件包(如 cupertino_will_pop_scopeback_button_interceptor)后,我发现它们都不适合我的用例。

cupertino_will_pop_scope 是一个失败和成功的东西,所以有时它有效,有时它没有。

这里是为尚未找到答案的任何人提供的解决方案。

正如我之前提到的,WillPopScope 可以在 android 上完美运行,因此无需更改那里的功能。

但对于 IOS,我使用手势检测器来检测从左手势滑动并相应地执行我的操作。

    if(!Platform.isIOS)
      {
        //When OS is Android return the view as is 
        return MyView;
      }
      else{
       //When OS is iOS return the view as is wrapped with GestreDetector

        return GestureDetector(
          onHorizontalDragUpdate: (details) {
            //set the sensitivity for your ios gesture anywhere between 10-50 is good

            int sensitivity = Integers().iosSwipeSensitivity;

            if (details.delta.dx > sensitivity) {
              //SWIPE FROM RIGHT DETECTION
              goBackward();
            }
          },
          child: MyView;
        );
      }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 2021-10-20
    • 2016-04-28
    • 1970-01-01
    相关资源
    最近更新 更多