断言失败:!_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。
在我的 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。