flutter的渲染原理

flutter的4颗树
1.Widget树,Widget相互关联形成的书
2.Element树,根据Widget树生成一个Element树,树上的结点都继承Element类
3.Render树,根据Element树生成Render树,树上的结点都继承RenderObject类
4.Layer树,根据Render树生成Layer树,树上的结点都继承Layer类

每个widget都会隐式调用createElement方法创建一个Element,该Element会加入Element树。
然后在mount方法中调用createRenderElement方法来创建RenderObject对象

注意:
1.StatefulWidget会创建一个StatefulElement,该element继承ComponentElement。通过调用createState方法来创建state,将widget赋值给state,调用state的build方法将element传出去,即build里面的context就是Widget的element。
2.StatelessWidget同样会创建一个StatelessElement,该element继承ComponentElement,主要是调用build方法将element传递出去。
3.并不是所有的Widget都会被独立渲染!只有继承RenderObjectWidget的才会创建RenderObject对象!所以StatefulWidget与StatelessWidget都不会被渲染。

你可能感兴趣的:(flutter的渲染原理)