270 votes

Flutter: Exécuter la méthode sur Widget construire complet

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 ?

343voto

Thomas Points 1393

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

138voto

anmol.majhail Points 11892

MISE À JOUR: Flutter v1.8.4

Les deux codes mentionnés fonctionnent maintenant :

Travail:

Travail

14voto

mrhevor Points 18
<h3>Flutter 1.2 - fléchette 2.2<p>Selon les directives officielles et les <a href="https://docs-flutter-io.firebaseapp.com/flutter/widgets/TextSelectionOverlay/update.html" rel="noreferrer">sources</a> si vous voulez être certain que le <strong>dernier cadre de votre mise en page</strong> a été dessiné, vous pouvez écrire par exemple:</p><pre><code></code></pre></h3>

13voto

jerinho Points 553

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, Widgets 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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X