【问题标题】:Flutter/Firestore - Error: A value of type 'List<String> Function(QuerySnapshot)' can't be assigned to a variable of type 'List<dynamic>'Flutter/Firestore - 错误:“List<String> Function(QuerySnapshot)”类型的值不能分配给“List<dynamic>”类型的变量
【发布时间】:2020-08-18 17:51:35
【问题描述】:

我正在尝试创建一个显示来自 Firebase 的文档 ID 的动态列表视图。我已经从快照创建了事件列表:

    List<String> _eventListFromSnapshot(QuerySnapshot snapshot) {
  return snapshot.documents.map((doc) {
    return doc.documentID == null ? doc.documentID : ' ';
  }).toList();
}

但是当我开始使用此代码构建流时:

    Stream<List<String>> get events {
  return DatabaseService().eventsCollection.snapshots().map((event) => _eventListFromSnapshot);
}

我收到以下错误:

Error: A value of type 'List<String> Function(QuerySnapshot)' can't be assigned to a variable of type 'List<String>'.

【问题讨论】:

    标签: flutter dart google-cloud-firestore


    【解决方案1】:

    你忘了调用函数_eventListFromSnapshot。 像这样修复

    Stream<List<String>> get events {
      return DatabaseService()
        .eventsCollection
        .snapshots()
        .map((snapshot) => _eventListFromSnapshot(snapshot));
    }
    

    或更简单:

    Stream<List<String>> get events {
      return DatabaseService()
        .eventsCollection
        .snapshots().map(_eventListFromSnapshot);
    }
    

    【讨论】:

      【解决方案2】:

      我认为我们必须明确地这样做。
      在你的方法中尝试这样的事情。

      List<String> _eventListFromSnapshot(QuerySnapshot snapshot) {
          List<String> docIDs = [];
          for(int i = 0; i < snapshot.documents.length; i++){
              String value = snapshot.documents[i].documentID ?? " "; 
              docIDs.add(value);
          }
          return docIDs;
      }
      

      否则,我们可能在这一行有问题,

      Stream<List<String>> get events {
        return DatabaseService().eventsCollection.snapshots().map((event) => _eventListFromSnapshot(event));
      }
      

      我们必须调用函数,而不是分配它。

      希望这能解决您的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-17
        • 2022-01-22
        • 2021-12-22
        • 2022-12-02
        • 2021-03-23
        • 2021-09-15
        • 2021-10-18
        • 2020-08-26
        相关资源
        最近更新 更多