Hello tout le monde,
Malgré le coaching d’hier soir, il me reste un micro problème à gérer pour mon widget de recherche. Je veux afficher une croix d’effacement à partir du moment où le focus est sur mon TextField. Voici mon code :
TextField(
controller: _controller,
focusNode: focusNode,
decoration: InputDecoration(
prefixIcon: const Icon(Icons.search),
suffixIcon:
focusNode.hasFocus
? IconButton(
icon: const Icon(Icons.clear),
onPressed: _clearTextField,
)
: null,
labelText: "Chercher un champignon",
//hintText: "Chercher un champignon",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(15),
borderSide:
const BorderSide(color: Colors.orange))),
onTap: () {
setState(() {});
},
onChanged: (searchText) {
widget._viewModel.fungiSearch(searchText: searchText);
setState(() {});
},
),
Au niveau du suffixIcon, j’ai une condition d’affichage si le focus est sur le champs. Le focus est bien détecté, lorsque je tap ou change le champs texte.
Mais si je renseigne mon champs recherche et que je clique sur un résultat je navigue vers une autre page. Lorsque j’appuie sur le bouton retour, je retourne dans ma vue initiale, le texte de ma recherche est toujours là et mon focus bien en place dans le Textfield. Je devrais donc afficher ma croix mais elle reste masquée parce que je n’ai pas mis à jour mon état.
Si je clique sur le champs ou que je bouge mon contenu, a ce moment mon état ce met à jour et la croix apparait.
Comment puis-je faire pour mettre à jour mon état lors d’un retour sur ma vue opéré par le navigateur 2.0 ?
Merci d’avance pour votre aide !