断言失败:!_debugLocked 在 Flutter 中使用 Navigator.popUntil() 时不正确

Failed assertion: !_debugLocked is not true when using Navigator.popUntil() in Flutter

在我的 flutter 应用程序中,我使用此代码转到我的仪表板页面,但它第一次失败,我收到 debugLocked 错误。

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

如果没有下面的代码,我可以使用 Navigator.pushReplacement() 进入我的仪表板,但随后,后退箭头出现在 appBar 上。此后退按钮将应用程序带回路由器。

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

Navigator.of(context).popUntil(ModalRoute.withName(Dashboard.id));

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

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

如果您出于某种原因遇到 setState 错误,这可以是另一种选择。

navigationService.popUntil((_) => true);
navigationService.navigateTo(
  'authentication',
);

基本上我等到导航完成所有设置然后调用 navigateTo。