【问题标题】:Flutter: How to push a navigation route without the back button?Flutter:如何在没有返回按钮的情况下推送导航路线?
【发布时间】:2020-10-14 20:09:41
【问题描述】:

我了解Navigator.pushReplacementNamed 允许您在返回栈上替换当前屏幕,但是您如何处理当前屏幕已经有自己的返回按钮的情况?

我注意到如果我在这种情况下使用.pushReplacementNamed 函数,它会保留上一个屏幕的后退按钮,但我希​​望有这个流程:

屏幕 A .pushNamed -> 屏幕 B(能够导航回 A).pushReplacementNamed -> 屏幕 C(应该无法导航回 B 或 A)

【问题讨论】:

    标签: flutter dart navigation


    【解决方案1】:

    如果您在目标屏幕上使用AppBar 小部件,请确保将此行添加到您的AppBar 小部件中,这将阻止应用默认在AppBar 上自动添加后退按钮:

        automaticallyImplyLeading: false,
    

    但是,无论您是否使用AppBar,并且您不想通过单击后退按钮(物理按钮或Cupertino 滑动手势)转到上一个屏幕,您都必须使用WillPopScope 作为根小部件在目标屏幕上。此外,您的 onWillPop 方法应如下所示:

    onWillPop: () async => false,
    

    通过返回 false,您将限制您的屏幕离开屏幕,并且您现在无法通过单击后退按钮退出应用程序。因为您将返回false 作为您是否要返回的决定。如果您希望关闭应用程序的新屏幕,您可以在 onWillPop 方法内的这一点上使用 exit(0)

    【讨论】:

      【解决方案2】:

      你应该用 WillPopScope 包裹根 Widget 以便能够处理返回按钮

      下面的例子

      class Home extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return new WillPopScope(
          onWillPop: () async => false,
          child: Scaffold(
            appBar: AppBar(
              title: Text("WillPopScope example"),
            ),
            body: Center(
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  crossAxisAlignment: CrossAxisAlignment.center,
                  children: <Widget>[
                    RaisedButton(
                      child: Text('Back'),
                      onPressed: () {
                        Navigator.pop(context);
                      },
                    ),
                  ],
                )
            ),
          ),
        );
      }
      

      }

      【讨论】:

        【解决方案3】:

        覆盖后退按钮可能会对您有所帮助。

        请搜索 appBar 的主要参数WillPopScope

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-10-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-01
          • 2013-01-30
          相关资源
          最近更新 更多