飞天发布时刻:2024年 Forrester 公有云平台Wave™评估报告解读 了解详情
写点什么

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

评论

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

A100 买不到了,只有小显卡怎么训大模型

MegEngineBot

深度学习 开源 大模型 显卡、gpu MegEngine

ITSM | Atlassian被Gartner评为IT服务管理平台魔力象限的领导者

龙智—DevSecOps解决方案

Atlassian ITSM Gartner

Elasticsearch dynamic_templates 实战 通用配置

alexgaoyh

elasticsearch dynamic_templates index template

【IntelliJ IDEA】idea中的插件之一:Free Mybatis plugin跳转插件的使用(方便在Dao接口和Mappper XML文件之间进行切换)

No8g攻城狮

插件 IntelliJ IDEA

搞懂设计模式——代理模式 + 原理分析

京东科技开发者

jdk 代理 cglib 框架 企业号 2 月 PK 榜

chatgpt背后的人工和智能

刘旭东

ChatGPT

用 AI 取代人工?或许 LLMs 可以给你答案

鼎道智联

#人工智能

前端leetcde算法面试套路之树

js2030code

JavaScript LeetCode

前端leetcde算法面试套路之堆

js2030code

JavaScript LeetCode

简单好上手!1分钟带你体验Apipost

叶小柒

同步计数器设计与建模

timerring

FPGA

react源码分析:babel如何解析jsx

flyzz177

React

Spring Data + DDD = 王炸!!

程序知音

一文详解TensorFlow模型迁移及模型训练实操步骤

华为云开发者联盟

人工智能 华为云 昇腾AI 企业号 2 月 PK 榜 华为云开发者联盟

用javascript分类刷leetcode21.树(图文视频讲解)

js2030code

JavaScript LeetCode

Node.js 应用全链路追踪技术——全链路信息存储

vivo互联网技术

nodejs OpenTracing zipkin

高性能存储SIG月度动态:ublk完成POC、dsms-storage在Anolis OS上成功适配

OpenAnolis小助手

技术 高性能存储 龙蜥社区 sig 月报

云小课|GaussDB(DWS)数据存储尽在掌控,冷热数据切换自如

华为云开发者联盟

开发 华为云 数据存储 企业号 2 月 PK 榜 华为云开发者联盟

区块链DEFI质押挖矿系统开发流程丨土狗币智能合约系统开发源码方案

I8O28578624

react源码中的生命周期和事件系统

flyzz177

React

我们从 CircleCI 安全事件获得的3个经验教训

SEAL安全

安全 软件供应链 企业号 2 月 PK 榜 端点保护 恶意软件检测

携程MySQL迁移OceanBase最佳实践|分享

OceanBase 数据库

数据库 oceanbase

直呼牛逼!阿里最新SpringBoot进阶笔记涵盖了SpringBoot所有骚操作

程序知音

Java ssm springboot Java后端 Java进阶

Flomesh Ingress 使用实践(三)多租户 Ingress

Flomesh

命名空间 多租户 ingress Ingress Controller

从历代GC算法角度刨析ZGC

京东科技开发者

ZGC JVM GC算法 垃圾回收算法 企业号 2 月 PK 榜

Flink Table Store 典型应用场景

Apache Flink

大数据 flink 实时计算

KCL 与其他 Kubernetes 配置管理工具的异同 - Helm 篇 - Helm 篇 [一个自研编程语言能做什么?(系列 3)]

Peefy

Kubernetes DevOps 编程语言 #开源

动态防御|零信任安全的自动化枢纽

权说安全

网络安全 零信任 动态防御

react源码中的协调与调度

flyzz177

React

量化Python交易系统开发技术,合约量化系统开发源码部署方案

I8O28578624

【IntelliJ IDEA】idea常用快捷键汇总

No8g攻城狮

IDEA intellij IntelliJ IDEA

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