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 小部件有两种类型 -
StatelessWidget
- 它们没有关联的 State
对象。一旦 created/rendered,它们就无法改变。他们将不得不再次重建
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
你能帮我解决这个关于 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 小部件有两种类型 -
StatelessWidget
- 它们没有关联的State
对象。一旦 created/rendered,它们就无法改变。他们将不得不再次重建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