# #firebase #flutter #google-cloud-firestore
Вопрос:
Я пытаюсь создать список из коллекции из базы данных firebase, но у меня возникла проблема со снимками построителя потоков.
StreamBuilder<QuerySnapshot>(
stream: FirebaseFirestore.instance.collection("users").snapshots().where((event) => true),
builder: (context, snapshot) {
if (snapshot.hasData amp;amp; snapshot.data != null) {
return ListView.builder(
itemBuilder: (listContext, index) =>
buildItem(snapshot.data.docs[index]),
itemCount: snapshot.data.docs.length,
);
}
return Container();
},
));
}
buildItem(doc) {
return (userId != doc['id'])
? GestureDetector(
onTap: () {
//Navigator.push(context, MaterialPageRoute(builder: (context) => Page(docs: doc)));
},
child: Card(
color: Colors.black,
child: Container(
height: 60,
child: Center(
child: Text(doc['name'],
style: TextStyle(
color: Colors.white,
fontSize: 20,
),
),
),
),
),
)
: Container();
}
Вот в чем вся ошибка:
======== Exception caught by widgets library =======================================================
The following StateError was thrown building:
Bad state: field does not exist within the DocumentSnapshotPlatform
When the exception was thrown, this was the stack:
#0 DocumentSnapshotPlatform.get._findKeyValueInMap (package:cloud_firestore_platform_interface/src/platform_interface/platform_interface_document_snapshot.dart:86:7)
#1 DocumentSnapshotPlatform.get._findComponent (package:cloud_firestore_platform_interface/src/platform_interface/platform_interface_document_snapshot.dart:104:41)
#2 DocumentSnapshotPlatform.get (package:cloud_firestore_platform_interface/src/platform_interface/platform_interface_document_snapshot.dart:120:26)
#3 _JsonDocumentSnapshot.get (package:cloud_firestore/src/document_snapshot.dart:92:48)
#4 _JsonDocumentSnapshot.[] (package:cloud_firestore/src/document_snapshot.dart:96:40)
...
====================================================================================================
Конструктор создает список, но прямо под ним отображается красный раздел с ошибкой.
Ответ №1:
doc
В вашем buildItem
методе есть DocumentSnapshot
объект, который []
, насколько я знаю, не определен.
Я думаю, ты пропускаешь звонок в data()
:
userId != doc.data()['id']
Если вы получите еще одно сообщение об ошибке после этого изменения, пожалуйста, сначала найдите его в переполнении стека, так как я знаю, что в последнее время произошли некоторые изменения в том, как типы отображаются из моментального снимка документа.
Комментарии:
1. Большое вам спасибо, что это было именно так.