J'ai rencontré un problème en essayant Flutter que je ne peux pas comprendre. Le cas je pense a un widget FutureBuilder
comme ci-dessous:Flutter: Prendre une action basée sur l'instantané de l'avenir
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("Example Page"),
),
body: new FutureBuilder(
future: _exampleFuture,
builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.waiting: return new Center(child: new CircularProgressIndicator(),);
default:
if(snapshot.hasError) {
return new Center(child: new Text('Error: ${snapshot.error}'),);
}
else {
return new Center(child: new Text("Result: ${snapshot.data}"),);
}
}
}
)
);
}
Maintenant, supposons que l'avenir est un appel http qui se termine avec une erreur 401, indiquant que l'utilisateur est non autorisé. À ce stade, j'aimerais que l'application efface tout jeton stocké et redirigé vers la page de connexion ou reconstruise simplement l'application. Mais je ne peux pas appeler une méthode qui fait cela dans la fonction de construction, et je ne pense pas que didUpdateWidget()
est garanti d'être appelé, comme l'avenir pourrait retourner sa valeur avant que build
est appelé? Peut-être que j'aborde complètement ce problème, mais y a-t-il un moyen de le faire dans Flutter?
Je peaufiné mon code un peu. – aziza