Ari*_*aya 2 android dart flutter
我有几页。
1.开始页面
2.页面2
3.页面3
4.主菜单
从1-> 2.和2->3。我使用它进行导航:
Navigator.of(context).push(new MaterialPageRoute<MyPage>(
builder: (BuildContext context) {
return new MyPage();
},
));
Run Code Online (Sandbox Code Playgroud)
并为3->4。我想使用这个(Push Replacement,不会返回),但是它不起作用并且像普通的Push一样工作:
Navigator
.of(context)
.pushReplacement(new MaterialPageRoute(builder: (BuildContext context) {
return new MainMenuPage();
}));
Run Code Online (Sandbox Code Playgroud)
令人困惑。
我遇到了同样的问题,猜想是由于我的3号屏幕来自一个对话框,而我之前没有对其进行处理。所以我所做的是:
Navigator.of(context).popUntil((route) => route.isFirst);
Run Code Online (Sandbox Code Playgroud)
然后
Navigator.pushReplacement(context, MaterialPageRoute(builder: (BuildContext context) => NewPage()));
Run Code Online (Sandbox Code Playgroud)
尝试这个
Navigator.of(context).pushNamedAndRemoveUntil('/routeName', (route) => false);
Run Code Online (Sandbox Code Playgroud)
好吧,pushReplacement()不应该阻止您返回任何页面。顾名思义,它用路由堆栈中的当前页面替换您尝试打开的新页面。
例如,当你在第二页时,使用pushReplacement()方法打开第三页,当你点击后退按钮时,你会跳到第一页并跳过第二页。
为了更清楚,您可以像这样导航到第四页:
[ 1 --push()--> 2 --pushReplacement()--> 3 --pushReplacement()--> 4] 当您点击后退按钮时,您将进入第一页。
现在,如果您想控制 android 中的 backButton,您可以使用该WillPopScope()方法。
| 归档时间: |
|
| 查看次数: |
6134 次 |
| 最近记录: |