Flutter的引擎在构建视图时,无论是底层的框架,还是应用层的代码,在向绘制引擎提供绘制信息的时候都需要一份相应的数据结构。类似于抽象语法树。
Flutter的渲染分为三个部分即约束,绘制,合并。
Layer Tree Flutter的数据结构抽象分为三部分, 分别是 Widget Element RenderObject。
flutter 是通过一次深度遍历来渲染相应的图层的,自RenderObjectTree自上而下的传递Ofsset告诉子视图他们应该有的位置, 然后让子节点开始绘制自己。 每一个RenderObjecg节点的视图可能被绘制到多个图层(缓冲区), 最后合并成图像,被渲染到屏幕上。
重绘:
flutter中的widget是immutable的 也就是说创建了之后是不可更改的,每一次重绘都需要重新创建。
在重绘的时候为了减少资源的消耗,会根据mount标识来绘制相应的widget是否需要刷新。
同级的stateless和stateful 如果stateful调用setState则不会影响stateless 如果是对于stateful的子widget 调用setState则会刷新当前stateful下面的statelessWidet
网友评论