【发布时间】:2019-12-25 17:24:29
【问题描述】:
我是 Flutter 的新手,但我遇到了导航弹出系统的问题。我不明白我的代码有什么问题,但是如果每次我按下手机上的后退按钮(而不是 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');
}
【问题讨论】:
-
只要使用
Navigator.of(context).pop();就会弹出到栈中的上一页 -
@SergioBernal 我没有在我的代码上初始化它,因为脚手架自动创建的后退按钮可以正常工作。但是我仍然不明白,当我使用智能手机的后退按钮时,我的工作方式与脚手架创建的按钮不一样:)
-
好的,我明白了。如果你推到“页面 B”然后到“页面 C”,然后按下手机返回按钮会发生什么?
-
@SergioBernal 我已经用一些额外的解释更新了我上面的问题。感谢您继续提供帮助
-
您是否尝试在 iOS 中运行您的项目,看看是否会发生相同的行为?