我可以在firestore中添加和更新数据,也可以检索集合流并将其转换为对象列表,但是我不能做的就是只检索一次集合并将其转换为对象列表。
//从Firestore获取流
Stream<QuerySnapshot> getDataDateStream(String uid, int startDateTime, int endDateTime) {
CollectionReference usersDataCollection = Firestore.instance.collection('users').document(uid).collection('data');
Stream<QuerySnapshot> snapshots = dataCollection.where('dataDateTime', isGreaterThanOrEqualTo: startDateTime).where('dataDateTime', isLessThanOrEqualTo: endDateTime).snapshots();
return snapshots;
}
//将流转换为列表
List<DataSavedModel> ListToday = List<DataSavedModel>();
StreamSubscription<QuerySnapshot> dataSubToday;
dataSubToday = db.getDataDateStream(appState.user.uid, startTimeToday, todayEndTime).listen((QuerySnapshot snapshot) {
final List<DataSavedModel> ModelListToday = snapshot.documents.map((documentSnapshot) => DataSavedModel.fromMap(documentSnapshot.data)).toList();
setState(() {
this.ListToday = ModelListToday;
});
});
这可行,但是我不想返回流,因为我只想检索一次数据以迭代列表并对其执行操作。
答案 0 :(得分:1)
使用getDocuments()在Query或CollectionReference上查询一次文档。
QuerySnapshot querySnapshot = await Firestore.instance.collection("collection").getDocuments();
var list = querySnapshot.documents;