Flutter получение данных firestore из модели данных и использование в качестве данных для диаграммы

#flutter #dart #charts #google-cloud-firestore

#flutter #dart #Диаграммы #google-облако-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.

Заранее благодарим вас за помощь.