首页 > 解决方案 > Flutter:用于查询文档的 Streambuilder

问题描述

如何获取从查询快照返回的所有项目的列表视图?

FirebaseFirestore.instance
        .collection("children")
        .where("parentUID", isEqualTo: uid)
        .snapshots()
        .listen((result) {
      result.docs.forEach((result) {
        setState(() {
          childFirstName = result["childFirstName"];
          childLastName = result["childLastName"];
          points = result["points"];
          docID = result.id;
          print('$docID');
        });
      });
    });
  }

这就是我能想到的,这是数据库的图像,数据库的
图像

如何创建一个列表视图,它为每个文档创建一个项目,该项目parentUID等于当前用户,该用户uid已经存储在一个变量中uid

标签: firebasefluttergoogle-cloud-firestore

解决方案


您可以使用下面的示例代码。它显示了如何使用查询中的流并返回在 aListView.builder中显示信息的 a ListTile

StreamBuilder<QuerySnapshot<Map<String, dynamic>>>(
  stream: FirebaseFirestore.instance
    .collection('children')
    .where('parentUID', isEqualTo: uid)
    .snapshots(),
  builder: (BuildContext context, snapshot) {
    if (snapshot.data == null) {
      return Center(child: CircularProgressIndicator());
    } else {
      final List<QueryDocumentSnapshot<Map<String, dynamic>>> docs = snapshot.data!.docs;

      return ListView.builder(
        itemCount: docs.length,
        itemBuilder: (_, index) {
          final doc = docs[index];
          final childFirstName = doc["childFirstName"];
          final childLastName = doc["childLastName"];
          final points = doc["points"];
          final docID = doc.id;

          return ListTile(
            title: Text('$childFirstName $childLastName'),
            subtitle: Text(points),
          );
        },
      );
    }
  },
)

推荐阅读