0
votes

Comment atteindre une variable d'une classe d'une autre classe dans le flutter

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> Ajout du code fort> 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)
      }


0 commentaires

3 Réponses :


0
votes

Vous voudrez peut-être apporter votre variable statique code>. XXX PRE>

Ensuite, vous pouvez utiliser la variable dans l'autre widget, comme: P>

class StatefulWidget{
   FlatButton(
    onPressed: (){
      Something.counter++; // This variable is your counter you mentioned earlier
   }
);
}


1 commentaires

J'ai ajouté du code à la question. J'ai essayé cela mais j'ai un autre problème.



1
votes

approche 1:

Créer A ValueChageCommé du widget parent Ajouter une passe à FirstWidget, lorsque vous modifiez COWER -> Call ValueChaged pour envoyer la mise à jour au widget parent, le parent mettra à jour l'état du deuxième widget.

approche 2:

Créer un flux de Widget Parent Ajouter une passe au widget de Firstwidget et Sencond (en utilisant streambuilder pour rendant le widget). Lorsque Change COWER -> Modifiez la valeur du flux pour mettre à jour le deuxième widget.

mise à jour démo:

Link Dartpad


1 commentaires

Votre approche 1 démo était super, avez-vous une démonstration pour une approche 2?



0
votes

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++
        }


1 commentaires

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.