首页 > 解决方案 > 从 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”不是正确的类型?如果是这样,我该如何解决这个问题?如果没有,有什么问题,我该如何解决?

标签: flutterproviderriverpod

解决方案


Map<String, dynamic> data() => dartify(jsObject.data());

data 是一种方法,因此您需要调用它:

doc.data()

doc.data 表示你想传递一个函数


推荐阅读