Flutter瀑布流及通用列表解决方案
瀑布流及通用列表解决方案在Flutter中成为了解决复杂布局过程及基础能力扩充的热门话题。闲鱼业务中大量瀑布流场景的出现,使得使用原生的ListView和GridView显得捉襟见肘。社区中流行的瀑布流解决方案,主要基于SliverMultiBoxAdaptor进行自定义布局,但缺乏复用机制,导致在复杂场景下出现重复布局问题。这些解决方案在性能、生命周期管理、打点曝光等基础功能上仍有待完善。
为了应对这些挑战,我们迫切需要一个更加通用且能够解决复杂布局问题的同时增强基础能力的列表视图解决方案。在Flutter中,列表视图基于Scrollable、Sliver、和Viewport的布局体系进行构建。Scrollable负责监听手势输入,Viewport则作为管理多Sliver的容器,Sliver负责具体的布局计算。
瀑布流的实现逻辑依赖于继承SliverMultiBoxAtaptor,充分利用其将SliverConstraints转换为BoxConstraints的能力,并借助SliverBoxChildManager实现Child的懒加载。瀑布流的核心逻辑围绕三个关键点展开,即Child的顺序布局、边缘Child的管理以及离屏Child的清理。通过记录和管理Child的ParentData,瀑布流能够按照顺序进行布局,优化性能并实现精确的生命周期管理和曝光打点。
然而,瀑布流的底层渲染逻辑过于底层,不利于业务方进行定制。此外,缺乏复用机制导致复杂视图层级下性能下降。我们借鉴了Native的思路,将整体容器划分为三部分:Delegate负责Child生命周期和手势响应、Layout负责布局所有Child、而Reuser在RenderObject层面实现Child类型的复用与局部更新。尽管在开发过程中遇到了一些挑战,如信息传递方式与Native的不一致,但我们正积极寻求解决方法,并期待在后续的文章中与大家分享更多进展。
在性能数据方面,应用于主搜索页的瀑布流解决方案相较于原生实现了约1.5帧的提升。尽管内存使用略有增加,但整体性能表现良好。展望未来,Flutter列表视图仍有改进空间,如瀑布流中的scrollTo(int index)功能、内存管理等问题。闲鱼在Flutter化的道路上仍有很长的路要走,我们将持续优化并探索更高效、更灵活的解决方案。
多重随机标签
全国大学生绿色建筑创意设计大赛比赛介绍 在东北大学秦皇岛分校就读是一种什么样的体验 简述工程设计的步骤 贷上钱是什么公司 电视应用优化需要网络支持吗 特价手机是什么意思 长沙自驾游旅游攻略 holika holikaholika holika 开发网贷平台系统一般多少钱主要有哪些费用 国内大数据技术比较厉害的公司求推荐 孙伟的工作经历 广东方言仔仔是什么意思 在网站里注册要不要钱啊 伊利集团当初是怎么筹资的 clipchamp是什么软件 photoshopcs4中文版多功能教材图书目录 有什么变化 请求英语高手的帮助 运城企业网站建设有哪些开发制作方式 上海蜂道网络科技有限公司怎么样 sop手机好还是oppo手机好 偃师一高和伊川一高哪个好 2021年宝鸡各区县gdp排行榜 宝鸡市的gdp是多少 宝鸡哪个区县发展最好 深圳市南山区司法局政务公开 新网站是怎么从零开始建设的有哪些建站流程 cmyk 穿越火线的活动专区点了后变的很小字也看不清了有些活动还不能领枪因为字太小怎么办 如何让登陆我网站的用户自己能在网页上发布信息 如何弘扬中华优秀传统文化 关于html中a标签文字格式的问题