Как изменить Map<Строка, список> на Map<Строка, список> в dart?

#flutter #dart

#flutter #dart

Вопрос:

Например;

Я хочу преобразовать

 {Aug 07, 2020: [Instance of 'ActivityLog', Instance of 'ActivityLog'], Aug 04, 2020: [Instance of 'ActivityLog'], Jul 29, 2020: [Instance of 'ActivityLog'], Jul 28, 2020: [Instance of 'ActivityLog']}
  

Для

 {Aug 07, 2020: [{MapData}, {MapData}], Aug 04, 2020: [{MapData}], Jul 29, 2020: [{MapData}], Jul 28, 2020: [{MapData}]}
  

Комментарии:

1. Создайте в своем ActivityLog классе метод, который преобразует класс в Map представление. Часто вызывается этот метод toJson() , поскольку это часто то, что мы хотим при создании строки JSON из некоторых объектов.

2. Пожалуйста, объясните, как вы хотите преобразовать. В противном случае любой ответ здесь — это просто предположение.

Ответ №1:

Поскольку во Flutter отражение пока невозможно, вам нужен метод в вашем ActivityLog для создания карты из класса.

Таким образом, это может быть что-то вроде этого:

 Map<String, dynamic> toMap() {
  return {
    'field1': field1,
    'field2': field2
  };
}
  

Как только у вас это будет, вы можете использовать .map() функцию, например:

 var map1 = {
    'Aug 07, 2020': [
      ActivityLog('x1', 'x2'),
      ActivityLog('y1', 'y2'),
    ]
  };

var map2 = map1.map((key, value) {
  return MapEntry(key, value.map((e) => e.toMap()).toList());
});