Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何使用提供程序将ChangeNotifier限定到某些路由?_Flutter - Fatal编程技术网

Flutter 如何使用提供程序将ChangeNotifier限定到某些路由?

Flutter 如何使用提供程序将ChangeNotifier限定到某些路由?,flutter,Flutter,我有一个ChangeNotifier,我想在多个路由之间共享它,但不是所有路由: 第一页是我的第一页。我需要将ChangeNotifierProvider的数据与Page2、Page3和PageOnly共享,并在进入Page1时调用dispose处理我的ChangeNotifierProvider 如何使用?要做到这一点,最简单的解决方案是每个路由有一个提供程序,而不是: 提供程序( 生成器:()=>SomeValue(), 子项:MaterialApp(), ) 你有: final val

我有一个ChangeNotifier,我想在多个路由之间共享它,但不是所有路由:

第一页是我的第一页。我需要将ChangeNotifierProvider的数据与Page2、Page3和PageOnly共享,并在进入Page1时调用dispose处理我的ChangeNotifierProvider


如何使用?

要做到这一点,最简单的解决方案是每个路由有一个提供程序,而不是:

提供程序(
生成器:()=>SomeValue(),
子项:MaterialApp(),
)
你有:

final value=SomeValue();
材料聚丙烯(
路线:{
“/foo”:()=>Provider.value(value:value,child:foo()),
“/bar”:()=>Provider.value(value:value,child:bar()),
“/无法访问提供程序”:(u)=>CannotAccessProvider(),
}
)
另一方面,不可能“自动处置”您的模型


提供程序
在这种情况下无法知道处理对象是安全的。

但我有一个问题,第2页、第3页和第4页的提供程序必须彼此共享当前行为是什么?如果我与ChangeNotifier共享,则需要第2页、第3页和第4页,但第1页不是,它是堆栈中的第一个。同样,这正是这个答案的作用。在这种情况下,如何使值自动释放?这就是我一直想弄明白的。我真的需要为此制定自己的解决方案吗?这不应该是一个非常常见的用例吗?