微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

为简化我的问题,我有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 举报,一经查实,本站将立刻删除。