Dart
type 'List<dynamic>' is not a subtype of type ... – Flutter 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.
comuneDiagnosi
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.
flutter testRisoluzione
Mapping esplicito del modello
Convertire ogni elemento con un costruttore fromJson e tipizzare il risultato.
- Validare la struttura JSON.
- Implementare Model.fromJson.
- 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
- Dart language documentation - type system documentazione_ufficiale