TransWikia.com

Variables entre clases en Flutter

Stack Overflow en español Asked by Fai Aguirre on December 11, 2021

lo que pasa es que cree una clase que son dos botones y un texto que sera el contador
tiene dos variables miembro y una es contador que es el que me interesa consultar desde otra clase pero siempre me da el valor por defecto 0
lo intento retornar pero no funciona y al llamarlo sin () me retorna Closure: () => dynamic from Function ‘val’ y con () me retorna el 0

class Danos extends StatefulWidget {
  @override
  int value;
  int val() {
    print(createState().val());
    return this.value = createState().val();
  }

  String n;
  Danos([this.n = "nombre", this.value = 0]);
  _DanosState createState() => _DanosState(this.n);
}

class _DanosState extends State<Danos> {
  int value;
  String n;

  _DanosState([this.n = "nombre"]);
  int val() {
    return this.value;
  }

  @override
  initState() {
    value = widget.value;
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      height: MediaQuery.of(context).size.height * .06,
      width: MediaQuery.of(context).size.width * .58,
      child: Row(
        children: <Widget>[
          Container(
            //width: ,
            height: MediaQuery.of(context).size.height * .05,
            child: FloatingActionButton(
              onPressed: less,
              heroTag: "Menos" + this.n,
              tooltip: 'Menos' + this.n,
              child: Icon(Icons.exposure_neg_1),
            ),
          ),
          Text(n + "=" + (this.value.toString())),
          Container(
            height: MediaQuery.of(context).size.height * .05,
            child: FloatingActionButton(
              onPressed: add,
              heroTag: "Mas" + this.n,
              tooltip: 'Mas' + this.n,
              child: Icon(Icons.plus_one),
            ),
          ),
        ],
      ),
    );
  }

  add() {
    setState(() {
      this.value += 1;
    });
  }

  less() {
    setState(() {
      (this.value > 0) ? this.value -= 1 : this.value = 0;
    });
  }
}

Esto es en la misma pantalla no cambio de pantalla solo que se creo la clase porque se ocupan muchos widget asi

One Answer

Intenta subir el Estado a un widget pariente.

Es lo que sugieren en la documentación

Estado de elevación

En Flutter, tiene sentido mantener el estado por encima de los widgets que lo utilizan.

Por qué? En frameworks declarativos como Flutter, si quieres cambiar la interfaz de usuario, tienes que reconstruirla. No hay una manera fácil de tener MyCart.updateWith(somethingNew). En otras palabras, es difícil cambiar imperativamente un widget desde fuera, llamando a un método en él. E incluso si pudieras hacer que esto funcione, estarías luchando contra el framework en lugar de dejar que te ayud

Answered by Marte on December 11, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP