簡介:Flutter 界面狀態(tài)分為無狀態(tài)和有狀態(tài)兩種
1.無狀態(tài)(StatelessWidget):界面一旦渲染出來就不會再改變
2.有狀態(tài)(StatefulWidget) :界面可以隨著數(shù)據(jù)的變化而變化
1.StatelessWidget(無狀態(tài))
在build(BuildContext context) 里面子部件的樣式或者狀態(tài)是不會再發(fā)生改變。 如果想改變必須將StateManagerDemo干掉斗遏、重新創(chuàng)建一個.事例代碼如下:
class StateManagerDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container();
}
}
2.StatefulWidget(有狀態(tài))
StatefulWidget就會告訴Flutter 下面代碼中StateManagerDemo 是會發(fā)生變化的.事例代碼如下:
//描述UI 定義外觀的 這個類里面顯示什么樣子是由下面_SMDState這個狀態(tài)管理者說了算
class StateManagerDemo extends StatefulWidget {
//構(gòu)造方法
@override
State<StatefulWidget> createState() {
return _SMDState();//返回狀態(tài)管理者
}
}
//管理狀態(tài) 當(dāng)_SMDState里面的數(shù)據(jù)發(fā)生變化的時候。就會刷新上面StateManagerDemo
class _SMDState extends State<StateManagerDemo>{
//狀態(tài)-->數(shù)據(jù)
int count = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('StateMangerDemo'),
),
body: Center(
child: Chip(label: Text('$count')),
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
onPressed: (){
count += 1;
setState(() {});//重新刷新(渲染)!
print('count = $count');
},
),
);
}
}
注:上面方法是成對出現(xiàn)的窍帝。當(dāng)數(shù)據(jù)改變刷新界面時需要調(diào)用{setState(() {});(重新刷新(渲染)勋锤!)}
更形象的描述上述(有狀態(tài)的)兩個方法可以通俗的理解為:
1.比如StateManagerDemo 里面指定義了Label 和 Image 等
2._SMDState 里面會將Label 和 Image 等需要顯示成什么樣子渲染出來
QQ:522608370
Flutter (二)布局
Flutter (三) 狀態(tài)管理
Flutter (四) Map轉(zhuǎn)模型
Flutter (五) 網(wǎng)絡(luò)請求
Flutter (六) 保留界面狀態(tài)
Flutter (七) 混合開發(fā) [配置]
Flutter (八) 混合開發(fā) [Flutter完整項目嵌入到原生]