美文网首页
flutter widget、Element、 RenderOb

flutter widget、Element、 RenderOb

作者: liboxiang | 来源:发表于2019-06-19 11:43 被阅读0次

    https://juejin.im/post/5b9a7d396fb9a05d3154fa5a

    • Widget实际上就是Element的配置数据,Widget树实际上是一个配置树,而真正的UI渲染树是由Element构成;不过,由于Element是通过Widget生成,所以它们之间有对应关系,所以在大多数场景,我们可以宽泛地认为Widget树就是指UI控件树或UI渲染树。

    • 一个Widget对象可以对应多个Element对象。这很好理解,根据同一份配置(Widget),可以创建多个实例(Element)。

    • 从创建到渲染的大体流程是:根据Widget生成Element,然后创建相应的RenderObject并关联到Element.renderObject属性上,最后再通过RenderObject来完成布局排列和绘制。

    flutter使用RenderObjects管理传统UI对象的许多职责(例如维护布局的状态)。RenderObjects在帧之间保持不变,flutter的轻量级Widgets告诉框架在状态之间改变RenderObjects。

    Layer

    iOS的每一个UIView都有一个layer,flutter的render object不一定存在layer,一般情况下一个renderObject子树都渲染在一个layer上,那么什么renderObject具有layer,子renderObject怎么渲染到这个layer?

    • 当一个renderObject的 alwaysNeedsCompositing == true 或者isRepaintBoundary == true,renderOject会有对应的compositing layer
    • 子renderObject会对目标layer返回对应的offsetLayer, 目标compositing layer再根据offset合成一个渲染的纹理buffer

    相关文章

      网友评论

          本文标题:flutter widget、Element、 RenderOb

          本文链接:https://www.haomeiwen.com/subject/sgztoqtx.html