Home > Net >  How to loop through Instance of '_MapStream<QuerySnapshotPlatform, QuerySnapshot<Map<S
How to loop through Instance of '_MapStream<QuerySnapshotPlatform, QuerySnapshot<Map<S

Time:07-11

  static List categoryList() {
    final categorySnapshots = FirebaseFirestore.instance
        .collection('categories')
        .orderBy('name')
        .snapshots();

    List categories = [];
    categorySnapshots.map((snapshot) => snapshot.docs.map((doc) {
          print(snapshot.toString());
          categories.add(doc.data()['name']);
        }));

    print(categories);
    return categories;
  }

Categories is empty. How to populate it with the data from snapshots?

CodePudding user response:

Using the below code might help

 static Post fromSnap(DocumentSnapshot snap) {
var snapshot = snap.data() as Map<String, dynamic>; }

CodePudding user response:

I added a new collection called "school", there're two items added inside the document.

  void getMessagesTest() async{
    QuerySnapshot querySnapshot = await _firestore.collection('school').orderBy('age',descending: true).get();
    final allData = querySnapshot.docs.map((doc) => doc.data()).toList();
    print(allData);
  }

I used my code, and it works. Could you please remove ".where" and try it again?

enter image description here enter image description here

You could chain where and orderBy together. Please see my code below. Reference link => Using Where and Order by different fields in Firestore query

  void getMessagesTest() async{
    QuerySnapshot querySnapshot = await _firestore.collection('school').orderBy('age', descending: true).where('age', isGreaterThan: 17).get();
    final allData = querySnapshot.docs.map((doc) => doc.data()).toList();
    print(allData);
  }

  • Related