【发布时间】: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'),
);
}
}
我想知道为什么会这样。 你能帮帮我吗?
【问题讨论】: