罗湖网站开发,做定制网站,wordpress博客密码,网站公司查询Widget Tree#xff1a; 页面配置信息。 Element Tree#xff1a; Widget tree的实例化对象#xff0c;创建出renderObject#xff0c;并关联到element.renderobject属性上#xff0c;最后完成RenderObject Tree的创建。 RenderObject Tree#xff1a;完成布局和图层绘制… Widget Tree 页面配置信息。 Element Tree Widget tree的实例化对象创建出renderObject并关联到element.renderobject属性上最后完成RenderObject Tree的创建。 RenderObject Tree完成布局和图层绘制输出LayerTree 然后交给skia渲染。 Flutter渲染划分为三棵树的其核心价值是 页面的更新可以根据Element变化的内容只修改对应的RenderObject Tree即进行增量更新。 在三棵树的构建过程中创建RenderObject是最为耗时的操作。Flutter判断是否需要重新创建RenderObject节点主要是根据Element Tree的 runtimeType和key两个字段进行判断。两者任何一个有变化RenderObject节点就需要重建否则只需更新RenderObject节点的属性即可。 如下图所示 当Widget发生变化时对比Element tree上对应位置上新旧Widget是否一致只有不一致时才会重建Element并重建并重新进行RenderObject实例化。即RenderObject Tree只需进行增量的重建即可这就大大提升了渲染效率。