Flutter-布局的树结构分析

Flutter布局的树结构

flutter中有三棵树,分别是Widget树、Element树、RenderObject树。
其中Widget中只存放基本的配置信息,可以当作就是一个数据结构,而RenderObject是实际渲染使用的,layout和paint等操作都是RenderObject完成的。
Element则是存放上下文的,同时持有Widget和RenderObject,并且负责处理state的状态变化。

State的生命周期

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4FJkc64w-1600399525671)(/images/state_lifecycle.jpg)]

setState

State.setState() -> _element.markNeedsBuild()

setState就是将该widget标记为dirty,然后会在下一帧进行rebuild

从创建到渲染的大体流程是:根据Widget生成Element,然后创建相应的RenderObject并关联到Element.renderObject属性上,最后再通过RenderObject来完成布局排列和绘制。
他们的依赖关系是:Element树根据Widget树生成,而渲染树又依赖于Element树

Element的生命周期

1、Framework 调用Widget.createElement创建一个Element实例,记为element
2、Framework 调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值