0

I have an events class thats like this

MyEvents(id: 5a9c120ab3473, 
    title: "Event 1", 
    description: "", 
     image: "", 
     isDone false, 
     classDate: 2019-08-23 00:00:00.000)

I'm getting a list from a database but i cant figure out how to turn it into this format for a calendar package (there could be multiple events on each day)

 Map<DateTime, List<Map<String, Object>>> _events2 = {
    DateTime(2019, 8, 24): [
      {'name': 'Event A', 'isDone': true},
    ],
    DateTime(2019, 8, 24): [
      {'name': 'Event A', 'isDone': true},
    ],
    DateTime(2019, 8, 23): [
      {'name': 'Event A', 'isDone': true},
    ],
  };

I've tried this, not sure if I'm on the right track or totally lost

events.map((c) {
      print(c.title);
      item = {
        c.classDate: [
          {'name': c.title, 'isDone': true},
        ]
      };
      mainList.add(item);
    }).toList();
kmarima
  • 75
  • 2
  • 10

2 Answers2

0

You can add a method in your class like this:

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['title'] = this.title;
    data['description'] = this.description;
    data['image'] = this.image;
    data['isDone'] = this.isDone;
    data['classDate'] = this.classDate;
    return data;
  }
mirkancal
  • 4,762
  • 7
  • 37
  • 75
0

Found this solution turned out to be exactly what i needed

events.map((c) {
      print(c.title);
      item = {'name': c.title, 'isDone': true, "class_date": c.classDate};
      mainList.add(item);
    }).toList();

    print("collection");

    var c = Collection(mainList.toList());
    var result = c
        .groupBy$1((e) => e["class_date"],
            (e) => {"name": e["name"], "isDone": e["isDone"]})
        .toDictionary$1((e) => e.key, (e) => e.toList());
kmarima
  • 75
  • 2
  • 10