“ needsCompositing”位如何工作?

时间:2019-08-20 15:57:31

标签: flutter

我试图更好地理解Flutter框架如何解释“ needsCompositing” /“ alwaysNeedsCompositing”位。

当在渲染对象上设置了needsCompositing位时,每个祖先的渲染对象是否也需要合成(即,它自己的复合层)?是因为这些对象中的任何一个都可能添加了一个片段,该片段可能会影响新合成的子对象,并且为了确保做到这一点,必须使用片段 layer 代替?

令人惊讶的是,这似乎是因为一个后代需要合成而为N个渲染对象添加了N个新层。

如果这是真的,我想这解释了为什么您想要将事物组织成一个浅的“重绘边界三明治”。

1 个答案:

答案 0 :(得分:0)

needsCompositing只是要向渲染对象发出信号,通知它是否应该推动某个图层,这取决于对象上设置的属性是否正确。 alwaysNeedsCompositing无条件地说。

它对祖先没有影响-他们可以独立地需要或不需要进行合成,这将再次控制层树的构造方式,以便在引擎端进行合成。

在更新中,我们确实在树上注入了逻辑,以确保事物正确地标记为脏的(直到最近的RepaintBoundary)。但是,如果单个渲染对象从不实际进行合成,则它们可能仅通过将数据进一步泵入树中而不将其needsCompositing设置为true来对此做出响应。