断言失败:在Flutter

时间:2019-10-18 12:16:58

标签: flutter

在我的flutter应用程序中,我使用此代码转到仪表板页面,但第一次却没有成功,并且出现了debugLocked错误。

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

没有下面的代码,我可以使用Navigator.pushReplacement()进入Dashboard,但是在appBar上出现了一个后退箭头。此后退按钮可将应用程序带回路由器。

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

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

使用上面的代码会给我带来debugLocked错误。是否有solutin可以缓解此问题?还是我还有其他有效的方法可以从上下文中删除屏幕?将automaticallyImplyLeading设置为false是否有帮助?因为,仅当有人登录或注册后,才会发生此错误。

2 个答案:

答案 0 :(得分:1)

要删除所有先前的路由,请使用Navigator.pushAndRemoveUntil()

答案 1 :(得分:0)

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

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

基本上我等到导航完成设置一切,然后调用navigateTo。