一、创建package
要创建纯 Dart 库的 package,使用带有 --template=package 标志的 flutter create 命令
要创建原生插件 package,使用带有 --template=plugin 标志的 flutter create 命令
使用 --org 选项,以反向域名表示法来指定你的组织。该值用于生成的 Android 及 iOS 代码
使用 -a 选项指定 Android 的语言,或使用 -i 选项指定 iOS 的语言
默认情况下插件项目中 iOS 代码使用 Swift 编写, Android 代码使用 Kotlin 编写
例如创建一个名为hello的库
1.纯Dart库
flutter create --template=package hello
2.iOS swift、android java
flutter create --org com.example --template=plugin --platforms=android,ios -a java hello
3.iOS Object-C、android java
flutter create --org com.example --template=plugin --platforms=android,ios -a java -i objc hello
4.iOS Object-C、android Kotlin
flutter create --org com.example --template=plugin --platforms=android,ios -i objc hello
5.iOS Swift、android Kotlin
flutter create --org com.example --template=plugin --platforms=android,ios hello
注:纯Dart库是不会自动创建example项目的,但可以在库文件夹里自己创建一个example项目 然后在pubspec.yaml通过路径引用
二、package引用等完善
1、完成插件以及example逻辑
2、在插件的pubspec.yaml里编辑完成插件名字、介绍、版本、源代码地址等
如下图
3、完善readme、changelog等文档以及编写license(在github等找个MIT或者Apache的就行)
4、在终端进入插件文件夹,执行
插件检查
flutter packages pub publish --dry-run
发布
flutter packages pub publish --server=https://pub.dartlang.org
之后提示是否确定发布
Do you want to publish flutter_plugin_calendar 0.0.1 (y/N)?
确定输入y 回车 发布完成
完整流程如下
shineyokdeMacBook-Pro:calendar admin$ flutter packages pub publish --server=https://pub.dartlang.org
Publishing flutter_plugin_calendar 0.0.1 to https://pub.dartlang.org:
|-- .gitignore
|-- .metadata
|-- .vscode
| '-- launch.json
|-- CHANGELOG.md
|-- LICENSE
|-- README.md
|-- example
| |-- .gitignore
| |-- .metadata
| |-- README.md
| |-- android
| | |-- .gitignore
| | |-- app
| | | |-- build.gradle
| | | '-- src
| | | |-- debug
| | | | '-- AndroidManifest.xml
| | | |-- main
| | | | |-- AndroidManifest.xml
| | | | |-- kotlin
| | | | | '-- com
| | | | | '-- example
| | | | | '-- example
| | | | | '-- MainActivity.kt
| | | | '-- res
| | | | |-- drawable
| | | | | '-- launch_background.xml
| | | | |-- mipmap-hdpi
| | | | | '-- ic_launcher.png
| | | | |-- mipmap-mdpi
| | | | | '-- ic_launcher.png
| | | | |-- mipmap-xhdpi
| | | | | '-- ic_launcher.png
| | | | |-- mipmap-xxhdpi
| | | | | '-- ic_launcher.png
| | | | |-- mipmap-xxxhdpi
| | | | | '-- ic_launcher.png
| | | | '-- values
| | | | '-- styles.xml
| | | '-- profile
| | | '-- AndroidManifest.xml
| | |-- build.gradle
| | |-- gradle
| | | '-- wrapper
| | | '-- gradle-wrapper.properties
| | |-- gradle.properties
| | '-- settings.gradle
| |-- iOS
| | |-- .gitignore
| | |-- Flutter
| | | |-- AppFrameworkInfo.plist
| | | |-- Debug.xcconfig
| | | '-- Release.xcconfig
| | |-- Runner
| | | |-- AppDelegate.swift
| | | |-- Assets.xcassets
| | | | |-- AppIcon.appiconset
| | | | | |-- Contents.json
| | | | | |-- Icon-App-1024x1024@1x.png
| | | | | |-- Icon-App-20x20@1x.png
| | | | | | (10 more...)
| | | | | |-- Icon-App-76x76@1x.png
| | | | | |-- Icon-App-76x76@2x.png
| | | | | '-- Icon-App-83.5x83.5@2x.png
| | | | '-- LaunchImage.imageset
| | | | |-- Contents.json
| | | | |-- LaunchImage.png
| | | | |-- LaunchImage@2x.png
| | | | |-- LaunchImage@3x.png
| | | | '-- README.md
| | | |-- Base.lproj
| | | | |-- LaunchScreen.storyboard
| | | | '-- Main.storyboard
| | | |-- Info.plist
| | | '-- Runner-Bridging-Header.h
| | |-- Runner.xcodeproj
| | | |-- project.pbxproj
| | | |-- project.xcworkspace
| | | | |-- contents.xcworkspacedata
| | | | '-- xcshareddata
| | | | |-- IDEWorkspaceChecks.plist
| | | | '-- WorkspaceSettings.xcsettings
| | | '-- xcshareddata
| | | '-- xcschemes
| | | '-- Runner.xcscheme
| | '-- Runner.xcworkspace
| | |-- contents.xcworkspacedata
| | '-- xcshareddata
| | |-- IDEWorkspaceChecks.plist
| | '-- WorkspaceSettings.xcsettings
| |-- lib
| | '-- main.dart
| |-- pubspec.yaml
| '-- test
| '-- widget_test.dart
|-- lib
| |-- flutter_plugin_calendar.dart
| |-- util
| | '-- calendar_time_util.dart
| '-- view
| |-- calendar_day_item.dart
| |-- calendar_month_item.dart
| |-- calendar_month_view.dart
| |-- calendar_view.dart
| |-- calendar_week_item.dart
| '-- calendar_week_view.dart
|-- pubspec.yaml
'-- test
'-- flutter_plugin_calendar_test.dart
Publishing is forever; packages cannot be unpublished.
Policy details are available at https://pub.dev/policy
Do you want to publish flutter_plugin_calendar 0.0.1 (y/N)? y
Uploading...
Successfully uploaded package.