写点什么

Flutter 技术在会展云中大显身手

发布于: 2021 年 01 月 14 日

导读


在《会展云技术解读》专题中,我们先发推出了 4 篇文章,分别从安全设计智能推荐系统移动监控等维度深入解读会展云背后的技术能力:


🔗 安全篇——多重安全保障护航云上会展

🔗 设计篇——基于服务设计的线上展览

🔗 智能推荐篇——深度解读智能推荐系统搭建之路

🔗 移动监控篇——面对突发事故,APP如何做好崩溃分析与性能监控?


会展云解决方案覆盖了业务技术平台应用四个层面,业务层面提供科技感十足的云上展厅、多种模式的论坛会议等;应用层面有多种解决方案,直播解决方案、视频会议解决方案、移动研发解决方案等;技术层面依托海量弹性云计算能力和充足可扩展的云存储及带宽资源,集成了多种京东中台平台的能力,有技术中台、数据中台、智能中台及业务中台能力,可快速响应前台应用的需求。


作为云上展会,最终呈现给广大参会者的对外窗口必然是网站、APP、H5、小程序等线上系统,移动开发必然是重中之重。

 

众所周知,Flutter 是谷歌公司提供的跨平台 UI 工具包,支持跨 Android、iOS 等多个平台复用代码,同时允许应用程序直接与基础平台的服务交互。其设计目的是使开发人员能够在不同平台上尽量复用代码,交付高性能的应用。


作为可扩展的分层系统,Flutter 有一系列独立的库,每一个库都依赖于更底层的库。对于操作系统来说,Flutter 应用和其他的原生应用的打包方式相同。平台特定的嵌入器提供一个入口点,和底层操作系统进行协商,访问诸如渲染界面、输入输出、消息事件循环等服务。通过嵌入器,可以将 Flutter 代码作为模块集成到现有应用程序,也可以作为一个完整的应用。


作为 Flutter 的核心组成部分,Flutter Engine 主要由 C++编写,提供了核心 API 的低级实现,包括图像,文本布局,文件和网络 I/O,插件架构以及 Dart 运行时和编译工具链。开发人员通过 Flutter Framework 与 Flutter 交互,该框架提供了一种以 Dart 语言编写的响应式框架,包括一系列丰富的组件、基础库。


(图片来源:Flutter官网)


不久前成功举办的中国国际服务贸易交易会(简称服贸会)首次采取新模式——线上线下展会融合,而服贸会 APP 作为云上展会对外运维的重要窗口,为来自全球不同规模、不同行业的参展商、采购商提供展览展示、论坛会议、洽谈签约的数字平台。


在本次服贸会 APP 开发中,部分功能模块采用 Flutter 开发,我们将 Flutter 实现的功能以一个模块的方式嵌入到主 APP 中运行。Android 以 AAR(Android Archive)的方式嵌入,iOS 以 Framework 的方式嵌入。集成方式非常简单,以 Android 为例:进入 Flutter module 目录,执行 flutter build aar,按照命令的输出结果进行集成。



Flutter module 和原生模块之间通过 Platform Channel 进行通信。Flutter 定义了三种不同类型的 Channel, 分别如下:


名称描述 BasicMessageChannel 支持传递字符串和半结构化信息 MethodChannel 支持通过异步方法调用进行通信 EventChannel 支持通过事件流进行通信


三种 Channel 虽然相互独立,设计上很相似,都包含如下重要的变量:


变量描述 String nameChannel 名称,用作唯一标识 BinaryMessenger   messenger 负责消息的发送和接收 MessageCodec codec 消息编解码器


消息在发送方先通过 codec 进行编码,然后通过 messenger 发送,最后在接收方通过 codec 解码。


目前我们的混合开发只进行了页面级别的实践,一次展示一个完整的 Flutter 页面,不存在原生页 view 和 Flutter view 在同一页面混合展示的情况。原生和 Flutter 之间只需要支持页面跳转,没有大量的数据传输要求。基于此我们只采用了 MethodChannel 进行通信。代码如下:


flutter 端:



Android:



我们只对独立的模块使用 Flutter 开发,在我们的混合方案中,原生和 Flutter 视图作为独立页面展示,不涉及共享视图的场景。上面介绍的接入方式通信方式基本可以实现这种维度的混合开发。


作为新一代的跨平台方案,Flutter 可以显著提高开发效率(从我们的实践经验看,混合开发节约大概三分之一的人力);Dart 作为 Flutter 应用层的主打语言,语法和主流语言很接近,学习成本低,容易使用;Flutter 的 hot reload 等技术可以显著提高开发调试效率。总之 Flutter 技术值得投入时间学习使用。


推荐阅读:


欢迎点击京东智联云,了解开发者社区

更多精彩技术实践与独家干货解析

欢迎关注【京东智联云开发者】公众号


发布于: 2021 年 01 月 14 日阅读数: 32
用户头像

拥抱技术,与开发者携手创造未来! 2018.11.20 加入

我们将持续为人工智能、大数据、云计算、物联网等相关领域的开发者,提供技术干货、行业技术内容、技术落地实践等文章内容。京东科技开发者社区官方网站【https://developer.jdcloud.com/】,欢迎大家来玩

评论

发布
暂无评论
Flutter技术在会展云中大显身手