[RESOLU] TypeError (type 'String' is not a subtype of type 'int')

Bonjour, j’essaie de me lancer sur Flutter, mais je rencontre un problème, il doit y avoir un point que je n’ai pas bien cerné…

Mon app doit récupérer le profil d’utilisateur enregistrer dans un web server.


Ma requête PHP

Ma réponse en JSON

Pouvez vous me dire ce qui ne va pas ?
Merci

Salut @Clemp
Je ne fais pas de flutter mais j’essaierai de caster les nombres qui sont dans le json.

Du genre :

id = int.parse( json["id"] )

J’ai vite fais regardé sur ce site :
https://www.educative.io/edpresso/how-to-cast-a-string-to-an-integer-in-dart

1 « J'aime »

Bonjour @Clemp,

De ce que je vois, ton php te retourne une variable type « string » pour l’ID. Y compris dans le json. Pour que celle-ci soit utilisée en Int, il faut la convertir en Int impérativement pour que Flutter puisse l’utiliser comme il se doit.

tu peux utiliser quelque chose comme : intval() en amont.

Bon courage !

@Mrt1 Le json est une chaîne de caractère du coup le mieux c’est quand même de caster du côté de flutter plutôt que de faire un intval() en php. Selon les languages je pense que le parse du json ne détecte pas forcément les type de données (mais pas sûr de mon coup)

1 « J'aime »

Je note l’idée. Effectivement, je pense que tu as raison @alexandre.cane et qu’il faut mieux traiter du côté de Flutter pour ce genre de chose. Merci pour ton retour.

Yes ! Merci @alexandre.cane et @Mrt1 ! Le problème est résolu !

1 « J'aime »

@Clemp comment vous avez résolu votre problème svp ?

@rania le problème a selon moi été correctement identifié par @alexandre.cane :
dans le JSON l’id est envoyé au format texte "14" et la variable id était un entier dans le code de parsing final int id
Il y a 2 correction possibles :

  • corriger le serveur (php → JSON)
  • corriger le parser dans l’app flutter

La plus propre serait selon moi de changer le JSON qui provient du serveur, il n’y a aucune raison pour que l’id soit envoyé en texte s’il s’agit en réalité d’un entier. Mais si ça n’est pas possible, alors la solution d’alexandre devrait marcher : [RESOLU]_TypeError (type 'String' is not a subtype of type 'int') - #2 par alexandre.cane