Flutter getting firestore data from data model and use as data for a chart

Viewed 357

I have a Data Model which looks like this:

    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;
      }
    }

Then I try and get the data from 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 [];
                                                  }

How can I use this to get the data from the Firestore database and then return the data as data points for a chart dynamically (in this case for both a line and pie chart).

Please note that I am looking at the FL Chart package.

Thank you for your help in advance.

0 Answers
Related