0
votes

State () ne reconnaît pas dans la classe Statefulwidget

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.

0 commentaires

3 Réponses :


0
votes

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)
          ),
        ),
          ],
        ),
      ),
    );
  }
}


2 commentaires

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



1
votes

Voici un moyen d'exporter des fonctions qui changeront d'état.

Ceci est un exemple simple exemple, mais vous devriez pouvoir effectuer des changements d'état plus complexes avec cela.

https://dartpad.dev/6D43E30EB6FEBFCF7AD0EC8555035DB


0 commentaires

0
votes

Premièrement SetState code> est uniquement utilisé dans la classe d'état d'un Statefulwidget code>.

Dans la deuxième place, vous n'avez pas besoin d'utiliser SETState code> pour les valeurs reçues via constructeur Tout ce que vous avez à faire est de le transmettre à votre widget. p>

Essayez ce code: 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(...),
      )
    );
  }
}


0 commentaires