首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Flutter 3.0 之 PlatformView :告别 VirtualDisplay ,拥抱 TextureLayer

Flutter 3.0 发布之前,我们通过 《Flutter 深入探索混合开发的技术演进》 盘点了 Flutter 混合开发的历史进程, 在里面就提及了第一代 PlatformView 的实现 VirtualDisplay...即将被移除,而随着最近 Flutter 3.0 的发布,这个变更正式在稳定版中如期而至,「所以今天就详细分析一下,新的 TextureLayer 如何替代 PlatformView」 。...简单地说,如下图所示: 现在 PlatformViewsController 在加载 PlatformView 时, 在 createForTextureLayer方法里会先创建一个 PlatformViewWrapper...FrameLayout ,主要作用就是:通过 addView添加原生控件,然后「在draw方法里通过super.draw(surfaceCanvas);将 Android View 的 Canvas 替换成PlatformView...在 PlatformView 创建时,Flutter 会为其创建一个SurfaceTexture 用于生成 Surface,相当于是在内存里新建了一个画板。

1.4K30

5分钟彻底搞懂FlutterPlatFormView与Texture

想要在flutter想显示原生的东东,大家知道,一般有两种方式,一种是PlatformView,另外一种是Texture(俗称外接纹理)。...PlatformView https://api.flutter.dev/flutter/widgets/AndroidView-class.html 主要适用于flutter中不太容易实现的widget...Texture Texture class - widgets library - Dart API 既然有PlatformView可以在flutter中显示原生的view,我们为什么还需要Texture...首先,我们看下flutter创建一个PlatformView做了些什么 为了减少叙述,这里直接拿AndroidView来分析 const AndroidView({ Key key, @...PlatformView上的点击事件是如何从FLutter传递到原生的 确实你肯定也会好奇,那点击事件通过FLutter这边传递到原生的呢,其实,背后的实现是通过消息通道,将点击事件发送过去。

13.5K147
您找到你想要的搜索结果了吗?
是的
没有找到

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

作为系列文章的第二十篇,本篇将结合官方的技术文档科普 Android 上 PlatformView 的实现逻辑,并且解释为什么在 Android 上 PlatformView 的键盘总是有问题。...文章汇总地址: Flutter 完整实战实战系列文章专栏 Flutter 番外的世界系列文章专栏 1、为什么有 PlatformView 因为 Flutter 的实现在概念上类似于 Android...这意味着默认情况下 Flutter UI 永远不会包含 Android Native 的控件,也就是说无法在 Flutter 中集成如 WebView 或 MapView 这些常用的控件。...通过从 VirtualDisplay 输出中获取纹理,并将其和 Flutter 原有的 UI 渲染树混合,使得 Flutter 可以在自己的 Flutter Widget tree 中以图形方式插入 Android...3、总结 PlatformView 的实现模式增加了 Flutter 的生命力和活力,但是相对的也引出了很多问题,比如 #webview-keyboard、#webview、#platform-views

13.3K20

Flutter 1.20 下的 Hybrid Composition 深度解析

在以前的 《Android PlatformView 和键盘问题》 一文中介绍过混合开发上 Android PlatformView 的实现和问题,原本 Android 平台上为了集成如 WebView...android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import io.flutter.plugin.platform.PlatformView...; import io.flutter.plugin.platform.PlatformView; import io.flutter.plugin.platform.PlatformViewFactory...image 另外还有一个有趣的现象,那就是当 Flutter 有不只一个默认的控件本被显示在一个 PlatformView 区域上时,那么这几个控件会共用一个 FlutterImageView 。...(这部分内容可见 《 Flutter 画面渲染的全面解析》) 其实还有很多的实现细节没介绍,比如: onDisplayPlatformView 方法,也就是在展示 PlatformView 时,会调用

2.1K60

Flutter 深入探索混合开发的技术演进

关于 Flutter 混合 PlatformView 的实现已经介绍过两次,随着 5 月份谷歌 IO 的接近,新的 PlatformView 实现应该也会随之而来,本次就从头到尾来一个详细的关于 PlatformView...image.png 但是这个“占位”显示的思路,也起到了一定的作用,在后续 Flutter 支持原生 PlatformView 上起到了带头的作用。...Flutter 初步支持原生控件 为了让 Flutter 真正走向大众化,官方开始推出了官方基于 PlatformView 的系列实现,比如: webview_flutter ,而这个实现 “缝缝补补...,而当你还需要再 PlatformView 上渲染 Flutter 自己的 Widget 时,Flutter 就会通过再叠加一个 FlutterImageView 来承载这个 Flutter Widget...我们调整两个灰色 RE 的位置,让 PlatformView 的灰色 RE 和 Flutter 的红色 RE 交替出现。

1K10

Fluttter 混合开发下 HybridComposition 和 VirtualDisplay 的实现与未来演进

对于使用过 Flutter 的开发来说,应该对在 Flutter 混合开发中,通过 PlatformView 接入原生控件的方式并不陌生,而如果你是从 Flutter 1.20 之前就开始使用 Flutter...里 PlatformView 实现的变迁和未来调整,首先这个问题的起因是因为: virtual displayes 和 hybrid composition 两种 PlatformView实现混合使用...只直接通过原生的 addView 方法将 PlatformView 添加到 FlutterView ,这就不需要什么 surface 渲染再去获取的开销,而当你还需要再 PlatformView...通过 PlatformView 直接就通过原生的 addView 方法添加到 FlutterView 上; 而红色的 Flutter 的 Text 控件因为和 PlatformView没交集,...所以还是 Flutter 原本的渲染逻辑; 黄色和蓝色的 Flutter 控件,因为和 PlatformView 有交集,所以通过新的 FlutterImageView 做承载渲染。

1.1K10

flutter图片加载内存优化,我只是很馋原生缓存的图片而已

首先,我们了解到flutter为我们提供了一个PlatformView,在Android端叫做AndroidView,在iOS端叫做UIKitView。...这个PlatformView就是flutter官方为了解决flutter层去使用原生空间而提供的一个控件。所以,我们只需要做一个插件去封装原生的ImageView即可。...通过PlatformView Android端的文档,我们了解到: The Android view object is created using aPlatformViewFactory....的PlatFormView的实现,看看具体实现代码 public class FlutterImageView implements PlatformView, MethodChannel.MethodCallHandler...[切换效果] 可以看到,正如PlatFormView文档所的那样,使用原生view嵌入到flutter代价是有点昂贵到,从原生切回flutter图片展示是秒显示,而从flutter切回原生有延时,但是我们获得的收益是利用了原生图片加载框架中缓存的图片

7.3K122

干货 | Flutter 地图在携程的最佳实践

插件使用了 PlatformView 将原生地图嵌入到 flutter 页面中,在 flutter 层为 UIKitView、AndroidView,native 在生成地图后根据 viewId 初始化...3.1 什么是PlatformView PlatformView 是允许原生组件嵌入到 Flutter 页面的一种技术,能够让我们将一些原生成熟组件、flutter UI 框架难以实现的地图、WebView...Flutter 提供了 Virtual Display、Hybrid Composition 两种方式实现 PlatformView。...3.2 PlatformView 实现原理 1)flutter 渲染流程 在介绍 Hybrid Composition 实现之前,先通过下图大致了解下 flutter 的渲染流程。...混合开发时,当 A 页面中使用 platformview,开启新容器跳转到 flutter B 页面,platformView 会出现短暂的白屏,从 A 页面跳转 native 页面不会出现。

52610

最佳实践丨Flutter音视频开发实践

Flutter基础介绍 Flutter简介 Flutter 是 Google 开源的 UI 工具包,帮助开发者通过一套代码库高效构建多平台应用,支持Android、IOS、Web、Linux app。...这里 Flutter 提供了两个方案 PlatformView :是 Flutter 官方提供的一个可以嵌入 Android 和 iOS 平台原生 View 的 widget。...主要实现思路是先利用 PlatformView 构建了创建 Native View 的通道: ? 然后构建了向 Native View 传递方法的通道(如开始音视频渲染、停止音视频渲染) ?...PlatformView 底层用的也是纹理 Texture,它中间多了一层VirtualDisPlay,它会将TXCloudVideoView 的每个像素流经附加的中间图形缓冲区然后输出到 Surface...纯Widget设计 封装 PlatformView 将其设计成一个视频渲染的Widget,把开始视频渲染封装到 SDK 内部,创建即渲染,不好的地方是视频渲染是一个单独的Widget 类,但是停止视频渲染在主类文件方法中

1.8K10

牛赞:音视频前端跨平台技术应用

PlatformView:主要适用于Flutter中不太容易实现的组件,如Webview、视频播放器、地图等,给Flutter提供了嵌入Android和IOS平台原生view的能力。...在之前Flutter技术设施尚不成熟时,PlatformView也为其注入了强大的生命力,在Native端不易实现的组件都可以通过PlatformView方案嵌入原生平台view中。...原生SDK提供了视频渲染view组件,我们只需利用PlatformView的能力,将Native端的视频view嵌入Flutter中即可。...PlatformView在Android端其实是AndroidView,图片下方的第一行参数ViewType用于唯一标识Widget,用于和Android的View建立关联。...实现PlatformView并不复杂,简单了解官方文档后可以利用公式及官方提供的框架代码构造出PlatformView

2.6K10

活动邀请 | TWeb讲师牛赞:Flutter音视频开发实践

我们团队嗅到了这块的机会,运用Flutter这一近两年大火的跨终端框架,提供Flutter版本的音视频sdk,帮助这些中小企业快速拓展线上业务。...Q3 在对 Flutter 音视频开发实践的过程中,有遇到什么困难吗?...开发实践中最大的困难在视频渲染的优化上: 最开始我们是采用PlatformView来渲染视频的,也就是把视频嵌入到Flutter中进行渲染,但发现GPU消耗比较高。...于是我们仔细研究了PlatformView实现的原理,其实对于安卓来说,PlatformView的底层也是用外接纹理来渲染的。...Q5 对于Flutter技术的初学者,你有什么样的建议? 官方文档是最好的老师,它会把Flutter框架的底层原理都介绍的很清楚,还提供了代码实践。Dart 也是 Flutter 的基础。

80430

Flutter 音视频播放器的实现思路及设计理念

可能很大一部分同学都会和我一样首先跳出来一个词 —— PlatformView 。...确实,PlatformView看起来是个不错的方案,PlatformView作为一个在Flutter 1.0即发布的技术方案,算是比较成熟且上手较快的方案。...),Flutter会给每一个Texture分配一个id,同时Flutter中提供了一个Texture组件。...但可以保证每位小伙伴都看得懂,并且看完以后再看Android部分也是思路清晰(亲测有效 ) FLTVideoPlayer   首先我们可以看到源码中封装了一个叫FLTVideoPlayer的类,很显然,如果仅仅是PlatformView...附上一张流程图,方便大家理解:   那么我们在选择实现方案时是选择PlatformView还是Texture呢?这里引用一张图可以让各位更好的了解。

3.1K40

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券