Comme Flutter appelle la méthode de construction plusieurs fois dans des conditions différentes, pour éviter de récupérer les données plusieurs fois, j'initialise les données dans le fichier initState
.
Je veux recréer le widget lorsque les données sont prêtes.
Voici mon code :
class Test extends StatefulWidget {
@override
_TestState createState() => new _TestState();
}
class _TestState extends State<Test> {
Data data;
bool dataReady = false;
@override
void initState() {
super.initState();
getData(context).then((Data data) async {
setState(() {
dataReady= true;
});
});
}
@override
Widget build(BuildContext context) {
if (dataReady) {
return createMainContent(context);
} else {
return new Container();
}
}
}
Cependant, cela entraîne l'exception suivante :
inheritFromWidgetOfExactType(_InheritedProvider) or inheritFromElement() was called before _TestState.initState() completed.
Puis-je savoir si je fais quelque chose de mal ici ?
Lorsque j'ajoute la ligne suivante à l'implémentation de getData(context)
await Future.delayed(new Duration(milliseconds: 300));
l'exception ne se produit pas.