Flutter StatelessWidget和Stateful
2020-07-16 本文已影响0人
有梦想的狼
- 什么是生命周期:
1、生命周期是人家封装好的一套接口,然后提供的回调方法,当发生变化时,我们只需要实现它。(按通俗的讲,就是回调方法(函数))。
2、让你知道我封装好的这个widget它处于什么样的状态了! - 那生命周期有什么作用
1、监听Widget的事件
2、初始化数据
(1)、创建数据
(2)、发送网络请求
3、内存管理
(1)、销毁数据、销毁监听者
(2)、销毁Timer等等
StatelessWidget生命周期
- 构造函数
- build方法
class MyHomePages extends StatelessWidget{
final String title;
MyHomePages({this.title}){
print("构造函数被调用");
}
@override
Widget build(BuildContext context) {
// TODO: implement build
print("build方法被调用了");
return Center(
child: Text(title),
);
}
}
打印结果为
flutter: 构造函数被调用
flutter: build方法被调用了
StatefulWidget生命周期
1、widget的构造方法
2、widget的createState
方法
3、state的构造方法
4、state的initState
方法,(重写该方法时,必须要先调用super. initState()
)
5、didChangeDependencies方法
,分两种情况:
(5.1)、调用initState
方法后,会调用该方法,
(5.2)、从其他widget
中依赖一些数据发生改变
时,比如用InheritedWidget
,provider
来监听数据的改变)
6、state的build方法
(当调用setState
方法,会重新调用build
进行渲染)
7、state的deactivate
方法(当state被暂时从视图移除的时候会调用,页面push
走、pop
回来的时候都会调用。因为push、pop会改变widget在视图树位置,需要先移除再添加。重写该方法时,必须要先调用super.deactivate()
)
8、state的dispose
方法。页面被销毁的时候调用,如:pop
操作。通常情况下,自己的释放逻辑放在super.dispose()
之前,先操作子类在操作父类。