Flutter框架简介



Rendering Pipeline
本文主要介绍build、layout、paint的三个阶段。
视图树
Widget&Element&RenderObject
Flutter视图树包含了三种树,上图只是介绍了三颗树的基础class的对应关系和功能介绍。
创建树






更新树
为什么widget都是immutable?
Flutter界面开发是一种响应式编程,主张simple is fast,Flutter设计的初衷希望数据变更时发送通知到对应的可变更节点(可能是一个StatefullWidget子节点,也可以是rootWidget),由上到下重新create widget树进行刷新,这种思路比较简单,不用关心数据变更会影响到哪些节点。
widget重新创建,element树和renderObject树是否也重新创建?
widget只是一个配置数据结构,创建是非常轻量的,加上Flutter团队对widget的创建/销毁做了优化,不用担心整个widget树重新创建所带来的性能问题,但是renderobject就不一样了,renderobject涉及到layout、paint等复杂操作,是一个真正渲染的view,整个view 树重新创建开销就比较大,所以答案是否定的。
来源:oschina
链接:https://my.oschina.net/u/3611008/blog/1825983