Flutter (三) 状态管理
2020-01-06 本文已影响0人
MissBear灬
简介:Flutter 界面状态分为无状态和有状态两种
1.无状态(StatelessWidget):界面一旦渲染出来就不会再改变
2.有状态(StatefulWidget) :界面可以随着数据的变化而变化
1.StatelessWidget(无状态)
在build(BuildContext context) 里面子部件的样式或者状态是不会再发生改变。 如果想改变必须将StateManagerDemo干掉、重新创建一个.事例代码如下:
class StateManagerDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container();
}
}
2.StatefulWidget(有状态)
StatefulWidget就会告诉Flutter 下面代码中StateManagerDemo 是会发生变化的.事例代码如下:
//描述UI 定义外观的 这个类里面显示什么样子是由下面_SMDState这个状态管理者说了算
class StateManagerDemo extends StatefulWidget {
//构造方法
@override
State<StatefulWidget> createState() {
return _SMDState();//返回状态管理者
}
}
//管理状态 当_SMDState里面的数据发生变化的时候。就会刷新上面StateManagerDemo
class _SMDState extends State<StateManagerDemo>{
//状态-->数据
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');
},
),
);
}
}
注:上面方法是成对出现的。当数据改变刷新界面时需要调用{setState(() {});(重新刷新(渲染)!)}
更形象的描述上述(有状态的)两个方法可以通俗的理解为:
1.比如StateManagerDemo 里面指定义了Label 和 Image 等
2._SMDState 里面会将Label 和 Image 等需要显示成什么样子渲染出来
QQ:522608370
Flutter (二)布局
Flutter (三) 状态管理
Flutter (四) Map转模型
Flutter (五) 网络请求
Flutter (六) 保留界面状态
Flutter (七) 混合开发 [配置]
Flutter (八) 混合开发 [Flutter完整项目嵌入到原生]