Произошло исключение: введите MappedListIterable 'не является подтипом типа' List <Genre>'stackTrace: # 0 new GenreResponse.fromJson - PullRequest
0 голосов
/ 05 августа 2020

Я получаю ошибку исключения в моем проекте flutter, может ли кто-нибудь помочь мне с этим


class GenreResponse {
  final List<Genre> genres;
  final String error;

  GenreResponse(this.genres, this.error);

  GenreResponse.fromJson(Map<String, dynamic> json)
      : genres = (json["genres"] as List).map((e) => new Genre.fromJson(json)),
        error = "";

  GenreResponse.withError(String errorValue)
      : genres = List(),
        error = errorValue;
}

также, я добавляю сюда свой код жанра .dart для лучшего понимания

  final int id;
  final String name;

  Genre(this.id, this.name);

  Genre.fromJson(Map<String, dynamic> json)
      : id = json["id"],
        name = json["name"];
}

1 Ответ

1 голос
/ 05 августа 2020

Просто добавьте .toList() в строку .map():

GenreResponse.fromJson(Map<String, dynamic> json)
  : genres = (json["genres"] as List).map((e) => new Genre.fromJson(json)).toList(),
    error = "";

Это происходит потому, что на выходе .map() получается MappedListIterable, а не List. Раздражает то, что это не улавливается компилятором, но я полагаю, это как-то связано с тем, как работает наследование.

...