目标:
1.Flutter插件是什么?有什么作用?
2.怎么创建Flutter插件?
一、什么是插件
在flutter中,一个插件叫做一个package,使用packages的目的就是为了达到模块化,可以创建出可被复用和共享的代码,这和大多数编程语言中的模块、包的概念相同。创建出来的package可以在pubspec.yaml中直接依赖。
1.1 package组成
Flutter插件组成
- 一个pubspec.yaml文件:一个元数据文件,声明了声明了package的名称、版本、作者等信息。
- 一个lib文件夹:包含里package的公开代码,文件夹至少需要存在<pakcage-name>.dart这个文件。
注意:<pakcage-name>.dart这个文件必须存在,因为这是方便使用的人快速import这个package来使用它,可以把它理解成一种必须要遵守的规则。
1.2 package分类
package可以分为两种:纯dart代码的package和带有特定平台代码的package。
- Dart packages:这是一个只有dart代码的package,里面包含了flutter的特定功能,所以它依赖于flutter的framework,也决定了它只能用在flutter上。
- plugin packages:这是一个既包含了dart代码编写的api,又包含了平台(Android/IOS)特定实现的package,可以被Android和ios调用。
- FFI 插件
用 Dart 语言编写针对一个或多个特定平台的 API,使用 Dart FFI (Android、iOS、macOS)。
> 上面应该很好理解,可以理解成java jar包和Android sdk的区别。而要开发的日志插件就是第二种。
二、插件开发
2.1 创建package
可以使用AS创建插件
然后点击next。
然后点击 Create按钮,开始创建插件项目。
如果是采用Flutter命令创建项目
// 想要创建初始的 Flutter package,请使用带有 --template=package 标志的 flutter create 命令:
flutter create --template=package hello
2.2 项目文件结构
项目文件结构如下:
LICENSE 文件
大概率会是空的一个许可证文件。
- test/hello_test.dart 文件
Package 的 单元测试 文件。
- hello.iml 文件
由 IntelliJ 生成的配置文件。
- .gitignore 文件
告诉 Git 系统应该隐藏哪些文件或文件夹的一个隐藏文件。
- .metadata 文件
IDE 用来记录某个 Flutter 项目属性的的隐藏文件。
- pubspec.yaml 文件
pub 工具需要使用的,包含 package 依赖的 yaml 格式的文件。
- README.md 文件
起步文档,用于描述 package。
- lib/hello.dart 文件
package 的 Dart 实现代码。
- .idea/modules.xml、.idea/workspace.xml 文件
IntelliJ 的各自配置文件(包含在 .idea 隐藏文件夹下)。
- CHANGELOG.md 文件
又一个大概率为空的文档,用于记录 package 的版本变更。
lib库定义插件的主要功能。
2.3 实现插件
对于纯 Dart 库的 package,只要在 lib/<package name>.dart 文件中添加功能实现,或在 lib 目录中的多个文件中添加功能实现。
如果要对 package 进行测试,在 test 目录下添加 单元测试。
Dart 概览 | Dart