Flutter三棵树之间的关系
众所周知flutter中有三颗非常重要的树形结构,分别为widget树,element树和renderObject树
其中widget树,存放渲染内容,只是一个数据结构。创建和销毁十分轻量,在页面的刷新过程中经常会被重建。就个人而言,可以把widget抽象的理解为一个存放配置信息的map。
element树,同时持有widget和renderObject,存放上下文信息,可以说是widget和renderObject的连接件。
renderObject树,负责layout和paint事件。
显然,相对于widget来说,element和renderObject的创建和销毁会使用相当多的资源,那么在这个整个flutter中,复用的应该是element和renderObject,而复用widget其实是个误区。
widget的创建流程
想要明确复用原理,就要先知道创建原理。举一个最简单的例子,对于app下只有一个text,那么这个text的创建流程是这样的。
根widget调用其build方法
之后会执行updateChild方法中
这里的newWidget就是text,不为空,child由于从未创建过所以为空&#x