在我的flutter应用程序中,我使用此代码转到仪表板页面,但第一次却没有成功,并且出现了debugLocked
错误。
应用程序中的启动页面是一个路由器,用于检查共享首选项“ sessionid”,如果设置了该首选项,则将用户直接带到仪表板,否则带他们登录。
没有下面的代码,我可以使用Navigator.pushReplacement()
进入Dashboard,但是在appBar上出现了一个后退箭头。此后退按钮可将应用程序带回路由器。
我搜索了有关如何从导航器中删除所有屏幕的答案,以下是我发现的内容。
Navigator.of(context).popUntil(ModalRoute.withName(Dashboard.id));
使用上面的代码会给我带来debugLocked
错误。是否有solutin可以缓解此问题?还是我还有其他有效的方法可以从上下文中删除屏幕?将automaticallyImplyLeading
设置为false
是否有帮助?因为,仅当有人登录或注册后,才会发生此错误。
答案 0 :(得分:1)
要删除所有先前的路由,请使用Navigator.pushAndRemoveUntil()
答案 1 :(得分:0)
如果您出于某种原因面临 setState 错误,这可以是另一种选择。
navigationService.popUntil((_) => true);
navigationService.navigateTo(
'authentication',
);
基本上我等到导航完成设置一切,然后调用navigateTo。