你在使用哪种编程语言?快来投票,亲手选出你心目中的编程语言之王 了解详情
写点什么

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

2019 年 11 月 30 日

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:53210

评论

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

「TcaplusDB知识库」概念(表、键、记录、索引)

TcaplusDB

数据库 技术 数据 TcaplusDB Tcaplus

字节跳动面试官这样问消息队列:高可用、不重复消费、可靠传输、顺序消费、消息堆积,我整理了下

冰河

面试 分布式 中间件 消息队列 一起进大厂

一口气发布十大建网利器,华为打算煲出怎样的5G味道?

脑极体

最新大厂Java面试题库,测试一下你能坚持到哪一面 “美团+字节+腾讯”三面技术问题

Java架构之路

Java 程序员 架构 面试 编程语言

阿里中间件团队技术官手撸笔记,全新演绎“Kafka部署实战”,已开源

Java架构之路

Java 程序员 架构 面试 编程语言

性能优化知多少

圣杰

sql 性能优化 dotnet

区块链电子合同存证,电子合同区块链服务平台

13530558032

Linux入门篇 —— Shell详解

若尘

Linux 命令行 linux操作

又一里程碑!阿里新产SpringBoot笔记,差距不止一点点

Java成神之路

Java 程序员 架构 面试 编程语言

构建“金融+司法”新局面:兴业消费金融区块链电子存证系统正式上线

CECBC区块链专委会

金融

基于grpc手撸一个RPC框架

cloudcoder

Selenium 利用 JS/JQ 操作元素、鼠标键盘事件、Cookie 操作

梦想橡皮擦

Python 28天写作 2月春节不断更 selenium

热点浅谈:低代码开发平台发展前景与市场规模!

优秀

低代码 低代码开发 低代码开发平台

解读云原生技术

xcbeyond

Kubernetes 云原生 服务网格 28天写作

科大讯飞发布全新一代智能办公本X2

Lucien

牛掰!面试不再慌,苦刷这份2020最全的“基础-中级-高级”面试题库,已涨17k

Java架构之路

Java 程序员 架构 面试 编程语言

风口上的量子计算机:核聚变一样的赌局,钻石一样的骗局

脑极体

runtime笔记

Conan

ios

关于央行数字货币若干问题的思考 | 比较

CECBC区块链专委会

数字货币

为什么要学习办公自动化

IT蜗壳-Tango

七日更 28天写作 2月春节不断更 IT蜗壳

【计算机内功修炼】十:线程间到底共享了哪些进程资源

码农的荒岛求生

c c++ 线程 操作系统 进程

深度丨从货币历史看比特币的诞生

CECBC区块链专委会

比特币

一道好题!我觉得面试如果考察「双指针」的话,这题是刚刚好 ...

宫水三叶的刷题日记

LeetCode 数据结构与算法 面试数据结构与算法

诊所数字化:患者数字档案的价值机遇和风险

boshi

数字化医疗 七日更 28天写作

Elasticsearch 查询结果排序

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

Android NativeCrash 捕获与解析

vivo互联网技术

c++ android NativeCrash

简单的网站搭建

很甜回忆

网站

Kalm——基于Kubernetes的部署工具

David

开源 Kubernetes DevOps 运维 运维平台

javascript中的内置对象和数据结构

程序那些事

JavaScript 数据结构 ES6 程序那些事

【2021海量真实校招】软件测试面试真题,(大数据整理)刷完应对各家企业面试完全没有问题!

程序员阿沐

软件测试 面试题 自动化测试 黑盒测试 白盒测试

小程序开发-云开发技术总结

魔王哪吒

小程序 程序员 前端 28天写作 2月春节不断更

围绕“三个问题”开展的网易云音乐数据基础建设

围绕“三个问题”开展的网易云音乐数据基础建设

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