【问题标题】:How to navigate to screen and remove all rout history [sign out functionality]如何导航到屏幕并删除所有溃败历史[退出功能]
【发布时间】:2021-05-24 12:43:38
【问题描述】:

如何导航到某个屏幕并删除所有以前的路由历史记录,以便用户无法按返回并返回上一个屏幕?
就我而言,我想在用户注销时推送登录屏幕,但导航历史记录仍然存在,因此用户只需按回并返回上一页。

What I have:
A -> B -> C       //Before signing out
A -> B -> C -> L  //After signing out

What I want:
A -> B -> C       //Before signing out
L                 //After signing out

【问题讨论】:

标签: flutter dart flutter-navigation


【解决方案1】:

使用下面的代码

Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context) => HomePage(),), (route) => false);

将 HomePage() 更改为您的班级名称“L”。

pushAndRemoveUntil 将删除所有现有路由并推送到新页面。

【讨论】:

  • 我以前看过这个建议,但是当我执行代码时,我登录后登陆页面:A -> B -> C 变为 L -> A。如果我按回我会返回登录页面。
  • 确保您使用的是 pop on backpress。因为我在每个 sigout 代码上都使用它
  • 是的,它在另一个 PR 中也有 290 多个赞成票,所以它应该可以工作。 pop on backpress 是什么意思。这不是由颤振导航框架处理的吗?
  • 您提供的代码有效,这是我的 Firebase 连接有一点延迟,所以当我退出并检查我的身份验证状态时,它仍然说已通过身份验证并继续登录。感谢您的帮助好友!
  • 哦,继续成长^^
【解决方案2】:
Navigator.of(context).popUntil(ModalRoute.withName('L'));

【讨论】:

  • 我没有使用命名路由。是否有用于路由价值屏幕参数的等效版本?
猜你喜欢
  • 2020-03-22
  • 1970-01-01
  • 1970-01-01
  • 2019-03-12
  • 2013-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多