StatefulWidget 可以根據(jù)外部變量的變化而進(jìn)行內(nèi)容的刷新,其設(shè)計模式是:
- 指定一個 StatefulWidget,并 override 父類方法返回一個 state 對象
class CardHome extends StatefulWidget {
@override
State<CardHome> createState() => CardHomeState();
}
- 在 state 對象中保存狀態(tài)屬性旭旭,并根據(jù)狀態(tài)動態(tài)渲染新的 widget民逼,且 State 對象也有 ```build(buildContext:) 函數(shù)用于構(gòu)造 widget
class CardHomeState extends State<CardHome> {
int level = 2;
@override
Widget build(BuildContext context) {
return Text("Hello - $level";
}
- 在 State 中可以調(diào)用 setState(fn) 函數(shù)進(jìn)行狀態(tài)的刷新,重新 build widget
class CardHomeState extends State<CardHome> {
int level = 2;
@override
Widget build(BuildContext context) {
return Row(
children: <Widget>[
Text("Hello - $level";
FlatButton(
onPress: () {
setState(() { level+= 1;)});
},
icon: Icon(Icons.add),
);
],
);
}