如何在Flutter中处置ChangeNotifierProvider.value()
所以不会有内存泄漏
我将作为对象的对象作为ChangeNotifierProvider.value()的值作为单例 因为我需要多个页面才能在一个对象中共享它们的状态
答案 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)