Flutter:如何在没有后退按钮的情况下按下导航路线



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

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

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

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

automaticallyImplyLeading: false,

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

onWillPop: () async => false,

如果返回false,则表示您限制屏幕离开屏幕,并且您现在无法通过单击后退按钮退出应用程序。因为如果你想回去还是不回去,你将返回false作为决定。如果你想关闭应用程序的新屏幕,你可以在onWillPop方法中使用exit(0)

您应该用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);
},
),
],
)
),
),
);
}

}

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

请搜索appBar和WillPopScope前导参数

相关内容

  • 没有找到相关文章

最新更新