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

Issue

Can you please help me to solve this problem about 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’.

CODE:

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

Solution

Flutter widgets are of 2 types –

  1. StatelessWidget – They do not have a State object associated with them. Once created/rendered, they can’t be mutated. They will have to be rebuilt again

  2. StatefulWidget – A State object is associated with them. You would have to create another class extending the State class.

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

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

Checkout this Medium article

Answered By – sidrao2006

Answer Checked By – Mildred Charles (FlutterFixes Admin)

Leave a Reply

Your email address will not be published. Required fields are marked *