Flutter中的插件开发(Package&Plugin)

2022-03-28 09:12:27 浏览数 (1)

一、导言

我们在创建一个Flutter项目的时候,有如下几种选择:

  1. Application就是新建一个标准的Flutter工程;
  2. Module用于在原生工程中去包含Flutter模块,我在《Flutter与原生工程的混合开发》中有过详细介绍;
  3. Package用于纯Dart的组件开发,可以将其理解成是一个Widget,我在《发布package到pub.dev》中做了详细介绍;
  4. Plugin用于与原生交互的插件开发,里面既包含安卓代码,也包含iOS代码。

二、plugin开发流程的简单介绍

实际上,Plugin就是一个特殊的Package。Package是一个纯Dart包,它里面封装了一个纯Dart的功能组件,可以将其理解成是一个Widget;而Plugin是提供的对Android或者iOS功能的封装,它是在Flutter层面提供前述组件功能,使Flutter可以较为方便地调取Native的相关功能模块

在Plugin中,Flutter代码和Native代码之间的通讯是通过Channel来进行的。

上面说了,Plugin是一种特殊的package,所以Plugin的创建和发布的流程大致跟Package的创建和发布的流程是一样的。其中有一个不太一样的地方,我会在下面单独拎出来讲。

1,创建Plugin工程

创建一个Plugin项目的终端目录如下:

代码语言:javascript复制
flutter create  --template=plugin --platforms android,ios lavie_test_plugin
  • --org com.funshare,用于指定你的组织,并使用反向域名表示法表示。一般用来设置iOS工程的bundleID,以及Android工程的包名
  • --platforms android,ios,配置插件的使用平台
  • -i swift -a kotlin ,由于Plugin包含iOS和Android代码,而他们分别都支持两种语言,iOS支持Object-C(默认)和Swift,Android支持Java(默认)和Kotlin,所以我们可以使用-i 或 -a 为iOS或Android指定语言

2,Plugin项目的结构

创建好Plugin项目之后,使用AndroidStudio打开,可以看到项目的组织结构如下:

  • android和ios这两个文件夹是我们写原生功能组件代码的地方;
  • lib层用于编写Flutter与原生的映射代码,因为Flutter与原生是不能直接通信的,必须要通过MethodChannel来间接调用;
  • example文件夹是示例工程,我们编写的插件可以直接在示例工程中进行验证。

以上。

0 人点赞