Le texte du TextFormField disparait

Bonjour à tous,

Je vous soumets un problème avec lequel je m’arrache les cheveux depuis plus d’une semaine.

J’ai créé une petite application web en Flutter web mais j’ai un problème avec mon écran de login.
J’arrive a remplir les champs des deux TextFormFields (email et mot de passe), mais lorsque je clique en dehors de ces champs, le texte disparait. Évidemment, il disparait quand je veux cliquer sur mon bouton « Connexion ».
En fait, les champs sont réinitialisés quand le clavier disparait. J’ai travaillé avec les contrôleurs, les focusNode… mais rien ne fonctionne (Même ChatGPT a séché !).

Cependant, quelques écrans plus loin, j’ai un autre formulaire qui fonctionne sans problème.

La différence entre les deux me direz-vous ? Dans la partie affichage et son Viewmodel, je n’en vois pas. La seule piste que j’entrevois, c’est dans le NavigationDelegate. En effet, le viewmodel est créé en même temps que l’écran pour le login. Et quand le clavier disparait, j’ai l’impression que tout l’écran est redessiné (avec des valeurs nulles évidemment)
Pour l’autre écran qui fonctionne, le Viewmodel est créé dans une fonction du navigationDelegate, ce qui a pour conséquence de faire apparaitre cet écran…

Enfin voilà… si quelqu’un a déjà été confronté au problème et a une solution, je suis preneur.

Bien à vous,

Benoit

PS: Petite précision, en mode application tout fonctionne. C’est juste en mode web que ça ne fonctionne pas ?!?

Ah oui ? ChatGPT peut servir à trouver nos erreurs de code ? Comment faut-il faire ?

Tu lui décris simplement ton problème en précisant bien qu’il s’agit d’une application réalisée avec Flutter, et généralement il te donne une petite explication suivie d’un bout de code.
Bon… faut quand même vérifier ce qu’il donne.
Et si ça ne convient pas, tu lui dis et il te propose autre chose après s’être platement excusé :slightly_smiling_face:

Bonsoir,

Je me répond à moi-même au cas où certains rencontreraient le même problème.
En fait, je ne cherchais pas dans la bonne direction avec mon histoire de ViewModel.

Pour que me champs restent en place malgré le clavier qui se ferme, j’ai du utiliser la méthode « OnSaved » du TextFormField plutôt que le « OnChanged ». Je ne sais pas trop pourquoi, mais ça fonctionne.

Belle semaine à tous,

1 « J'aime »