Какие есть способы создания из List экземпляра Map без использования коллбэк-функций (fromIterable)?

Столкнувшись с задачкой преобразовать список объектов в Map, решил ее следующим образом:

class OrganizationFields {
  late Map<String, OrgField> items = <String, OrgField>{};

  OrganizationFields({ List<OrgField>? fields })
    : this.items = Map.fromIterable([...?fields], key: (itm) => itm.name, value: (itm) => itm);
}

Но не нравится то, что тут на каждой внутренней итерации fromIterable будет выполняться по два вызова. Это выглядит не очень "красиво", и предполагаю что в Dart возможны более скоростные решения. Тем более что в другом месте проекта предполагается очень частое пересоздание практически аналогичных Map другой сущности, и хотелось бы научиться это оптимизировать. Входные данные всегда списками, и это нельзя изменить, к сожалению.
Поэтому, вопрос: есть ли способы сделать то же самое (так же создать Map из List'а объектов с использованием свойства в качестве ключа) более шустрым кодом без использования множества вызовов?


Тот же код в песочнице (с рандомными элементами).


p.s.:
В проекте использую Flutter+GetX, если вдруг это имеет значение.
Это мой самый первый опыт с дартом (в основном на JS пишу), и если делаю что-то неправильно - буду признателен за критику в комментах.


Ответы (1 шт):

Автор решения: MiT

Есть альтернатива Map.fromIterable без callback, это for/for-in:

items = { for (int i = 0; i < fields.length; i++) fields[i].name: fields[i] };
// или
items = { for (var itm in fields) v.name: itm };
→ Ссылка