使用外接纹理方案,让Native进行图片加载,并最终显示到Flutter页面上的插件。
优点:
-
对接Native上的图片加载框架,统一Flutter和Native的产生的文件缓存
-
缓解Flutter图片加载产生的内存问题
-
因为使用Native进行加载,只要Native端的图片加载能够支持的格式,都能在Flutter端显示
缺点:
-
外接纹理方案,无法做截图
-
依赖Flutter SDK对于外接纹理的渲染,部分Flutter版本存在渲染的兼容问题
采用Native进行Fit效果处理的方案,Native收到图片加载请求,根据其中的fit
参数直接对图像进行处理,然后绘制到Surface上。
不考虑Flutter层使用FittedBox
进行处理的原因是,不想在Flutter层缓存可能超出显示区域的纹理,例如cover
效果,如果Flutter层处理,那么纹理就必需是完整的缩放后的大小,然后FittedBox
才能进行显示处理,但这样缓存的纹理的大小就会超过实际显示的大小。
另一方面,Native层的图片加载框架如果本身支持不同fit的内存或文件缓存,也能有效利用起来。
V0.1-alpha
init
-
support gif、ani-webp
-
support background color
-
support different boxfit
-
support the manager of textures based on size
-
improve the demo