Flutter 开发插件包Plugin
最近公司的项目采取了跨平台技术Flutter来开发,也是我们技术总监推荐我们尝试使用。前期也做了一些测试和试验,Flutter的实现功能和界面开发方面个人感觉都比原生要省事不少。在我们进行的这个项目开发过程中也是一个不断学习和踩坑的过程。有些功能避免不了和原生系统API的交互,比如硬件设备调用等等方面,这就需要Flutter+iOS+Android混编的方案。于是某些功能需要做插件包,插件包提供一个Flutter统一接口进行原生iOS代码和安卓代码。下面是个计步器插件包的例子:
- 创建一个文件夹GetStepCount来存放插件包代码,用终端cd到文件夹路径下:
- flutter create -t plugin get_step_count 命令创建项目,注意get_step_count是插件包的名称,而且要用下划线小写格式,不能用驼峰风格,否则报错:
- 创建成功之后会有一个插件包工程文件目录:
android目录下存放是安卓的java原生代码:
上图中里面java文件是一个获取系统版本的实现文件例子
iOS 目录下存放的是OC的原生代码:
上图中的.m实现文件是OC版的获取系统版本的实现文件例子
example文件是提供的一个能运行的demo,以供演示如何使用做的插件。
- 下面开始填入我们需要做的原生功能代码,在添加我们需要的原生功能代码之前,需要对这个插件项目进行 build :
cd 到 example文件路径下,安卓build命令 flutter build apk ,iOS build命令 flutter build ios --no-codesign - iOS 插件代码编写:
经过build之后我们进入插件包工程目录里的example文件夹下,运行 example/ios/Runner.xcworkspace文件,xcode打开的目录如下图:
上图中的Cleasses中的OC文件就是实现原生功能的文件,把要实现的功能文件写在Classes下就可以了。如果实现功能需要第三方库的支持,在上面的Podfile中加入三方库依赖。 - 安卓 插件代码编写:
同样经过了build之后打开example里面的工程,从AndroindStudio里能看到/java/com.example.get_step_count/ 目录里就是安卓需要编码的地方。 - 关于Flutter和 原生iOS/Android进行通信这里不再赘述,建立好Flutter与原生之间的通道就可以相互调用了。
- 最后推荐一下阿里巴巴的闲鱼Flutter技术分享系列--闲鱼语雀https://www.yuque.com/xytech,阿里在Flutter跨平台方案中已经践行了大概快三年的时间,现在把成果拿出来(现在的闲鱼应用是用Flutter进行重构和业务支持的)进行分享也是值得敬仰的精神。
- 本人也是刚用Flutter,如果有什么不对或者建议请提出指点或交流,谢谢。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。