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
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
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP