5

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

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

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

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

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

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

4

2 回答 2

1

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

于 2019-10-18T12:58:50.960 回答
0

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

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

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

于 2020-12-28T00:27:29.883 回答