Flutter中ListView基于其复用原理的应用探讨
发布时间
阅读量:
阅读量
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开发中当App中仅有一个text元素时 其创建流程大致如下

之后会执行updateChild方法中

还没有任何评论哟~
