首页 > 解决方案 > Flutter 从数据模型中获取 Firestore 数据并用作图表的数据

问题描述

我有一个看起来像这样的数据模型:

    class PieChartDataGraph {
      DateTime date;
      String books;
      PieChartDataGraph(this.date, this.books);
      PieChartDataGraph.fromJSON(Map<String, dynamic> json) {
        date = json['date'];
        books = json['books'];
      }
      Map<String, dynamic> toJson() {
        final Map<String, dynamic> data = Map<String, dynamic>();
        data['date'] = this.date;
        data['books'] = this.books;
        return data;
      }
    }

然后我尝试从 Firestore 获取数据:

Future<List<PieChartDataGraph>>
                                                      getPieChartData() async {
                                                    FirebaseUser user =
                                                        await _auth
                                                            .currentUser();
                                                    var val = await Firestore
                                                        .instance
                                                        .collection("users")
                                                        .document(user.uid)
                                                        .collection("moments")
                                                        .orderBy('date')
                                                        .where('date',
                                                            isGreaterThanOrEqualTo: isWeekly
                                                                ? today.subtract(
                                                                    Duration(
                                                                        days: today
                                                                            .weekday))
                                                                : today.subtract(
                                                                    Duration(
                                                                        days:
                                                                            30)))
                                                        
                                                        .getDocuments();

                                                    var documents =
                                                        val.documents;

                                                    if (documents.length > 0) {
                                                      try {
                                                        return documents
                                                            .map((document) {
                                                          PieChartDataGraph
                                                              pieChartData =
                                                              PieChartDataGraph
                                                                  .fromJSON(Map<
                                                                          String,
                                                                          dynamic>.from(
                                                                      document
                                                                          .data));
                                                          return pieChartData;
                                                        });
                                                      } catch (e) {
                                                        return [];
                                                      }
                                                    }
                                                    return [];
                                                  }

如何使用它从 Firestore 数据库中获取数据,然后将数据作为动态图表的数据点返回(在本例中为折线图和饼图)。

请注意,我正在查看 FL Chart 包。

提前谢谢你的帮助。

标签: flutterdartchartsgoogle-cloud-firestore

解决方案


推荐阅读