失败的断言:!_debugLocked 在 Flutter 中使用 Navigator.popUntil() 时不为真

Sow*_*ber 5 navigation dart flutter flutter-widget

在我的 flutter 应用程序中,我使用此代码转到我的仪表板页面,但第一次没有这样做,我收到了debugLocked错误消息。

应用程序中的启动页面是一个路由器,它检查共享首选项“sessionid”,如果设置,则将用户直接带到仪表板,否则将他们带到登录。

如果没有下面的代码,我就可以很好地访问我的仪表板,Navigator.pushReplacement()但是随后,appBar 上出现了一个后退箭头。此后退按钮将应用程序带回路由器。

我搜索了有关如何从导航器中删除所有屏幕的答案,以下是我发现的内容。

Navigator.of(context).popUntil(ModalRoute.withName(Dashboard.id));
Run Code Online (Sandbox Code Playgroud)

使用上面的代码给了我debugLocked错误。有没有办法缓解这个问题?或者有没有其他有效的方法可以从上下文中删除屏幕?设置是否automaticallyImplyLeadingfalse帮助?因为只有在有人登录或注册后才会出现此错误。

小智 2

删除所有以前的路线使用Navigator.pushAndRemoveUntil()

  • 是的,这解决了问题。请原谅我......你能解释一下为什么 `popUntil` 方法在这里失败了吗?或者为什么 `pushAndRemoveUntil` 比前者更好? (3认同)