![](/img/trans.png)
[英]A value of type 'Future<QuerySnapshot<Map<String, dynamic>>>' can't be assigned to a variable of type 'QuerySnapshot<Object?>'
[英]Flutter/Firestore - Error: A value of type 'List<String> Function(QuerySnapshot)' can't be assigned to a variable of type 'List<dynamic>'
我正在尝试创建一个显示来自 Firebase 的文档 ID 的动态列表视图。我已经从快照创建了事件列表:
List<String> _eventListFromSnapshot(QuerySnapshot snapshot) {
return snapshot.documents.map((doc) {
return doc.documentID == null ? doc.documentID : ' ';
}).toList();
}
但是当我使用这段代码构建 stream 时:
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>'.
您忘记调用 function _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);
}
我认为我们必须明确地这样做。
在你的方法中尝试这样的事情。
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));
}
我们必须调用 function,而不是分配它。
希望这能解决您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.