class DataItem extends StatefulWidget {
@override
String number;
void setNumber(String nu){
setState(() {
this.number=nu;
});
}
_DataItemState createState() => new _DataItemState(this.number);
}
class _DataItemState extends State<DataItem> {
@override
String number;
_DataItemState(this.number);
Widget build(BuildContext context) {
return new Container(
child: Text(
number,
style: TextStyle(...),
);
}
}
Please note that I am getting setState() is not defined with the above setup in the StatefulWidget (DataItem) however what I want to be done is following according to the attached screenshot. Once I pressed the button I need to update the labels accordingly.
3 Réponses :
setState code> est à l'intérieur de la classe état code>, pas à l'intérieur de la classe Statefulwidget code>, vous pouvez procéder comme suit: class _MyHomePageState extends State<MyHomePage> {
int counter = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
counter.toString(),
),
RaisedButton(
onPressed: (){
setState(() {
counter++;
});
},
child: Text(
'Button',
style: TextStyle(fontSize: 20)
),
),
],
),
),
);
}
}
Merci pour votre réponse. Mais ce dont j'ai besoin est un seul bouton pour la mise à jour du widget texte et non pour chaque widget de texte.
dartpad.dartlang.org/b956f2427f0e2efffc363e65272A583F
Voici un moyen d'exporter des fonctions qui changeront d'état. P>
Ceci est un exemple simple exemple, mais vous devriez pouvoir effectuer des changements d'état plus complexes avec cela. P>
Premièrement Dans la deuxième place, vous n'avez pas besoin d'utiliser Essayez ce code: p> SetState code> est uniquement utilisé dans la classe d'état d'un Statefulwidget code>. SETState code> pour les valeurs reçues via constructeur Tout ce que vous avez à faire est de le transmettre à votre widget. p> class DataItem extends StatelessWIdget {
final String number;
const DataItem(this.number) : assert(number != null);
Widget build(BuildContext context) {
return Container(
child: Text(
number,
style: TextStyle(...),
)
);
}
}