Je voudrais être en mesure d'exécuter des fonctions une fois qu'un Widget a terminé la construction / chargement, mais je ne sais pas comment. Mon cas d'utilisation actuel est de vérifier si un utilisateur est authentifié et si non, rediriger vers une vue de connexion. Je ne veux pas vérifier avant et pousser soit la vue de connexion ou la vue principale, il doit se produire après la vue principale a chargé. Y a-t-il quelque chose que je peux utiliser pour faire ça ?
Réponses
Trop de publicités?Vous pouvez utiliser
https://github.com/slightfoot/flutter_after_layout
qui exécute une fonction une seule fois après la mise en page est terminée. Ou tout simplement regarder son implémentation et l'ajouter à votre code :-)
Ce qui est essentiellement
Si vous êtes à la recherche pour ReactNative de l' componentDidMount
équivalent, le Flottement de l'a. Il n'est pas simple mais ça fonctionne exactement de la même manière. Dans le battement, Widget
s ne pas gérer leurs événements directement. Au lieu de cela, ils utilisent leurs State
objet pour le faire.
class MyWidget extends StatefulWidget{
@override
State<StatefulWidget> createState() => MyState(this);
Widget build(BuildContext context){...} //build layout here
void onLoad(BuildContext context){...} //callback when layout build done
}
class MyState extends State<MyWidget>{
MyWidget widget;
MyState(this.widget);
@override
Widget build(BuildContext context) => widget.build(context);
@override
void initState() => widget.onLoad(context);
}
State.initState
seront immédiatement appelé une fois sur l'écran de finitions rendu de la mise en page. Et ne pourront jamais être appelé même à chaud, rechargement, si vous êtes en mode de débogage, jusqu'explicitement atteint le temps de le faire.