首页 > 解决方案 > 从 flirestore 获取收集数据并附加到列表中,以便我可以使用 ListView.builder 在 Flutter 中构建内容

问题描述

我试图从 Firestore 中检索数据并将它们放入一个列表中,以便我可以从检索到的数据中构建读取和构建小部件。我似乎不能两者都做,我可以获取数据,或者附加一个具有固定值的列表,但我似乎无法检索数据 +用检索到的数据附加列表

. 抱歉,如果我不够清楚,请告诉我您需要什么,下面是我的数据库结构和代码片段的屏幕截图。

数据库结构: 在此处输入图像描述

数据检索代码片段:

onRefreshPage()  {
   Firestore.instance
      .collection("testimonies")
      .getDocuments()
      .then((querySnapshot) {
    querySnapshot.documents.forEach((result) {
      print(result.data);
    });
  });
}

清单声明: List<DocumentSnapshot> testimonyCards = [];

标签: flutterdartgoogle-cloud-firestore

解决方案


如果我理解正确,您希望将数据转换为小部件。看看 Flutter 的 FutureBuilder:https ://api.flutter.dev/flutter/widgets/FutureBuilder-class.html和https://firebase.flutter.dev/docs/firestore/usage#realtime-changes

在您的情况下,您可以执行以下操作:

FutureBuilder<QuerySnapshot>(
  future: FirebaseFirestore.instance.collection('testimonies').get(),
  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.docs.map((DocumentSnapshot document) {
        return new ListTile(
          title: new Text(document.data()['DisplayName']),
          subtitle: new Text(document.data()['TestimonyData']),
        );
      }).toList(),
    );
  },
);

推荐阅读