Reputation: 53
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),
),
)
],
),
),
Upvotes: 1
Views: 2247
Reputation: 1328
Flutter widgets are of 2 types -
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
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
Upvotes: 1
Reputation: 388
You widget in not stateful. SetState method can be only used in stateful widgets.
Upvotes: 1