一、生命周期的基本概念
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
的才会创建RenderObjec
t对象!
在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
)传出去
- 主要就是调用