#firebase #flutter #dart #google-cloud-firestore
#firebase #flutter #dart #google-cloud-firestore
Вопрос:
У меня есть коллекция с именем flpProduct в firestore. Я хочу получить доступ ко всем документам, хранящимся в коллекции flpProduct. Я пробовал это со многими Futurebuilder и Streambuilder, но ни один из них не работал.
Я попробовал это
FutureBuilder<QuerySnapshot> (
future: flpProductFuture,
builder: (context, snapshot) {
if (snapshot.hasError) {
return Center(
child: Text('Something went Wrong'),
);
}
if (snapshot.connectionState == ConnectionState.done amp;amp;
snapshot.hasData) {
snapshot.data.documents.forEach((element) {
print(element.data['title']);
});
return Text('done');
}
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Spinner(),
Text(
'Fetching Data',
style: TextStyle(color: Colors.black54, fontSize: 18.0),
)
],
);
},
),
Кажется, это дает мне данные, но как я могу теперь отобразить это в виджете.
У меня уже есть класс, который возвращает контейнер для отображения информации в отдельном классе. Я просто хочу передать данные в класс и отобразить их
Ответ №1:
Лучше использовать StreamBuilder, а не FutureBuilder, потому что StreamBuilder отвечает за изменения в реальном времени
StreamBuilder<QuerySnapshot>(
stream: FirebaseFirestore.instance.collection(Your collection Name).snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError) {
return Text('Something went wrong');
}
if (snapshot.connectionState == ConnectionState.waiting) {
return Text("Loading");
}
return new ListView(
children: snapshot.data.documents.map((DocumentSnapshot document) {
return new ListTile(
title: new Text(document.data()[key]),
subtitle: new Text(document.data()[key]),
);
}).toList(),
);
},
);