HashMap без ключа экземпляра - PullRequest
0 голосов
/ 02 мая 2020

Что не так с моим кодом?

widget.woList это тип данных List<HashMap<int, ABC>>()

for (var i in widget.woList) {
  print(i.toString());
}

Распечатав код выше, я получу

  {5838: ABC(pid: 84201,userId: 545)}

Но когда я хочу получить только ключ (print(i.key.toString());), я получаю ошибку ниже:

Class '_HashMap<int, ABC>' has no instance getter 'key'.
Receiver: Instance of '_HashMap<int, ABC>'
Tried calling: key

Ответы [ 2 ]

1 голос
/ 02 мая 2020

Я думаю, что вам также нужно l oop через HashMap:

for (HashMap<int, ABC> i in list) {
  i.forEach((key, value) {
    print(key.toString());
    print(value.toString());
  });
}

Убедитесь, что вы опечатали переменную "i" в for с HashMap<int, ABC>, чтобы получать автозаполнения из вашей IDE.

0 голосов
/ 02 мая 2020

Анализатор должен выдавать ошибку в вашем случае, поскольку Map не содержит никаких свойств с именем key. Вместо этого имя keys, которое возвращает Iterable ключей на карте: https://api.dart.dev/stable/2.8.1/dart-core/Map/keys.html

Карта может содержать несколько ключей, но если вы знаете, что на карте есть только один ключ Вы можете сделать что-то вроде: i.keys.first.toString(). Но если есть несколько ключей, вам нужно l oop через них.

Я рекомендую вам использовать автозаполнение в вашей IDE при программировании в Dart и использовать анализатор. Используя инструменты, предоставляемые SDK, гораздо проще просмотреть, какие свойства и методы есть в каждом классе вместе с документацией. А поскольку Dart может автоматически определять тип множества переменных, вы можете использовать IDE, чтобы также идентифицировать тип каждой переменной, даже не запуская программу.

...