Riverpod 错误:未定义的类“ScopedReader”
Posted
技术标签:
【中文标题】Riverpod 错误:未定义的类“ScopedReader”【英文标题】:Riverpod error: Undefined class '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'),
);
我想知道为什么会这样。 你能帮帮我吗?
【问题讨论】:
【参考方案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
【讨论】:
以上是关于Riverpod 错误:未定义的类“ScopedReader”的主要内容,如果未能解决你的问题,请参考以下文章
我收到错误:未定义的类“必需”。尝试使用 required 关键字时
使用教程中的 Javafx 类对游戏进行编程并遇到未定义的类错误