Flutter中Plugin的创建与发布详细步骤
在开发flutter项目的时分通常会运用一些三方的的packages或许plugin,关于packages和plugin直接的区别主要是:packages主要是包括的Dart代码块,而plugin则包括iOS和android的代码。
因此来说咱们创立plugin
和packages
的流程是相似的,这儿就以创立plugin
为例进行展示
1. 新建 plugin
- flutter create --org com.qidian --template=plugin --platforms=android,ios -i swift -a java flutter_hello
打开创立好的plugin
项目,这儿能够看到有个example
是能运行的
在lib
中有iOS
和android
目录,用于存放咱们iOS
和android
的代码,但是不可运转
,这儿是不是和咱们的组件化
很像
咱们这儿看下官方的列子就是获取当前运转的版本号
2. plugin代码编写
lib目录下dart文件:
在iOS端进行注册
SwiftFlutterHelloPlugin.swift 文件
import Flutter
import UIKitpublic class SwiftFlutterHelloPlugin: NSObject, FlutterPlugin {public static func register(with registrar: FlutterPluginRegistrar) {let channel = FlutterMethodChannel(name: "com.qidian/flutter_hello", binaryMessenger: registrar.messenger())let instance = SwiftFlutterHelloPlugin()registrar.addMethodCallDelegate(instance, channel: channel)}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.currentdevice.isBatteryMonitoringEnabled = trueif device.batteryState == UIDevice.BatteryState.unknown {result(FlutterError(code: "UNAVAILABLE",message: "Battery level not available.",details: nil))} else {result(Int(device.batteryLevel * 100))}}
}
这样就能够了,至于android
代码也是相似的能够查下教程。
3. 发布
CD到当前demo下执行flutter pub publish--dry-run 检查是否具备发布条件
flutter packages pub publish --dry-run
Package has 0 warnings. 则代表 没什么问题
pubspec.yaml
配置主页
License
咱们运用GitHub
创立一个license
,这儿姓名随便起,license挑选BSD3
把创立好的license
放入 plugin
中的License文件
发布
flutter packages pub publish --server=https://pub.dartlang.org
这儿需要认证
指定服务器
复制上面的链接浏览器打开选择谷歌账号 (需要挂梯子才行)
修改后保存执行 source .bash_profile 使设置生效
网络代理配置这块巨坑,执行命令curl google.com检测自己是否在墙内,一般使用的翻墙软件哪里都有端口号复制到.bash_profile文件就行,然后执行 source .bash_profile 使设置生效
如果返回这个HTML文件则代表翻墙成功
只要可以科学上网很快就上传成功了
去pub.dev官网去验证下刚才上传的插件有没有成功
https://pub.dev/my-packages
至此, Flutter中Plugin的创建与发布结束,完结散花