Charger une List avec Directus API

Bonjour !

Je me retrouve avec un problème assez étrange que je n’arrive pas à cerner, alors voici :

Dans un formulaire j’utilise le type « tags » dans directus afin de stocker des variables de type List ou List (j’ai fais ce choix car les tableaux ne comportent jamais plus de 3 items, les many to many devenaient donc trop contraignant pour un gain faible).

Je parviens sans problème à la enregistrer en BDD et ils ont le bon type ([« value »] pour les String [0] pour les int) avec un modèle classique :

  List<int>? get famous => getValue(forKey: "notoriete");
  set famous(List<int>? newFamous) => setValue(newFamous, forKey: "notoriete");

Par contre, lorsque je cherche à récupérer les données de la table, tous les champs sont Ok mis à part les List… j’ai toujours la même erreur du type :

Error: Expected a value of type 'List<int>?', but got one of type 'List<dynamic>'

Ce qui signifie donc que pour l’API toutes liste de tags ne peut être que dynamic ? Mais pourquoi l’insertion fonctionne t-elle dans ce cas ?

Merci de votre aide !

Salut!

le problème ne vient pas de Directus mais du parsing json en Dart : du moment qu’il trouve un tableau, il le considère automatiquement comme un tableau dynamic car en JSON le contenu peut être de différents types.
Si tu es certain que ton tableau ne contient que des int (ou un autre type) alors tu peux utiliser la fonction dédiée aux listes de tableaux :
List<T> getList<T>({required String forKey}) à la place de la fonction getValue que tu utilises.
Elle est dans la même bibliothèque Directus que tu utilises déjà :

Happy coding :slight_smile:

Merci pour ton retour @mbritto !