[英]Is there any possible way to retreive data from firestore and to display it in a Text Widget in Flutter?
[英]How to retreive data from firestore flutter
我是 flutter 和 firebase 集成的新手,我在從 firebase 集合中檢索所有數據時遇到了一些麻煩。
我試過這種方法:
getCollection() {
CollectionReference coleccion =
FirebaseFirestore.instance.collection('materias');
return Container(
child: StreamBuilder(
stream: coleccion.doc('aprobadas').snapshots(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.connectionState == ConnectionState.active) {
return Text(snapshot.data.data()['codigo'],
style: TextStyle(fontSize: 50, color: Colors.white));
} else {
return CircularProgressIndicator();
}
},
),
);
}
現在我有點沮喪,因為我嘗試了不同的方法並且不起作用。
我真的很感謝所有的幫助。
最好的祝福
可以使用以下代碼從 firestore 到 flutter 檢索數據。
一次性閱讀
調用Query.get
或DocumentReference.get
方法
class GetUserName extends StatelessWidget {
final String documentId;
GetUserName(this.documentId);
@override
Widget build(BuildContext context) {
CollectionReference users = FirebaseFirestore.instance.collection('users');
return FutureBuilder<DocumentSnapshot>(
future: users.doc(documentId).get(),
builder:
(BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot) {
if (snapshot.hasError) {
return Text("Something went wrong");
}
if (snapshot.hasData && !snapshot.data!.exists) {
return Text("Document does not exist");
}
if (snapshot.connectionState == ConnectionState.done) {
Map<String, dynamic> data = snapshot.data!.data() as Map<String, dynamic>;
return Text("Full Name: ${data['full_name']} ${data['last_name']}");
}
return Text("loading");
},
);
}
}
實時變化
FlutterFire 支持處理集合和文檔的實時更改。 初始請求時提供新事件,以及在發生更改(修改、刪除或添加)時對集合/文檔的任何后續更改。
CollectionReference
和DocumentReference
提供了一個返回 Stream 的 snapshots() 方法:
Stream collectionStream = FirebaseFirestore.instance.collection('users').snapshots();
Stream documentStream = FirebaseFirestore.instance.collection('users').doc('ABC123').snapshots();
請參考這里的官方文檔
您可以使用StreamBuilder
。 這將很容易理解。
StreamBuilder(
stream: FirebaseFirestore.instance.collection("collection").snapshot,
builder: (BuildContext context,snapshot) {
if(snapshot.hasdata!=true) {
return CircularProgressIndicator();
} else {
return ListView.builder(
itemcount:snapshot.data.docs.length,
builder(context,index) {
return Text(snapshot.data.docs[index].data()["filedname"]);
}
}
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.