3 votes

L'enfer du typage statique

Mon expérience est en Python, où tout est traité comme un canard, sans avoir à définir de types. J'ai récemment commencé à coder en Dart, et voilà que je suis confronté à ces problèmes de type casting.

Quel est le problème avec le code ci-dessous ?

El appendCsv La fonction prend un List<List<dynamic>> paramètre, getMarks renvoie un List<dynamic> liste.

Je veux appeler le getMarks dans une boucle et ajouter toutes les listes à une autre liste, par exemple la liste x . Puis on passe cette liste à la appendCsv fonction.

List<List<dynamic>> x = [];
var v = await etea.getMarks('809', 70740) as Iterable<List<dynamic>>;
x.addAll(v);
print(x);
print(x.runtimeType);
// x = x as List<List<dynamic>>;
print(x.runtimeType);

appendCsv('802', x);

Je reçois ce genre d'erreurs de mélange.

le type 'List<Iterable<String>> n'est pas un sous-type du type 'Iterable<List<dynamic>>' dans la répartition par type

3voto

AntEdote Points 91

Si getMarks renvoie une List< dynamic>, il suffit de l'ajouter à x.

List<List<dynamic>> x = [];
for(what ever){
    List<dynamic> v = await etea.getMarks('809', 70740);
    x.add(v);
}

ou même

List<List<dynamic>> x = [];
for(what ever){
    x.add(await etea.getMarks('809', 70740));
}

0voto

Mahan Marwat Points 152

J'ai enfin résolu mon problème, grâce à @AntEdote ainsi que @coolhack7 's Comment corriger l'erreur "'WhereIterable' n'est pas un sous-type du type 'List'".
Le problème était dans getMarks il retournait un List<WhereIterable<String>> mais je le traitais comme List<dynamic> .
Lorsque vous appelez .where sur quelque chose, il renvoie un WhereIterable c'est un nom de type stupide WhereIterable lol.
Comme décrit par coolhack7 J'ai appelé .toList() sur le WhereIterable<String> en getMarks et corrigé le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X