Flutter 将 QuerySnapshot 转换为 Future <List<Map<dynamic, dynamic>>>.

5

如何将QuerySnapshot作为Future返回?

代码片段:

Future <List<Map<dynamic, dynamic>>>() {
List<Map<dynamic,dynamic>> list;
.....

.....
QuerySnapshot collectionSnapshot = await collectionRef.getDocuments();

list = collectionSnapshot.documents;  <--- ERROR
return list;

}

我认为我需要使用一个 Map,但是我无法解决它的问题。
2个回答

12

collectionSnapshot.documents返回的是List而不是List类型,您需要将documentsnapshots的List转换为List<Map<dynamic, dynamic>>

Future <List<Map<dynamic, dynamic>>> getCollection() async{
List<DocumentSnapshot> templist;
List<Map<dynamic, dynamic>> list = new List();
CollectionReference collectionRef = Firestore.instance.collection("path");
QuerySnapshot collectionSnapshot = await collectionRef.getDocuments();

templist = collectionSnapshot.documents; // <--- ERROR

list = templist.map((DocumentSnapshot docSnapshot){
  return docSnapshot.data;
}).toList();

return list;
}  

0

Ganapat的答案对我有所帮助,只需进行一些小修改即可。

Future <List<Map<dynamic, dynamic>>> getCollection() async{
List<DocumentSnapshot> templist;
List<Map<dynamic, dynamic>> list = new List();
CollectionReference collectionRef = Firestore.instance.collection("path");
QuerySnapshot collectionSnapshot = await collectionRef.get(); // <--- This method is now get().

templist = collectionSnapshot.documents; // <--- ERROR

list = templist.map((DocumentSnapshot docSnapshot){
  return docSnapshot.data() as Map<Dynamic,Dynamic>; // <--- Typecast this.
}).toList();

 

return list;
}  

小写形式:return docSnapshot.data() as Map<dynamic, dynamic>; - threepartment

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接