删除路由会处理提供程序并引发错误

问题描述

为简化我的问题,我有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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...