问题描述
为简化我的问题,我有4个屏幕。主屏幕,屏幕2,屏幕3和屏幕4。我在屏幕2中初始化了提供程序,然后导航到屏幕3时,我通过了该提供程序。
Navigator.push(context,MaterialPageRoute(
builder: (_) {
return ChangeNotifierProvider<myProvider>.value(
value: initializedProvider,child: Screen2()
.
.
当我从屏幕3导航到屏幕4时,我会这样做
..
return ChangeNotifierProvider<myProvider>.value(
value: Provider.of<myProvider>(context,listen: false),child: Screen4()
当用户关闭应用程序时,我想删除所有路线,仅显示我的登录页面。我通过使用
Navigator.pushNamedAndRemoveUntil(context,"/login",(Route<dynamic> route) => false );
(我在首页中监听appLifecycleState的更改。这是我开始删除路由的地方。)
我注意到,每次我关闭应用程序时,这都会以随机顺序删除路由。有时屏幕2(我初始化提供程序的地方)首先被删除,也就是当我看到错误“处理程序被使用后使用提供程序”时。我肯定会这样,因为屏幕3和4在处置时仍然有提供者。
从底部开始删除屏幕时,不会发生此错误(先删除屏幕4,然后是屏幕3,然后是屏幕2,然后是主页)。我也不想将变更通知程序包装在我的材料应用程序周围。
我是Flutter的新手,所以id想知道解决此问题的最佳方法。如果需要更多信息或没有道理,我会改写这个问题。谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)