从Firestore仅返回一次对象列表,而不是流。在扑

时间:2019-04-12 17:44:40

标签: dart flutter google-cloud-firestore

我可以在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;
      });
    });

这可行,但是我不想返回流,因为我只想检索一次数据以迭代列表并对其执行操作。

1 个答案:

答案 0 :(得分:1)

使用getDocuments()在Query或CollectionReference上查询一次文档。

QuerySnapshot querySnapshot = await Firestore.instance.collection("collection").getDocuments();
var list = querySnapshot.documents;