type 'List<dynamic>' is not a subtype of type ... – Flutter type 'List<dynamic>' is not a subtype

type 'List<dynamic>' is not a subtype

L'errore type 'List<dynamic>' is not a subtype of type ... indica che una risposta JSON o una collezione dinamica viene convertita in un tipo più specifico senza trasformare gli elementi. Il controllo va eseguito sul dato reale e sul modello, distinguendo List<Map<String, dynamic>> da List<Model>. La correzione usa map e fromJson espliciti, senza cast globale che nasconde dati non conformi.

Cosa significa questo errore?

L'errore type 'List<dynamic>' is not a subtype of type ... indica che una risposta JSON o una collezione dinamica viene convertita in un tipo più specifico senza trasformare gli elementi. Il controllo va eseguito sul dato reale e sul modello, distinguendo List<Map<String, dynamic>> da List<Model>. La correzione usa map e fromJson espliciti, senza cast globale che nasconde dati non conformi.

Messaggio originale

type 'List<dynamic>' is not a subtype of type ...

Contesto e parole chiave

Alias

  • Dart type cast error
  • List<dynamic> cast

Messaggi alternativi

  • type is not a subtype of type

Prodotti

  • Dart / Flutter

Piattaforme

  • Android
  • iOS
  • Linux
  • macOS
  • Web
  • Windows

Parole chiave

  • dart type cast
  • flutter list dynamic
  • json fromjson flutter

Cause possibili

Collezione dinamica convertita senza mapping

Il risultato del decoder JSON viene assegnato a una lista tipizzata senza costruire gli oggetti del modello.

comune

Diagnosi

Tipo effettivo della risposta

Stampare il tipo del campo e verificare la struttura di ogni elemento prima del cast.

Come leggere il risultato. La forma reale del JSON mostra se serve un mapping o una correzione del contratto API.

dart
flutter test

Risoluzione

Mapping esplicito del modello

Difficoltà: mediaRischio: basso

Convertire ogni elemento con un costruttore fromJson e tipizzare il risultato.

  1. Validare la struttura JSON.
  2. Implementare Model.fromJson.
  3. Usare map<Model>((x) => Model.fromJson(x)).toList().

Domande frequenti

Posso risolvere con as List<Model>?

Solo se la lista contiene già istanze Model. Una lista decodificata da JSON contiene mappe e deve essere trasformata elemento per elemento.

Approfondimenti

Schede correlate