滴滴开源Flutter混合开发框架Unify
滴滴开源了自研 Unify 框架,旨在解决大规模跨端落地场景下,Flutter 与原生模块之间的通信问题。
Unify 通过平台无关的模块抽象、灵活的实现注入、自动代码生成等特性,为开发者提供高效、灵活、易用的 Flutter 混合通信能力。
开源地址:https://github.com/didi/Unify
Unify 是一个 Flutter 混合开发框架,由滴滴出行国际化外卖团队自研。
下图是滴滴国际化外卖 Flutter 部分业务落地场景展示:
Unify 亮点特性包括:
平台无关的模块抽象: 允许开发者使用 Dart 语言声明与平台无关的模块接口与实体。
灵活的实现注入: 开发者可以灵活地选择注入原生实现(Android/iOS)或 Flutter 实现。
自动代码生成: 借助强大的代码生成引擎,Unify 可以自动生成 Flutter、Android、iOS 多平台下统一调用的 SDK。
下面是一个使用 Unify 声明原生模块的示例:
@UniNativeModule()
abstract class DeviceInfoService {
Future<DeviceInfoModel> getDeviceInfo();
}
通过 Unify,上面的 Dart 接口可以自动映射到 Android 和 iOS 平台,开发者只需专注于各平台下的具体实现即可。
在 Flutter 中使用时,调用方式就像普通的 Flutter 模块一样简单、直观:
DeviceInfoService.getDeviceInfo().then((deviceInfoModel) {
print("${deviceInfoModel.encode()}");
});
Unify 的整体原理如下:
Unify 能够很好地解决 Flutter 混合开发下的一些常见问题,例如:
大量原生模块高效导入 Flutter 大量 Flutter 模块高效导入原生 解决大量 Channel 难以维护的问题 原生与 Flutter 并存下的混合架构分层
据介绍,Unify 实现了一套多语言代码生成器,通过该生成器,能够自动解析开发者声明的 Dart 抽象接口,并自动生成三端注入、调用代码,将开发者从繁重的胶水代码中解脱出来,从而提升跨端通信的开发效率。
https://github.com/didi/Unify/blob/master/README.zh-CN.md
Reference
https://mp.weixin.qq.com/s/Di8czdY3KCqDAYrzEvePrg
🎁 转发、评论本文有福利
如果本文阅读量破 1 万(发布后 7 天内),留言区点赞数最多的水友将获赠一份 OSC 定制的周边礼物( T 恤、魔方或笔记本)。
分享、在看与点赞
至少我要拥有一个吧
END
热门文章
微信扫码关注该文公众号作者