Flutter混合开发——一种另类却高效的的原生View嵌入方法

作者:吉哈达前言随着使用Flutter开发的深入加之其生态还不完善,必然会涉及到使用原生View的情况。为此,Flutter也为我们提供了PlatformView方便我们嵌入原生View,以实现一些flutter暂时不支持的功能,但由此也引发了一些性能问题。Flutter与原生View简介实现这里以Android来做一个简介(如果没用过原生View的话,可以百度教程),当我们需要使用一个Android的view时,我们在android端分别实现你的类 extends PlatformView.
摘要由CSDN通过智能技术生成

作者:吉哈达

前言

随着使用Flutter开发的深入加之其生态还不完善,必然会涉及到使用原生View的情况。为此,Flutter也为我们提供了PlatformView方便我们嵌入原生View,以实现一些flutter暂时不支持的功能,但由此也引发了一些性能问题。

Flutter与原生View简介

实现

这里以Android来做一个简介(如果没用过原生View的话,可以百度教程),当我们需要使用一个Android的view时,我们在android端分别实现

你的类 extends PlatformView你的类 extends PlatformViewFactory

之后再通过registerViewFactory注册你的View,并设置一个ID。

我们在Flutter端,创建一个AndroidView,并通过上面的ID就可以获取到我们创建的androidView,并使用。

原理

那么Flutter使用原生View的背后是怎么实现的呢? 这里可以参考大佬们的文章:

Flutter完整开发实战详解(二十、 Android PlatformView 和键盘问题)

万万没想到——flutter这样外接纹理

从上面的文章我们可以知道,原生View生成texture数据同时自带一个textureId,数据再写入PixelBuffer后,flutter会通过这个ID到PixelBuffer中取到对应的数据并通过skia渲染。

借一张图

流程就是:

GPU->CPU->GPU

这样也就造成了资源的浪费,增加耗时。那么有没有其他的方法呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值