Flutter Tree

A.Flutter Tree (Flutter包含三种树)

A1.Widget:

存放渲染内容、视图布局信息,widget 的属性最好都是 immutable

A2.Element:

存放上下文,通过 Element 遍历视图树,Element 同时持有 Widget 和 RenderObject

A3.RenderObject

根据 Widget 的布局属性进行 「布局(layout)」、「绘制( paint)」出Widget 传入的内容

下面通过画的图来了解一下:

这个3棵树的关系是Futter在构建的时候首先会创建Widget这个棵树,然后通过WidgetTreeRoot构建ElementTree,再更具ElmentTreeRoot构建RenderTree.RendetTree就会把最终的显示效果展现给大家。


1.所有的Widget 最终都会被ComponentElment持有,而ComponentElment最终都实现了BuildContext.也就是说Elment就是BuildContext.

2.StatelessWidget和StatefulWidget本质上一样的都是@immutable的之所以StatefulWidget本称做有状态变化是因为StatefulWidget继承了State,用于记录StatefulWidget会变化的状态,并且根据状态的变化,构建出新的Widget。

3.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。