我是新手,但导航弹出系统出现问题。我不明白我的代码有什么问题,但是如果每次我按下电话上的后退按钮(而不是AppBar或其他按钮)时,应该回到我的页面的根目录,而不是上一页,该如何检查代码? 。但是当我使用自动创建的应用栏后退按钮按回来时,效果很好。
我试图通过将一些未通过的BuildContext传递给我分开的小部件来解决此问题,希望这是问题所在,但仍然无法解决
示例: 我有三页A,B,C
A-> B-> C
A-> B-> D
A-> B-> E
当我在B上按智能手机的后退按钮时,它将转到A(有效)。
当我按下C上的Scaffold appbar后退按钮时,它会转到B(仍然有效)
但是,当我在C,D或E上按智能手机的后退按钮时,它将转到A(不起作用)
//this is where I initialize my route
class _LoginPageState extends State<LoginPage>{
@override
Widget build(BuildContext context) {
return MaterialApp(
routes: <String, WidgetBuilder> {
'/main': (BuildContext context) => MainPage(),
// '/b': (BuildContext context) => MyPage(title: 'page B'),
// '/c': (BuildContext context) => MyPage(title: 'page C'),
},
.....
// and this is how I push
onPressed: () {
Navigator.of(context).pushNamed('/main');
}
答案 0 :(得分:0)
感谢@HassanSaleh给了我关于Material App的一些线索。我对使用实质性应用程序路线有误解。我在每个页面上初始化了材料应用程序的路由,并仔细阅读了关于导航页面的flutter开发指南,发现我应该只将materialapp放在小部件堆栈的最顶部。因此,对我来说,解决方法是在每个小部件上都删除了材质应用程序,而只将一个材质应用程序及其路线放置在了最根端的应用程序小部件上。也许我有不好的解释,希望你们能理解