如何从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.getDocumentReference.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为处理集合和文档的实时更改提供支持。在最初的请求中提供一个新的事件,以及在发生更改时对集合/文档的任何后续更改(修改、删除或添加(。

CCD_ 3&DocumentReference提供了一个snapshots((方法,该方法返回一个Stream:

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"]);
}
}
)

相关内容

  • 没有找到相关文章

最新更新