195 字
1 分钟
Widget树&Render树&Element树
Widget 的渲染原理
不是所有的 Widget 都会被独立渲染。只有继承 RenderObjectWidget 的才会创建 RenderObject 对象。
在 Flutter 中,有三个树非常重要, Widget树 、 Render树 、 Element树。Flutter引擎是针对 Render树 进行渲染。
Widget树 、 Render树 、 Element树
-
每一个
Widget都会创建一个Elememt对象- 隐式调用
createElement方法。Element加入Element树中- 它会创建三种
Element
- 隐式调用
-
RenderElement主要是创建RenderObject对象- 继承
RenderObjectWidget的Widget会创建RenderElement Flutter会调用mount方法,调用createRanderObject方法
- 继承
-
StatefulElement继承ComponentElementStatefulWidget会创建StatefulElement- 调用
createState创建State - 将
Widget赋值给state - 调用
state的build方法,并将自己Element传出去build里面的context就是element
-
StatelessElement继承ComponentElementStatelessWidget会创建StatelessElement- 主要就是调用
build方法,并将自己Element传出去