【问题标题】:ref.listen in Riverpod flutterref.listen in Riverpod flutter
【发布时间】:2021-11-16 15:24:52
【问题描述】:

我有这个错误信息

参数类型“StateProvider”不能分配给参数类型“ProviderListenable”。

而且,这是我的提供者代码

final loginExceptionProvider = StateProvider<LoginException>((ref) {
  return const LoginException(message: 'ok');
});

这是我的 ref.listen 代码

 ref.listen<StateController<LoginException>>(loginExceptionProvider, ( prev, next) {
      ScaffoldMessenger.of(context)
          .showSnackBar(const SnackBar(content: Text('yoyo')));
    });

【问题讨论】:

    标签: flutter riverpod


    【解决方案1】:

    我在这个链接中找到了答案 Riverpod Documentation

    我只是在提供者上添加通知器

     ref.listen<StateController<LoginException>>(loginExceptionProvider.notifier, ( prev, next) {
          ScaffoldMessenger.of(context)
              .showSnackBar(const SnackBar(content: Text('yoyo')));
        });
    

    【讨论】:

      【解决方案2】:

      提供者不公开StateController&lt;T&gt;,而只是公开T

      正确的语法是:

      ref.listen<LoginException>(loginExceptionProvider, (prev, next) {
        ScaffoldMessenger.of(context)
          .showSnackBar(const SnackBar(content: Text('yoyo')));
      });
      

      【讨论】:

      • 通知者和状态有什么区别? loginExceptionProvider.notifier 和 loginExceptionProvider.state
      猜你喜欢
      • 2022-07-28
      • 1970-01-01
      • 2020-12-26
      • 2022-09-27
      • 2020-11-11
      • 2021-05-03
      • 2021-04-09
      • 2021-02-02
      • 1970-01-01
      相关资源
      最近更新 更多