Flutter中Plugin的创建与发布 (超详细教程)
题记:我们在开发flutter项目的时候通常会使用一些三方的的packages或者plugin,关于packages和plugin直接的区别主要是:packages主要是包含的Dart代码块,而plugin则包含iOS和android的代码。
因此来说我们创建plugin
和packages
的流程是类似的,这里就以创建plugin
为例进行展示
我们可以看下官方的文档如何创建packages
1. 创建
我们可以通过终端命令进行创建,比如创建package
,使用dart
命令
dart create -t package <PACKAGE_NAME>
或者我们使用flutter
命令
flutter create --template package <PACKAGE_NAME>
如果是plugin
的话也是类似
flutter create --template plugin <PACKAGE_NAME>
这里会提示说没有指定运行平台
,可以在该项目下运行
flutter create -t plugin --platforms <platforms>
创建plugin的时候需要使用--org
设置组织名
flutter create --org com.example --template plugin <PACKAGE_NAME>
指定语言
flutter create --template plugin -i swift -a kotlin <PACKAGE_NAME>
当然我们可以使用AndroidStudio
进行创建
你可以选择自己想要的类型,包括plugin,module,packages
等,以及组织名和平台以及语言
2. plugin代码编写
我们打开创建好的plugin
项目,这里可以看到有个example
是可以运行的
在lib
中有iOS
和android
目录,用于存放我们iOS
和android
的代码,但是不可运行
,这里是不是和我们的组件化
很像
Cocopods组件化
目录
我们这里看下官方的列子就是获取当前运行的版本号
示例代码
我们可以仿照写一点我们自己的代码比如获取手机电量
@visibleForTesting
final methodChannel = const MethodChannel('by_example_plugin');
@override
Future<String?> getPlatformVersion() async {
final version = await methodChannel.invokeMethod<String>('getPlatformVersion');
return version;
}
Future<String?> getBatteryLevel() async {
int batteryLevel = await methodChannel.invokeMethod('getBatteryLevel');
return batteryLevel.toString();
}
我们在iOS端进行注册
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
if (call.method == "getBatteryLevel") {
receiveBatteryLevel(result: result)
}else {
result("iOS " + UIDevice.current.systemVersion)
}
}
private func receiveBatteryLevel(result: FlutterResult) {
let device = UIDevice.current
device.isBatteryMonitoringEnabled = true
if device.batteryState == UIDevice.BatteryState.unknown {
result(FlutterError(code: "UNAVAILABLE",
message: "Battery level not available.",
details: nil))
} else {
result(Int(device.batteryLevel * 100))
}
}
dart中的页面可以仿照 example
中进行执行
模拟器无法获取
电量我们使用真机
这样就可以了,至于android
代码也是类似的可以查下教程。我们可以仿照案列的交互方式学习官方原生和flutter交互的代码风格
。
3. 发布
检查
我们CD到当前demo下执行
flutter packages pub publish --dry-run
这里报错
pubspec.yaml
配置主页
License
我们使用GitHub
创建一个license
,这里名字随便起,license选择BSD3
把创建好的license
放入 plugin
中的License文件
配置好后再次执行通过
发布
flutter packages pub publish
这里需要认证
我们这里要指定服务器
flutter packages pub publish --server=https://pub.dartlang.org
复制上面的链接进行授权
,这里就要用到谷歌账号
,授权成功
授权成功后就会上传
这里说我们没有描述,我们添加描述
我们看下官方文档的描述要求dart.dev/tools/pub/p…
要求60-180
字
再次上传
我们去查看上传成功
4. 小结
以上就是flutter中plugin
得创建与发布
,对于packages
也是类似。中间的一些要点主要包括License,描述,主页
等,当然也要有谷歌账号
以及外网条件
。中间对于一些图片资源
的使用以及一些导入的技巧
或者引用三方的库后续有机会在分享,感觉有用的点个赞
或者收藏下下次方便你自己操作哦。
转载自:https://juejin.cn/post/7125788252316893221