How to solve error: 'setState' isn't defined

How to solve error: 'setState' isn't defined

你能帮我解决这个关于 setState()

的问题吗

ERROR:
The method 'setState' isn't defined for the type 'MyApp'.
Try correcting the name to the name of an existing method, or defining a method named 'setState'.

代码:

return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(
          centerTitle: true,
          title: Text('Gestion Produit', ),
          backgroundColor: color1,
        ),
        backgroundColor: color2,
        body: SingleChildScrollView(
          child: Column(
            children: < Widget > [

              Container(
                padding: EdgeInsets.all(20),
                margin: EdgeInsets.fromLTRB(20, 20, 20, 20),
                decoration: BoxDecoration(
                  borderRadius: BorderRadius.circular(20),
                  color: color3,
                ),
                child: Column(
                  children: [
                    Container(
                      width: double.infinity,
                      height: 30,
                      child: TextFormField(
                        controller: refCon,
                        decoration: new InputDecoration(
                          disabledBorder: InputBorder.none,
                          contentPadding:
                          EdgeInsets.only(left: 15, bottom: 11, top: 11, right: 15),
                          hintText: "Votre Reference",
                          hintStyle: TextStyle(color: color1),
                        ),
                      ),
                    ),
                    SizedBox(height: 20),
                    Container(
                      width: double.infinity,
                      height: 30,
                      child: TextFormField(
                        controller: qteCon,
                        keyboardType: TextInputType.number,
                        decoration: new InputDecoration(
                          disabledBorder: InputBorder.none,
                          contentPadding:
                          EdgeInsets.only(left: 15, bottom: 11, top: 11, right: 15),
                          hintText: "Votre Quantite",
                          hintStyle: TextStyle(color: color1),
                        ),
                      ),
                    ),
                    SizedBox(height: 20),
                    Container(
                      width: double.infinity,
                      height: 30,
                      child: TextFormField(
                        controller: puCon,
                        keyboardType: TextInputType.number,
                        decoration: new InputDecoration(
                          disabledBorder: InputBorder.none,
                          contentPadding:
                          EdgeInsets.only(left: 15, bottom: 11, top: 11, right: 15),
                          hintText: "Prix Unitaire",
                          hintStyle: TextStyle(color: color1),
                        ),
                      ),
                    ),
                    SizedBox(height: 20),
                    RaisedButton(
                      onPressed: () {
                          setState((){
                            ref = refCon;
                            qte = qteCon;
                            pu = puCon;
                          });
                      },
                      color: color2,
                      textColor: color3,
                      disabledColor: Colors.grey,
                      disabledTextColor: Colors.black,
                      padding: EdgeInsets.all(8.0),
                      splashColor: color1,
                      child: Text(
                        "Ajouter Un Produit",
                        style: TextStyle(fontSize: 20.0),
                      ),
                    )
                  ],
                ),
              ),

您的小部件不是有状态的。 SetState 方法只能在有状态的小部件中使用。

Flutter 小部件有两种类型 -

  1. StatelessWidget - 它们没有关联的 State 对象。一旦 created/rendered,它们就无法改变。他们将不得不再次重建

  2. StatefulWidget - State 对象与它们关联。您将不得不创建另一个 class 扩展 State class.

class YellowBird extends StatefulWidget {
  @override
  _YellowBirdState createState() => _YellowBirdState();
}

class _YellowBirdState extends State<YellowBird> {
  @override
  Widget build(BuildContext context) { }
}

检查这个 Medium article