Paint过程

经过Build流程,Render Tree中绘制相关的基础信息已经完成更新;经过Layout流程,Render Tree中每个节点的大小和位置完成计算与存储,接下来进入Paint流程:基于Layout的信息生成绘制指令。

Render Tree和Layer Tree的对应关系

使用Layer Tree的好处是可以做Paint流程的局部更新。Render Tree中,每个RenderObject对象都拥有一个needsCompositing属性,用于判断自身及子节点是否有一个要去合成的图层,同是还有一个_needsCompositingBitsUpdate字段
用于标记该属性是否需要更新。Flutter在Paint开始前首先会完成needsCompositing属性的更新,然后开始正式绘制。

Read More

Sliver布局模型

在Flutter中,列表的每个Item被称为Sliver。

Flutter常见的列表类最终都有Scrollable类实现,而该类内部包含RawGestureDetector等一系列负责处理手势、响应滑动的类。

RenderViewport布局流程分析

RenderViewport关键类及其关系

Read More