一、生命周期的基本概念
1、什么是生命周期
- 说白了就是回调方法(函数)
- 让你知道我封装好的这个
Widget它处于什么样的状态了!
2、有什么作用
- 监听
Widget的事件 - 初始化数据
-- 创建数据
-- 发送网络请求 - 内存管理
-- 销毁数据 销毁监听者
-- 销毁Timer等等
二、Widget的生命周期
1、StatelessWidget的生命周期
- 构造方法
-
Widget build(BuildContext context)方法
2、StatefulWidget(包含两个对象Widget State)的生命周期
-
Widget构造方法 -
Widget的CreateState -
State的构造方法 -
State的initState方法 -
didChangeDependencies方法(改变依赖关系)
-- 依赖的InheritedWidget发生变化之后,方法也会调用 -
State的Widget build(BuildContext context)方法
-- 当调用setState方法。会重新调用Widget build(BuildContext context)进行渲染! - 当
Widget销毁的时候,调用State的dispose
三、Widget的渲染原理
并不是所有的Widget都会被独立渲染!只有继承RenderObjectWidget的才会创建RenderObject对象!
在Flutter渲染的流程中,有三颗重要的树->Widget树 Element树 Render树
Flutter引擎是针对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)传出去
- 主要就是调用