生命周期的基本概念
什么是生命周期
说白了就是回调方法
让你知道我封装好的这个Widget处于什么样的状态
有什么作用
监听Widget事件
初始化数据
- 创建数据
- 发送网络请求
内存管理
- 销毁数据、销毁监听者
- 销毁Timer等
Widget的生命周期
Staleless
构造方法
build方法
Stateful(包含两个对象Widget、State)
Widget构造方法
Widget的CreateState
State的构造方法
State的initState方法
didChangeDependencies方法 (改变依赖关系)
- 依赖的InderitedWidget发生变化后,方法会被调用
State的build
- 当调用setState方法,会重新调用build进行渲染
当Widget销毁是,调用State的dispose方法
Widget的渲染原理
并不是所有的Widget都会被独立渲染!只有继承RenderObjectWidget的才会创建RenderObject对象! 在Flutter渲染的流程中,有三颗重要的树!Flutter引擎是针对Render树进行渲染!
Widget树、Element树、Render树
每个Widget都会创建一个Element对象
- 隐式调用createElement方法。Element加入Element树中,它会创建三种Element
RenderElement主要是创建RenderObject对象
继承RenderObjectWidget的Widget会创建RenderElement
- 创建RanderElement
- Flutter会调用mount方法,调用createRanderObject方法
StatefulElement继承ComponentElement
StatefulWidget会创建StatefulElement
- 调用createState方法,创建State
- 将Widget赋值给state
- 调用state的build方法 并且将自己(Element)传出去
build里面的context 就是Widget的Element !
StatelessElement继承ComponentElement
StatelessWidget会创建StatelessElement
- 主要就是调用build方法 并且将自己(Element)传出去