Необработанное исключение: список типов не является подтипом списка типов<Карта>

#flutter #dart

Вопрос:

У меня есть этот текст ответа от API. Когда я пытаюсь создать новую игру на основе этого ответа, я получаю сообщение об ошибке :

 response : {success: true, games: [{game_id: 3, game_gide: {0: b, 1: , 2: , 3: a, 11: b, 14: e}, game_cells: [3,8,23,18,2,7,17,22,1,6,16,21], game_questions: [{title: question 2 h, answer: abcde, isTrue: false}, {title: question 1 h, answer: xxxxx, isTrue: false}]}  

ошибка : Необработанное исключение: тип «Список» не является подтипом типа » Списокlt;Картаlt;Строка, динамическаяgt;lt;Строка, динамическаяgt;gt;»

 class Game {  String gameId;  String gameLevel;  Listlt;intgt; gameCells;  Listlt;Questiongt; gameQuestions;    Game({  this.gameId,  this.gameLevel,  this.gameCells,  this.gameQuestions,  });   static fromJson(Maplt;String, dynamicgt; parsedJson){  print(parsedJson['game_vertical_questions']);  return Game(  gameId: parsedJson['game_id'],  gameLevel: parsedJson['game_level'],  gameCells: (jsonDecode(parsedJson['game_cells']) as Listlt;dynamicgt;).castlt;intgt;(),  gameQuestions : Question.listFromJson(parsedJson['game_questions']),  );  } }     class Question {  String title;  String answer;  bool isTrue;   Question({ this.title, this.answer, this.isTrue});   static listFromJson(Listlt;Maplt;String, dynamicgt;gt; list) {  Listlt;Questiongt; questions = [];  for (var value in list) { questions.add(Question.fromJson(value)); }  return questions;  }   static fromJson(Maplt;String, dynamicgt; parsedJson){  return Question(  title: parsedJson["title"],  answer: parsedJson["answer"],  isTrue: parsedJson["isTrue"]  );  } }  

Я получаю ошибку при попытке использовать текст JSON следующим образом:

 var jsonData = json.decode(response.body); var res = jsonData["games"]; for (var g in res){  //print(g);  Game game = Game.fromJson(g);  setState(() {  gamesList.add(game);  }); }  

ошибка:

Необработанное исключение: тип «Список» не является подтипом типа » Списокlt;Картаlt;Строка, динамическаяgt;lt;Строка, динамическаяgt;gt;»

Он указывает на эту строку в игровом классе:

 gameQuestions : Question.listFromJson(parsedJson['game_questions']),  

есть какие-нибудь предложения ?

Ответ №1:

Попробуй это,

Question.listFromJson(Listlt;Maplt;String,dynamicgt;gt;.from(parsedJson['game_questions'])),

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

1. Ты имеешь в виду в Игровом классе ? Если да, то я не могу этого сделать. получение ошибки (Тип аргумента «Списокlt;Картаlt;Строка, динамическаяgt;lt;Строка, динамическаяgt;gt;» не может быть присвоен типу параметра » Списокlt;Строка, динамическаяgt;gt;lt;Вопросgt;».)

2. Извините, я не внимательно прочитал ваш вопрос, отредактированный ответ

3. не работает , по-прежнему появляется одно и то же необработанное исключение ошибки: тип «Списокlt;динамическийgt;» не является подтипом типа » Картаlt;динамическаяgt;lt;Строка, динамическаяgt;»

Ответ №2:

Мы можем решить эту проблему, изменив static конструктор Question класса:

 static listFromJson(Listlt; dynamicgt; list) { // change  Listlt;Questiongt; questions = [];  for (var value in list) { questions.add(Question.fromJson(value)); }  return questions; }  

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

1. Необработанное исключение: тип » Списокlt;динамическийgt;» не является подтипом типа «Картаlt;динамическаяgt;lt;Строка, динамическаяgt;» … все еще выводится

2. но исключение теперь указывает на значение внутри статического конструктора класса Question