簡體   English   中英

如何從 Firestore 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.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 支持處理集合和文檔的實時更改。 初始請求時提供新事件,以及在發生更改(修改、刪除或添加)時對集合/文檔的任何后續更改。

CollectionReferenceDocumentReference提供了一個返回 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM