携手创作,一起成长!这是我参加「日新计划 8 月更文挑战」的第3天,点击检查活动详情

题记:咱们在开发flutter项目的时分通常会运用一些三方的的packages或许plugin,关于packages和plugin直接的区别主要是:packages主要是包括的Dart代码块,而plugin则包括iOS和android的代码。

因此来说咱们创立pluginpackages的流程是相似的,这儿就以创立plugin为例进行展示 咱们能够看下官方的文档怎么创立packages

Flutter中Plugin的创建与发布 (超详细教程)

1. 创立

咱们能够通过终端指令进行创立,比方创立package,运用dart指令

 dart create -t package <PACKAGE_NAME>

或许咱们运用flutter 指令

flutter create --template package <PACKAGE_NAME>

如果是plugin的话也是相似

flutter create --template plugin <PACKAGE_NAME>

Flutter中Plugin的创建与发布 (超详细教程)

这儿会提示说没有指定运转渠道,能够在该项目下运转

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进行创立

Flutter中Plugin的创建与发布 (超详细教程)

你能够挑选自己想要的类型,包括plugin,module,packages等,以及安排名和渠道以及言语

2. plugin代码编写

咱们打开创立好的plugin项目,这儿能够看到有个example是能够运转的

Flutter中Plugin的创建与发布 (超详细教程)

lib中有iOSandroid目录,用于存放咱们iOSandroid的代码,但是不可运转,这儿是不是和咱们的组件化很像

Flutter中Plugin的创建与发布 (超详细教程)

Cocopods组件化目录

Flutter中Plugin的创建与发布 (超详细教程)

咱们这儿看下官方的列子就是获取当前运转的版本号

Flutter中Plugin的创建与发布 (超详细教程)

示例代码

Flutter中Plugin的创建与发布 (超详细教程)

咱们能够模仿写一点咱们自己的代码比方获取手机电量

@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中进行执行

Flutter中Plugin的创建与发布 (超详细教程)

模拟器无法获取电量咱们运用真机

Flutter中Plugin的创建与发布 (超详细教程)

这样就能够了,至于android代码也是相似的能够查下教程。咱们能够模仿案列的交互方式学习官方原生和flutter交互的代码风格

3. 发布

  • 检查

咱们CD到当前demo下执行

flutter packages pub publish --dry-run

Flutter中Plugin的创建与发布 (超详细教程)
这儿报错

Flutter中Plugin的创建与发布 (超详细教程)

  • pubspec.yaml 配置主页

Flutter中Plugin的创建与发布 (超详细教程)

  • License

咱们运用GitHub创立一个license,这儿姓名随便起,license挑选BSD3

Flutter中Plugin的创建与发布 (超详细教程)

把创立好的license放入 plugin中的License文件

Flutter中Plugin的创建与发布 (超详细教程)

Flutter中Plugin的创建与发布 (超详细教程)

配置好后再次执行通过

Flutter中Plugin的创建与发布 (超详细教程)

  • 发布
flutter packages pub publish

这儿需要认证

Flutter中Plugin的创建与发布 (超详细教程)

咱们这儿要指定服务器

flutter packages pub publish --server=https://pub.dartlang.org

Flutter中Plugin的创建与发布 (超详细教程)

复制上面的链接进行授权,这儿就要用到谷歌账号,授权成功

Flutter中Plugin的创建与发布 (超详细教程)

授权成功后就会上传

Flutter中Plugin的创建与发布 (超详细教程)

这儿说咱们没有描绘,咱们添加描绘 咱们看下官方文档的描绘要求dart.dev/tools/pub/p… 要求60-180

Flutter中Plugin的创建与发布 (超详细教程)

再次上传

Flutter中Plugin的创建与发布 (超详细教程)

咱们去检查上传成功

Flutter中Plugin的创建与发布 (超详细教程)

4. 小结

以上就是flutter中plugin创立与发布,关于packages也是相似。中心的一些关键主要包括License,描绘,主页等,当然也要有谷歌账号以及外网条件。中心关于一些图片资源的运用以及一些导入的技巧或许引用三方的库后续有机会在共享,感觉有用的点个赞或许收藏下下次便利你自己操作哦。