Bonjour,
Il y a quelque chose que je ne comprends pas avec les initState() et les createState… Je veux éditer l’un de mes formulaires dont certaines parties sont des widgets histoire de converser un affichage pas trop lourd (c’est un gros formulaire avec presque toutes les contraintes possibles).
Dans ma view de création/edition j’utilise un initState avec un fonction async pour aller chercher toutes les datas :
List<dynamic> _listLang = [];
@override
void initState() {
super.initState();
getDataToSet(widget.viewModel.idSelected!);
}
Future<void> getDataToSet(int id) async {
modelToEdit = await widget.viewModel.getModelVM(id: id);
setState(() {
_listLang = modelToEdit !.lang!;
}
Cela fonctionne, mais il faut encore transmettre ses données au bon moment au widget qui gère mes checkbox.
Ainsi plus loin je déclare mon widget :
CheckBoxLang(
getlang: widget.viewModel.getLangVM(),
listLang: widget.viewModel.listLang,
listToLoad: _listLang,
),
getlang (function) = va chercher toutes les langues dispo (afficher ensuite via un FutureBuilder)
listLang (List) = la variable de mon viewModel qui sera utiliser pour sauvegarder les données
listToLoad (List) = les données précédemment utilisées
Mais, dans mon widget
@override
void initState() {
super.initState();
print("list = ${widget.listToLoad}");
demeure toujours vide car ce code est exécuté avant… donc la liste est toujours vide et je ne peux rien afficher…
Par contre, si je positionne les données dans value de la checkbox, cela fonctionne, mais je ne peux pas les éditer, car c’est automatiquement rempli à chaque build…
Sauriez-vous ce qui m’échappe dans la logique ?
Merci !