AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

RTC Dev Meetup:Flutter 开发实战与前景展望(四)

  • 2019-11-30
  • 本文字数:1103 字

    阅读完需:约 4 分钟

RTC Dev Meetup:Flutter 开发实战与前景展望(四)

2、 和 ReactNative 很有侵入性相比, Flutter 就很巧妙了。


如下图所示,安装过的插件会出现在 .flutter_plugins 文件中,然后通过读取文件,动态在 setting.gradle 和 flutter.gradle 中引入和依赖:





所以这时候我们可以参考打包,修改我们的 gradle 脚本,利用 fat-aar 插件将本地 projcet 也打包的 aar 里。



3、混合开发的最大痛点是什么?


肯定是堆栈管理!!! 所以项目开发了 flutter_boost 来解决这个问题。


  • 堆栈统一到了原生层。

  • 通过一个唯一 engine ,切换 Surface 渲染显示。

  • 每个 Activity 就是一个 Surface ,不渲染的页面通过截图缓存画面。


flutter_boost 截止到我测试的时间 2019-05-16, 只支持 1.2 之前的版本


四、PlatformView

混合开发除了集成到原生工程,也有将原生控件集成到 Flutter 渲染树里里的需求。


首先我们看看没有 PlatformView 之前是如何实现 WebView 的,这样会有什么问题?


如下图所示,事实上 dart 中仅仅是用了一个 SingleChildRenderObjectWidget 用于占位,将大小传递给原生代码,然后在原生代码里显示出来而已。



这样的时候必定会代码画面堆栈问题,因为这个显示脱离了 Flutter 的渲染树,通过出现动画肯定会不一致。

4.1 AndroidView

AndroidView -> TextureLayer,利用 Android 上的副屏显示与虚拟内存显示原理。


共享内存,实时截图渲染技术。


存在问题,耗费内存,页面复杂时慢。


这部分因为之前以前聊过,就不赘述了

三、Flutter Web

RN 因为是原生控件,所以在 react 和 react native 整合这件事上存在难度。


flutter 作为一个 UI 框架,与平台无关,在 web 上利用的是 dart2js 的能力。 比如 Image


  • 因为 Flutter 是一套 UI 框架,整体 UI 几乎和平台无关,这和 React Native 有很大的区别。(我在开发过程中几乎无知觉)

  • 在 flutterweb 中 UI 层面与渲染逻辑和 Flutter 几乎没有什么区别,底层的一些区别如: flutterweb 中的 Canvas 是 EngineCanvas 抽象,内部会借助 dart2js 的能力去生成标签。

  • React Native 平台关联性太强,而 Flutter 在多平台上优势明显。我们期待官方帮我们解决大部分的适配问题。



Flutter 的平台无关能力能带来什么?

1、某些功能页面,可以一套代码实现,利用插件安装引入,在 web、移动 app、甚至 pc 上,都可以编译出对应平台的高性能代码,而不会像 Weex 等一样存在各种兼容问题。


2、在应用上可以快速实现“降级策略”,比如某种情况下应用产生奔溃了,可以替换为同等 UI 的 h5 显示,而这些代码只需要维护一份。


资源推荐


Github : https://github.com/CarGuo


RTC 开发者社区 : https://rtcdeveloper.com


本文转载自公众号声网 Agora(ID:shengwang-agora)。


原文链接:


https://mp.weixin.qq.com/s/GT3w6zjOmfh_0zRZkSkF6g


2019-11-30 16:53999

评论

发布
暂无评论
发现更多内容

TiDB 6.1 发版:LTS 版本来了

PingCAP

分布式

Flink CDC + OceanBase 全增量一体化数据集成方案

Apache Flink

大数据 flink 编程 流计算 实时计算

可视化技术在 Nebula Graph 中的应用

NebulaGraph

可视化 图数据库 知识图谱

吉林长春等保测评公司有几家?详细地址在哪里?

行云管家

网络安全 等级保护 等保测评 等保测评机构 吉林

哈希彩竞猜娱乐游戏俱乐部系统开发详情

开发微hkkf5566

云原生中间件 — Kafka Operator 总览篇

Daocloud 道客

云原生 开源项目 消息中间件 上云 Strimzi Kafka Operator

漫谈软件架构

韩陆

云原生 领域驱动设计 可观测性 软件架构 事件驱动架构

企业如何建设知识管理系统

小炮

为了写好代码,我坚持了这8条习惯!

Jackpop

私有云和公有云的主要区别有几点?两者哪个更安全?

行云管家

云计算 公有云 私有云 企业上云 云管平台

资金穿透分析

清林情报分析师

数据分析 分析软件 分析工具 资金穿透 资金分析

LoadBalance

Damon

6月月更

常见线程数量的估算方式

snlfsnef

系统设计 线程 多CPU

理解异步

大熊G

JavaScript 前端 6月月更

高考后,学会这种能力,让你收益终生!

图灵教育

数学 高考 数学建模

TASKCTL关于 "Fastjson反序列化远程代码执行漏洞” 的风险通告

敏捷调度TASKCTL

DevOps ETL算法 大数据平台 反序列化 TASKCTL

小程序开发真的可以取代APP软件开发设计吗?

开源直播系统源码

软件开发 小程序开发

如何最简单、通俗地理解Python的pandas库?

Jackpop

BI的落寞,低代码会重演一遍吗?

ToB行业头条

大数据培训Table API 和 Flink SQL的整体介绍

@零度

flink 大数据开发

字节跳动Dev Better技术沙龙来啦!参与活动赢好礼,限时免费报名中!

字节跳动终端技术

字节跳动 技术沙龙 华泰证券

从感知智能跨越到认知智能,NLP领域要做哪些创新?

澜舟孟子开源社区

人工智能 自然语言处理 nlp 大模型 认知智能

百度评论中台的设计与探索

百度Geek说

庄周梦蝶终非蝶,冷静看待“谷歌AI形成人格”事件

易观分析

谷歌AI

web前端培训Vue面试题分享

@零度

Vue 前端开发

什么是数据流向分析?

清林情报分析师

数据分析 流向分析 数据流向 资金流向 可视化分析

信息化App在「左」,数字化App在「右」

Speedoooo

App 数字化 信息化

如何从零开始开发一款chrome扩展?

Jackpop

什么是面向对象编程?终于懂了

Jackpop

使用APICloud AVM多端框架开发消防检查助手App项目实践分享

YonBuilder低代码开发平台

APP开发 APICloud 多端开发 应用开发 avm.js

如何使用物联网低代码平台进行系统管理?

AIRIOT

物联网 低代码开发 低代码开发平台

RTC Dev Meetup:Flutter 开发实战与前景展望(四)_文化 & 方法_声网_InfoQ精选文章