如何在Flutter上实现高性能的动态模板渲染

作者:闲鱼技术-光酒

背景

最近小组在尝试使用一套自定义的DSL,通过动态模板下发,实现Flutter端的动态化模板渲染;本来以为只是DSL到Widget的简单映射和数据绑定,但实际跑起来的效果出乎意料的差,列表卡顿严重,帧率丢失严重。这就让我们不得不深入Flutter的Framework层,去了解Widget的创建、布局以及渲染的过程。

为什么Native可行的方案在Flutter效果这么差

在iOS和Android开发中,DSL到Native的方案其实并不陌生;Android中,我们就是通过编写XML文件来描述页面布局。Native的这种映射的方案,为什么在Flutter上,效果变得如此糟糕呢?

先通过一个简单的示例来看一下我们DSL的定义:

DSL

可以看到DSL的设计与Android中的XML很相似,在我们的DSL中,每个节点的width和h

猜你喜欢

转载自yq.aliyun.com/articles/718789