【问题标题】:Equivalent of ChangeNotifierProvider widget in Riverpod等效于 Riverpod 中的 ChangeNotifierProvider 小部件
【发布时间】:2021-02-02 08:31:50
【问题描述】:

是否有与 Riverpod 中 Provider 的 ChangeNotifierProvider 小部件等效的小部件?

仅当父窗口小部件为 ChangeNotifierProvider/或在其窗口小部件树中具有 ChangeNotifierProvider 的页面已使用 create 推送到 Navigator 堆栈时,才创建提供程序。我希望在弹出页面时自动处理提供程序,并从小部件树中删除 ChangeNotifierProvider 小部件,就像在 Provider 中一样。

【问题讨论】:

    标签: flutter provider state-management flutter-change-notifier riverpod


    【解决方案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 将被释放。

    【讨论】: