在 Flutter 中,并没有 match _parent 和 match_content 的概念。最初我们的想法很简单,在 Widget 的 build 方法中, 如果属性是 match—parent, 则不断向上遍历,直到找到—个父节点,有确定的宽高值为止;如果属性是 match_content, 则遍历所有的子节点,获取子节点大小,—旦子节点存在 match _content 属性,就会 递归调用下去。 从表面上来看,做好每个节点的宽高计算的缓存,虽然达不到—次性线性布局,但这样的开销也并不是很大。但我们忽略掉了—个很重要的间题:如 dget是immutable 的,只 是包含了视图的配置信息,是非常轻量级的。在 Flutter 中,Widget 会被不断地创建和销毁, 这会导致布局计算非常的频繁。要解决这些问题, 单单处理 Widget 是不够的,需要在 Element 以及 Render Object 上做更多的处理, 这也就是为什么要考虑自定义 Widget 的原因。
资料来源:《闲鱼Flutter技术解析与实战》,下载链接为:https://developer.aliyun.com/topic/download?id=19。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。