如何在Flutter中处置ChangeNotifierProvider <T> .value()

时间:2020-04-06 19:57:32

标签: flutter dispose provider

如何在Flutter中处置ChangeNotifierProvider.value()

所以不会有内存泄漏

我将作为对象的对象作为ChangeNotifierProvider.value()的值作为单例 因为我需要多个页面才能在一个对象中共享它们的状态

2 个答案:

答案 0 :(得分:0)

您需要使用dispose()的{​​{1}}方法或State的默认构造函数。后者会自动处理在ChangeNotifierProvider函数中创建的对象。

我想知道为什么使用create而不是ChangeNotifierProvider.value(),但是假设您要将值传递到另一个页面,则可以将两者组合如下。

ChangeNotifierProvider()

在树下的某个地方:

ChangeNotifierProvider<Foo>(
  create: (context) => Foo(),  // this Foo object is disposed of automatically
)

注意:如果您提供Navigator.of(context).push( MaterialPageRoute<void>( builder: (context2) => Provider<Foo>.value( value: Provider.of<Foo>(context, listen: false), child: NextPage(), ), ), ) 以上的值,则不必这样做。

答案 1 :(得分:0)

ChangeNotifierProvider 在需要时自动调用状态的 dispose() 方法。你不需要做任何事情。他们在此视频中谈到了这一点:Pragmatic State Management in Flutter (Google I/O'19)