【发布时间】:2018-10-06 20:12:09
【问题描述】:
我正在我的 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");
}
});
}
问题:我可以成功登录应用程序,但如果我在登录后点击返回按钮,它会返回登录屏幕(虽然我希望它会退出应用程序)。
问题:如何在 Flutter 中从一个屏幕移动到另一个屏幕而无需返回?
我是否需要以某种方式删除导航器历史记录?或者根本不使用导航器?我尝试了 Navigator.replace 方法,但它似乎不起作用。
【问题讨论】:
-
登录屏幕是您应用中的默认路由吗?
-
Navigator.pushReplacement() 在我这边工作得很好。可以分享一下完整代码吗?
-
@GünterZöchbauer 不,默认路由是 CheckAuth。问题是我有一个注册屏幕,在那里我有一个按钮,可以使用 Navigator.push 推送登录屏幕。因此,当用户登录并导航回来时,他又回到了注册屏幕。我用 Navigator.pushReplacement 替换了 Navigator.push,现在它可以正常工作了。谢谢!
-
@dhuma1981 是的,你是对的,.pushReplacement() 工作正常。问题是我有一个注册屏幕,在那里我有一个按钮,可以使用 Navigator.push 推送登录屏幕。因此,当用户登录并导航回来时,他又回到了注册屏幕。我用 Navigator.pushReplacement 替换了 Navigator.push,现在它可以正常工作了。谢谢!
-
Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => HomeScreen(), ), ); Navigator.pushReplacement() 不工作。从当前屏幕重定向到 HomeScreen 后,HomeScreen 仍然显示返回箭头图标。任何其他解决方案?请分享。
标签: flutter navigation screen navigator