Возвращайте список объектов из магазина только один раз, а НЕ в поток. Флаттер - PullRequest
0 голосов
/ 12 апреля 2019

Я могу добавлять и обновлять данные в 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 Ответ

1 голос
/ 12 апреля 2019

Используйте getDocuments () , чтобы один раз запросить документы в Query или CollectionReference.

QuerySnapshot querySnapshot = await Firestore.instance.collection("collection").getDocuments();
var list = querySnapshot.documents;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...