Дарт брошен с использованием неправильного типа? - PullRequest
1 голос
/ 09 февраля 2020

Я новичок в Dart, и мне было интересно, как метод .cast() работает с динамическими типами и списками c.

Это рабочий пример из документации Flutter о том, как вручную анализировать JSON в Dart:

List<Photo> parsePhotos(String responseBody) {
  final parsed = json.decode(responseBody).cast<Map<String, dynamic>>();

  return parsed.map<Photo>((json) => Photo.fromJson(json)).toList();
}

, где responseBody - некоторый массив JSON, ранее полученный из HTTP конечная точка.

Я не понимаю, почему результат json.decode(responseBody) приведен к Map<String, dynamic>, если по логике он должен быть List<Map<String, dynamic>>. Я отладил код, и на самом деле переменная parsed является подтипом списка.

Что я здесь не так делаю?

Заранее спасибо.

1 Ответ

1 голос
/ 09 февраля 2020

Похоже, это правильно. cast - это метод Iterable. Тип в угловых скобках - это тип каждого элемента итерируемого элемента.

https://api.dart.dev/stable/2.7.1/dart-core/Iterable/cast.html

...