Dar*_*han 24 navigation screens navigator flutter
我正在我的Flutter应用程序中实现身份验证流程.
登录尝试后,将使用以下代码打开 CheckAuth (检查用户是否已登录,然后打开主屏幕或相应地注册屏幕):
void _signIn() async {
await _auth
.signInWithEmailAndPassword(
email: _userEmail.trim(), password: _userPassword.trim())
.then((task) {
// go to home screen
if (task.getIdToken() != null) {
setState(() {
Navigator.pushReplacement(
context,
new MaterialPageRoute(
builder: (BuildContext context) => new CheckAuth()));
});
} else {
print("Authentication failed");
}
});
}
Run Code Online (Sandbox Code Playgroud)
问题:我可以成功登录该应用,但如果我在登录后点击后退按钮,则会返回到登录屏幕(我希望它从应用中退出).
问题:如何在Flutter中从一个屏幕移动到另一个屏幕而无法返回?
我是否需要以某种方式删除导航器历史记录?或者根本不使用导航仪?我尝试了Navigator.replace方法,但似乎没有用.
Rém*_*let 54
您需要使用Navigator.pushReplacement时留下的身份验证屏幕太大.不仅仅是在重定向到登录页面时.
Pul*_*aid 11
您需要使用
Navigator
.of(_context)
.pushReplacement(new MaterialPageRoute(builder: (BuildContext context) => page));
Run Code Online (Sandbox Code Playgroud)
And的_context对象在哪里,您定向到的页面是哪里。BuildContextpage
Mey*_*sam 10
您可以使用以下pushAndRemoveUntil方法:
将给定路线推到最紧密围绕给定上下文的导航器上,然后删除所有先前的路线,直到
predicate返回true。要删除推送的路由下方的所有路由,请使用始终返回false的[RoutePredicate](例如(Route<dynamic> route) => false)。
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(builder: (context) => MainPage()),
(Route<dynamic> route) => false,
);
Run Code Online (Sandbox Code Playgroud)
小智 6
只需添加以下代码:
Navigator.of(context).pushNamedAndRemoveUntil('/routeName', (route) => false);
Run Code Online (Sandbox Code Playgroud)
我通过从当前页面弹出并显示新页面解决了这个问题:
Navigator.pop(context);
Navigator.of(context).pushReplacement(MaterialPageRoute(builder: (context) => newPage));
Run Code Online (Sandbox Code Playgroud)
这是解决方案 -
使用pushAndRemoveUntil代替pushReplacement
另外,可以使用维护状态:true
对于设置根页面
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) => pageName, maintainState: true),
(Route<dynamic> route) => false);
Run Code Online (Sandbox Code Playgroud)
对于将页面推送到另一页
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => pageName,
maintainState: false),)
Run Code Online (Sandbox Code Playgroud)
**如果您想在出现页面时始终刷新,请使用:**
维护状态:假
| 归档时间: |
|
| 查看次数: |
14607 次 |
| 最近记录: |