等效于 Riverpod 中的 ChangeNotifierProvider 小部件
Posted
技术标签:
【中文标题】等效于 Riverpod 中的 ChangeNotifierProvider 小部件【英文标题】:Equivalent of ChangeNotifierProvider widget in Riverpod 【发布时间】:2021-02-02 08:31:50 【问题描述】:是否有与 Riverpod 中 Provider 的 ChangeNotifierProvider 小部件等效的小部件?
仅当父窗口小部件为 ChangeNotifierProvider/或在其窗口小部件树中具有 ChangeNotifierProvider 的页面已使用 create
推送到 Navigator 堆栈时,才创建提供程序。我希望在弹出页面时自动处理提供程序,并从小部件树中删除 ChangeNotifierProvider 小部件,就像在 Provider 中一样。
【问题讨论】:
【参考方案1】:Riverpod 也有一个ChangeNotifierProvider
,所以你可以使用它。
至于“我希望在弹出页面时自动释放提供程序”,这个功能改为使用autoDispose实现
所以最后的语法是:
class MyNotifier extends ChangeNotifier
final myNotifierProvider = ChangeNotifierProvider.autoDispose<MyNotifier>((ref)
return MyNotifier();
);
...
class MyWidget extends ConsumerWidget
@override
Widget build(BuildContext context, ScopedReader watch)
MyNotifier myNotifier = watch(myNotifierProvider);
这样,当所有使用MyNotifier
的小部件都被销毁时(也就是当路由被弹出时),那么MyNotifier
将被释放。
【讨论】:
谢谢,它实际上在文档中 (riverpod.dev/docs/concepts/modifiers/auto_dispose)。仍然掌握它??♂️。 好的,但是“.when”不能与 ChangeNotifierProvider 一起使用,对吧?以上是关于等效于 Riverpod 中的 ChangeNotifierProvider 小部件的主要内容,如果未能解决你的问题,请参考以下文章
如何组合 2 个 Riverpod StreamProviders,其中 1 个流依赖于另一个流的数据?
Riverpod 错误:未定义的类“ScopedReader”