【问题标题】:How to fetch data from Firebase Firestore and store it in a List to use in flutter Widgets?如何从 Firebase Firestore 获取数据并将其存储在列表中以在颤振小部件中使用?
【发布时间】:2022-01-13 10:42:39
【问题描述】:

我正在开发一个需要从 Firestore 存储和读取数据的应用程序。目前我正在使用地图列表来生成小部件。我的清单是

List<Map> subjects = [
  {"name": "WAK", "time": 13.30, "day": 'Mon'},
  {"name": "RAD", "time": 10.30, "day": 'Tue'},
  {"name": "PQR", "time": 15.15, "day": 'Fri'}
];

从上面的列表中,我正在生成应用程序将使用列小部件显示的小部件。我的颤动屏幕如下所示:

现在,我想实现相同的目标,但我想从 firestore 获取数据而不是预定义列表。为此我编写了以下代码:

 FirebaseFirestore.instance
    .collection('classes')
    .get()
    .then((QuerySnapshot querySnapshot) {
  querySnapshot.docs.forEach((doc) {
    print(doc.data());
  });
});

从上面的代码中,我在终端中得到输出:

I/flutter ( 5012): {subject: SE, fromTime: 1115, days: [Mon, Wed]}
I/flutter ( 5012): {subject: OSSS, fromTime: 1430, days: [Tue, Wed, Fri]}

如您所见,每个文档的结构与我上面定义的地图几乎相同,但我不知道如何从中获取数据并将其存储在地图列表中,以便我可以以我之前生成的相同方式生成小部件。 另外,有没有更好或更有效的方法来从 Firestore 中获取数据并在我的小部件中使用它。

【问题讨论】:

    标签: firebase flutter google-cloud-firestore widget


    【解决方案1】:

    使用FutureBuilder:

    FutureBuilder<QuerySnapshot>(
      future: FirebaseFirestore.instance.collection('classes').get(),
      builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
        if (snapshot.hasData) {
          return Column(
            children: snapshot.data?.docs?.map((doc) {
              // your widget here(use doc data)
              return YourWidget();
            })?.toList() ?? [],
          );
        } else {
          // or your loading widget here
          return Container();
        }
      },
    );
    

    希望你能明白 :)

    【讨论】:

    • 明白了。谢谢。
    猜你喜欢
    • 2021-12-22
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 2022-10-06
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    相关资源
    最近更新 更多