Flutter 导航到主屏幕而不是上一个
Flutter navigate to main screen instead of previous
我刚开始使用 Flutter,我不会说它太棒了。不过,我遇到的一个“问题”是,当您按下后退键时,它将导航到上一个屏幕。我知道那是应该发生的事情,但我该如何改变呢?此外,appBar 按钮的作用相同,因此我也在寻找该按钮的“修复程序”。
如果您需要任何代码,请告诉我!祝你今天愉快,如有任何拼写错误,我们深表歉意!
您可以使用
Navigator.of(context).pushNamedAndRemoveUntil(
'/', (Route<dynamic> route) => false);
创建与主屏幕对应的命名路由“/”并完成。
如有任何疑问,请随时询问
首先,您需要在 MaterialApp
:
中为您的路线设置名称
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
initialRoute: '/',
routes: {
'/': (context) => MyHomePage(),
'/second': (context) => Page2(),
'/third': (context) => Page3(),
},
);
}
}
然后你需要用 WillPopScope
包裹第三页的 Scaffold
(或你想从中导航回 HomePage
的任何其他页面)以更改什么当用户按下后退按钮时发生。最后您需要使用 popUntil
导航回 HomePage
.
这是第三页build
方法的代码:
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () {
Navigator.of(context)
.popUntil(ModalRoute.withName("/"));
return Future.value(false);
},
child: Scaffold(
body: Center(
child: Container(
child: Text('third page'),
),
),
),
);
}
如果您在 MaterialApp 中指定“家”属性,则无需创建任何路线。然后可以按如下方式导航到主屏幕:
Navigator.of(context).popUntil(ModalRoute.withName('/'));
我刚开始使用 Flutter,我不会说它太棒了。不过,我遇到的一个“问题”是,当您按下后退键时,它将导航到上一个屏幕。我知道那是应该发生的事情,但我该如何改变呢?此外,appBar 按钮的作用相同,因此我也在寻找该按钮的“修复程序”。
如果您需要任何代码,请告诉我!祝你今天愉快,如有任何拼写错误,我们深表歉意!
您可以使用
Navigator.of(context).pushNamedAndRemoveUntil(
'/', (Route<dynamic> route) => false);
创建与主屏幕对应的命名路由“/”并完成。 如有任何疑问,请随时询问
首先,您需要在 MaterialApp
:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
initialRoute: '/',
routes: {
'/': (context) => MyHomePage(),
'/second': (context) => Page2(),
'/third': (context) => Page3(),
},
);
}
}
然后你需要用 WillPopScope
包裹第三页的 Scaffold
(或你想从中导航回 HomePage
的任何其他页面)以更改什么当用户按下后退按钮时发生。最后您需要使用 popUntil
导航回 HomePage
.
这是第三页build
方法的代码:
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () {
Navigator.of(context)
.popUntil(ModalRoute.withName("/"));
return Future.value(false);
},
child: Scaffold(
body: Center(
child: Container(
child: Text('third page'),
),
),
),
);
}
如果您在 MaterialApp 中指定“家”属性,则无需创建任何路线。然后可以按如下方式导航到主屏幕:
Navigator.of(context).popUntil(ModalRoute.withName('/'));