如何使用提供程序将ChangeNotifier的作用域限定为某些路由?

时间:2019-09-16 16:11:05

标签: flutter

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

enter image description here

Page1是我的第一页。我只需要与Page2,Page3和Page共享ChangeNotifierProvider的数据,并在输入Page1呼叫后就将ChangeNotifierProvider丢弃。

如何使用provider执行此操作?

1 个答案:

答案 0 :(得分:1)

为此,最简单的解决方案是在每条路由中设置一个提供商,而不是:

Provider(
  builder: (_) => SomeValue(),
  child: MaterialApp(),
)

您有:

final value = SomeValue();

MaterialApp(
  routes: {
    '/foo': (_) => Provider.value(value: value, child: Foo()),
    '/bar': (_) => Provider.value(value: value, child: Bar()),
    '/cannot-access-provider': (_) => CannotAccessProvider(),
  }
)

另一方面,无法“自动处置”模型。

provider在这种情况下无法知道可以安全处置该对象。