Flutter setState()在statefulWidget类中无法识别

Flutter setState()在statefulWidget类中无法识别,flutter,Flutter,请注意,我正在获取的setState未在StatefulWidget DataItem中使用上述设置进行定义,但我希望根据所附的屏幕截图执行以下操作。按下按钮后,我需要相应地更新标签。setState在类状态中,而不是在StatefulWidget类中,您可以执行以下操作: class DataItem extends StatefulWidget { @override String number; void setNumber(String nu){ setState(

请注意,我正在获取的setState未在StatefulWidget DataItem中使用上述设置进行定义,但我希望根据所附的屏幕截图执行以下操作。按下按钮后,我需要相应地更新标签。

setState在类状态中,而不是在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(...),
    );
  }
}

这将在每次单击时递增计数器。下面是一种导出函数的方法,该函数将更改状态

这是一个简单的反例,但您应该能够使用它执行更复杂的状态更改

首先,setState仅用于StatefulWidget的state类

第二,对于通过构造函数接收的值,不需要使用setState,只需将其传递给小部件即可

请尝试以下代码:

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

谢谢你的回复。但是我需要的是一个按钮来更新所有的TextWidget,而不是每个TextWidget。
class DataItem extends StatefulWidget {
  final String number;

  const DataItem(this.number) : assert(number != null);

  _DataItemState createState() => _DataItemState();
}

class _DataItemState extends State<DataItem> {

  Widget build(BuildContext context) {
    return Container(
      child: Text(
        widget.number,
        style: TextStyle(...),
      )
    );
  }
}
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(...),
      )
    );
  }
}