什么是插件
在flutter中,一个插件叫做一个package,使用packages的目的就是为了达到模块化,可以创建出可被复用和共享的代码,创建出来的package可以在pubspec.yaml中直接依赖。
Package介绍
pubspec.yaml文件:用于定义package名称、版本号、作者等其他信息的元数据文件。
lib目录:包含共享代码的lib目录,其中至少包含一个<package-name>.dart
文件。<package-name>.dart
这个文件必须在,因为这是方便使用的人快速import这个package来使用它,可以把它理解成一种必须要遵守的规则。
package的分类
- Dart packages(纯Dart库):这是一个只有dart代码的package,里面包含了flutter的特定功能,所以它依赖于flutter的framework,也决定了它只能用在flutter上。
- plugin packages(原生插件):Dart编写,按需使用Java或者Kotlin、Objective-C或Swift分别在Android/ios平台实现的package。
开发Dart的packages
Flutter创建插件
使用android studio新建工程,New -> New Flutter Project -> Flutter plugin,插件名称不支持大写开头。
几个主要的目录分别为android,example,ios,lib这四个目录:
- android目录是一个完整的android工程,用来开发Android端的插件功能
- example目录是一个完整的Flutter工程,可运行安装,用来测试Android或者ios端的插件功能
- ios目录是一个完整的ios工程,用来开发ios端的插件功能
- lib目录中的文件负责和Android或者ios端的交互,dart文件
注意:在打开Android对应的java或者kotlin类时文件会报错报红色警告,这是正常的。只需要点击编辑框右上角open for Editing in Android Studio
即可打开android工程编辑。
插件指定平台
flutter:
plugin:
platforms:
//支持的平台
android:
package: com.example.flutter_log_plugin
pluginClass: FlutterLogPlugin
ios:
pluginClass: FlutterLogPlugin
当为更多平台添加插件实现时,应相应地更新platforms map,例如添加macOS和web的hello插件的map:
flutter:
plugin:
platforms:
android:
package: com.example.flutter_log_plugin
pluginClass: FlutterLogPlugin
ios:
pluginClass: