获取 QuerySnapshot 而不是 DocumentSnapshot [FLUTTER]

Getting QuerySnapshot instead of DocumentSnapshot [FLUTTER]

StreamBuilder(
         stream: FirebaseFirestore.instance.collection('users').snapshots(),
         builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {
           if (!snapshot.hasData) {
             return CircularProgressIndicator();
           }
           FirestoreUser firestoreUser =
               FirestoreUser.fromDocument(snapshot.data); // Here snapshot.data is retrieving QuerySnapshot.
               // How I can convert it to DocumentSnapshot 
          ...

你好 Whosebug 用户

我需要为我的新 firestoreUser 变量提供哪种类型的 DocumentSnapshot。但是我看不到。

写 snapshot.data 后,它给我一个名为“QuerySnapshot 不是 DocumentSnapshot 的子类型”的错误

P.s 如您所见,我正在使用 StreamBuilder。谢谢

您的流是 FirebaseFirestore.instance.collection('users').snapshots(),它是一个 QuerySnapshot,意思是扩展了 DocumentSnapshot 的 QueryDocumentSnapshot 列表。 因此,如果您想要 'users' 集合中每个用户的 documentSnapshot,则必须迭代 snapshot.data.docs: 但是如果你想获取特定用户的文档,那么你可以这样做:

StreamBuilder(
         stream: FirebaseFirestore.instance.collection('users').doc(userID).snapshots(),
         builder: (context, AsyncSnapshot<DocumentSnapshot> snapshot) {
           if (!snapshot.hasData) {
             return CircularProgressIndicator();
           }
           FirestoreUser firestoreUser =
               FirestoreUser.fromDocument(snapshot.data); 
          ...