Преобразование карты в список

#list #dictionary #dart #flutter #type-conversion

#Список #словарь #dart #флаттер #преобразование типа

Вопрос:

Я некоторое время безуспешно искал. Я пытаюсь преобразовать карту в список (отбрасывая ключ).

Конечно, я могу сделать

 var addictionList = new List<AddictionDay>();
dataMan.forEach((String date, AddictionDay day) {
    addictionList.add(day);
});
  

но есть ли более прямой подход, например

 var addictionList = dataMan.toList(); 
  

?

map функция Map, похоже, не очень помогает, потому что она принимает только MapEntry<K2, V2> в качестве параметра, так что это бесполезно. Довольно удивлен, что никто не задавал этот вопрос раньше.

Я также думал о новом расширении класса Map, но прямо сейчас я просто ищу какой-нибудь собственный способ сделать это, если он существует.

Ответ №1:

Класс Map имеет свойство entries, которое возвращает записи карты в виде итерации, для которой вы можете использовать функцию map для создания списка необходимых вам элементов.

 var addictionList = dataMan.entries.map((MapEntry mapEntry) => mapEntry.value).toList();
  

mapEntry.key является типом String и mapEntry.value является типом AddictionDay .

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

1. .map возвращает карту<K2, V2>, которая не имеет . Определен ToList

2. И .map ожидает MapEntry<K2, V2> в качестве параметра.. Чего я не понимаю?

3. ошибка: возвращаемый тип ‘AddictionDay’ не является ‘MapEntry’, как определено анонимным закрытием. ошибка: метод ‘ToList’ не определен для класса ‘Map’.

4. Вы должны включить код, который показывает объявление ‘DataMan’.

5. У меня получилось с ним работать List<AddictionDay> addictionList = List<AddictionDay>.from(dataMan.entries.map((MapEntry mapEntry) => mapEntry.value).toList()); , поскольку он вернул List<dynamic>, который я не смог явно преобразовать в List<AddictionDay>

Ответ №2:

Вам нужно это или что-то более сложное?

   var _map = {1: 'one', 2: 'two', 3: 'three'};
  var values =_map.values.toList();
  print(values);
  

Результат:

[one, two, three]