J'ai un widget étatique qui inclut des boutons. Je garde le nombre de robinets d'utilisateur dans une variable int appelée "compteur".
J'ai un autre widget qui est mon écran d'accueil. J'ai un texte sur cet écran. J'ai besoin de montrer le nombre de taps sur ce texte de manière dynamique. Ainsi, lorsque l'utilisateur tapote le bouton de la première classe, mon texte sur la deuxième classe doit être mis à jour. P>
Quelle est la meilleure façon de passer la variable de compteur du premier widget au deuxième widget? P> Les deux de mes classes sont des widgets stipuleux. Donc, j'ai déclaré que ceux-ci sont comptoirs statiques comme ceux-ci; P> class _AppListViewState extends State<AppListView> {
@override
Widget build(BuildContext context) {
return FlatButton(
onPressed: (){
counter++ (can't reach counter here)
}
3 Réponses :
Vous voudrez peut-être apporter votre variable Ensuite, vous pouvez utiliser la variable dans l'autre widget, comme: P> statique code>.
class StatefulWidget{
FlatButton(
onPressed: (){
Something.counter++; // This variable is your counter you mentioned earlier
}
);
}
J'ai ajouté du code à la question. J'ai essayé cela mais j'ai un autre problème.
Créer A EM> ValueChageCommé em> du widget parent Ajouter une passe à FirstWidget, lorsque vous modifiez COWER -> Call ValueChaged em> pour envoyer la mise à jour au widget parent, le parent mettra à jour l'état du deuxième widget. p>
Créer un flux de Widget Parent Ajouter une passe au widget de Firstwidget et Sencond (en utilisant streambuilder em> pour rendant le widget). Lorsque Change COWER -> Modifiez la valeur du flux pour mettre à jour le deuxième widget. p>
mise à jour démo: p>
Link Dartpad P>
Votre approche 1 démo était super, avez-vous une démonstration pour une approche 2?
simple, dans votre code, écrivez simplement "widget.counter" en enfant. Dans Widget Statefull pour accéder à la variable parent, vous devez utiliser "widget.instace". Dans ce cas, "widget.counter" vous permettra d'accéder à la variable du parent.
class AppListView extends StatefulWidget { int counter; @override _AppListViewState createState() => _AppListViewState(); } class _AppListViewState extends State<AppListView> { @override Widget build(BuildContext context) { return FlatButton( onPressed: (){ widget.counter++ }
Mais aussi, j'ai besoin d'atteindre cette variable d'une autre classe. Donc, en fait, j'en ai besoin pour faire statique mais quand je le fais static, alors widget.Counter ne fonctionne pas.