Flutter-开发插件包plugin记录

11次阅读

共计 1203 个字符,预计需要花费 4 分钟才能阅读完成。

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,如果有什么不对或者建议请提出指点或交流,谢谢。
正文完
 0