flutter - 从 Provider 迁移到 Riverpod
问题描述
我被困在使用 Provider 并遇到了 Riverpod,它只是 Provider 的下一代。我正在尝试使用 Riverpod 创建 StreamProvider,但出现错误。
下面是创建 StreamProvider 的代码:
final trxnStreamProvider = StreamProvider.autoDispose<List<Trxns>>((ref) {
final stream = firestoreService.getAgencyTrxns();
return stream.map((snapshot) => snapshot.docs.map((doc) => Trxns.fromFirestore(doc.data)).toList());
});
我得到的错误标记代码“doc.data”。这是错误文本:
The argument type 'Object? Function()' can't be assigned to the parameter type 'Map<String, dynamic>'.
这是“Trxns.fromFirestore(doc.data)”的代码:
Trxns.fromFirestore(Map<String, dynamic> firestore)
: clientFName = firestore['clientFName'],
clientLName = firestore['clientLName'];
我对此仍然很陌生,并且很难理解错误消息。是不是说“doc.data”不是正确的类型?如果是这样,我该如何解决这个问题?如果没有,有什么问题,我该如何解决?
解决方案
Map<String, dynamic> data() => dartify(jsObject.data());
data 是一种方法,因此您需要调用它:
doc.data()
doc.data 表示你想传递一个函数
推荐阅读
- akka-http - 从 spray.routing 中提取消息
- html - 内部 HTML 样式不适用于元素?(HTML/CSS)
- youtube - 在 YouTube 上将谷歌地图用于商业用途
- python - 在 DJANGO 中,有没有办法将 django.contrib.auth 中的现有用户转移到 SAML 或 OpenID?
- python - 将 python 字典(或 JSON?)保存为 CSV
- graphics - 您可以在计算着色器中使用内置的导数函数吗?(伏尔甘)
- javascript - 我有两个按钮脉冲和减号。当点击加号时,我希望积分增加,当点击减号时,有人可以请
- java - 发布带有列表的 JSON
- spring-boot - 仅在测试期间尝试在数据库中查找时抛出 ConstraintViolationException
- python - 如何优化程序解决RecursionError:最大递归