【问题标题】:Riverpod error: Undefined class 'ScopedReader'Riverpod 错误:未定义的类“ScopedReader”
【发布时间】:2021-10-17 05:28:17
【问题描述】:

现在我使用hooks_riverpod 包来管理状态。 然后我想使用 FutureProvider 从 firestore 获取数据。 我阅读了这个官方文档(API reference)。 链接上的示例表示 UI 将类似于:

Widget build(BuildContext, ScopedReader watch) {
  AsyncValue<Configuration> config = watch(configProvider);

  return config.when(
    loading: () => const CircularProgressIndicator(),
    error: (err, stack) => Text('Error: $err'),
    data: (config) {
      return Text(config.host);
    },
  );
}

我按照它说的做了,但是我收到了一个错误“Undefined class 'ScopedReader'”。

我的代码如下。

提供者定义

final quizListProvider = FutureProvider<List>((ref) async {
  FirebaseFirestore firestore = FirebaseFirestore.instance;
  final quizPack = ref.watch(quizPackProvider).state;
  List<Map> quizList = [];
  for (int i = 0; i < quizPack.length; i++) {
    final content = await firestore.collection('quizes').doc(quizPack[i]).get();
    quizList.add(content.data()!);
  }
  return quizList;
});

用户界面

class Quiz extends ConsumerWidget {
  @override
  Widget build(BuildContext, ScopedReader watch) {
    AsyncValue<List> quizList = watch(quizListProvider);

    return quizList.when(
      data: (quizList) {
        return Scaffold(
         some widgets are here
        );
      },
      loading: () => const CircularProgressIndicator(),
      error: (err, stack) => Text('Error: $err'),
    );
  }
}

我想知道为什么会这样。 你能帮帮我吗?

【问题讨论】:

    标签: flutter dart riverpod


    【解决方案1】:

    Riverpod 的创建者将 ScopedReader 更改为 WidgetRef,现在您应该这样使用它:

    class Example extends ConsumerWidget {
      @override
      Widget build(BuildContext context, WidgetRef ref) {
        int count = ref.watch(counterProvider);
        ...
      }
    }
    

    根据更新日志 - https://pub.dev/packages/flutter_riverpod/versions/1.0.0-dev.11/changelog#100-dev0

    【讨论】:

      猜你喜欢
      • 2021-10-14
      • 2023-02-22
      • 2019-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-07
      • 2019-01-07
      • 2020-01-28
      相关资源
      最近更新 更多