动态添加 JSON 数据到 Flutter Table 日历

Adding JSON Data to Flutter Table Calendar dynamically

如上所述,我正在尝试使用 flutter table_calendar: 2.3.0 而且我不确定如何将 json 数据添加到 Map 以显示日期。

我使用开始日期作为日期时间,使用事件“列表”作为我正在使用的数据。

这是我的 json 数据:

 "Events": [
        {
            "id": 1,
            "event_name": "Cake tasting",
            "event_photo": "https://dispensaries.s3.amazonaws.com/event_photo/Southern_Cali_Kush_3.jpg",
            "vendor_name": {
                "id": 1,
                "vendor": "Tastey Cakes"
            },
            "refund_available": false,
            "website": "www.foodcakes.com",
            "share_count": 0,
            "check_in_count": 0,
            "street_address": "123 Fake Street",
            "city": "Brooklynn",
            "state": "NY",
            "zipcode": "12312",
            "event_tagline": "Taste my cakes",
            "details": "Cake tasting",
            "start_date": "2020-11-03",
            "start_time": "23:33:00",
            "end_time": "23:33:00",
            "attendees": []
        }
    ]

这是我用来将数据添加到保存新日期数据的 _event 变量的地图:

 Map<DateTime, List> _events = {};

void _getEventDates(数据){ Map newMap = {};

for (int i = 0; i < data.length; i++) {
  newMap = {
    data.startingTime, [data.name]
  } as Map<String, dynamic>;
  };
}

有人可以协助将 json 数据转换为在日历上显示所需的格式吗?

convertJsonToDateMap 函数将为您执行此操作:

Map<DateTime, List> convertJsonToDateMap(String jsonSource) {
  var json = jsonDecode(jsonSource);
  var jsonEvents = json['Events'];
  Map<DateTime, List<String>> events = {};
  for(var event in jsonEvents){
    var date = parseDate(event['start_date']);
    events.putIfAbsent(date, () => <String>[]);
    events[date].add(event['event_name']);
  }
  return events;
}

DateTime parseDate(String date) {
  var parts = date.split('-').map(int.tryParse).toList();
  return DateTime(parts[0], parts[1], parts[2]);
}

Github要点:https://gist.github.com/ali2236/3cddbbdafbc1632ddd7cfc23a1758af5