Flutter开发 Flutter 包和插件 ( 开发 Dart 插件包 | 发布 Dart 插件包 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter开发 Flutter 包和插件 ( 开发 Dart 插件包 | 发布 Dart 插件包 )相关的知识,希望对你有一定的参考价值。
文章目录
前言
上一篇博客 【Flutter】开发 Flutter 包和插件 ( Flutter 包和插件简介 | 创建 Flutter 插件 | 创建 Dart 包 ) 三、创建 Dart 包
1、Android Studio 中可视化创建 中 , 创建了 Dart 包 ;
本篇博客中 , 开发该 Dart 包 , 并将其发布到 Flutter 公共仓库中 ;
一、开发 Dart 包内容
创建完毕之后 , 自动生成了一个 flutter_package.dart 源码文件 , 内容是
library flutter_package;
/// A Calculator.
class Calculator {
/// Returns [value] plus 1.
int addOne(int value) => value + 1;
}
实现了一个简单计算功能 , 导入该包后 , 调用 addOne 方法 , 就会将传入的参数 +1 返回 ;
这里保持不变 ;
二、配置 pubspec.yaml
在 pubspec.yaml 中配置该项目 :
# Dart 包名称
name: flutter_package
# 描述
description: A new Flutter project.
# 版本号
version: 0.0.1
# 主页 , 一般是 GitHub 的地址
homepage:
# 所需的环境
environment:
sdk: ">=2.12.0 <3.0.0"
flutter: ">=1.17.0"
# 依赖关系
dependencies:
flutter:
sdk: flutter
三、编写 Dart 包使用说明
一般在 Flutter 包中央仓库中 , 搜索到某个 Flutter 包或插件 , 显示的内容就是 Flutter 包 / 插件的工程根目录的 README.md 文档 ;
一般将插件的使用说明 , 写在该文档中 ;
四、编写 Dart 包授权许可
修改根目录下的 LICENSE 许可 ;
随便找个 Flutter 插件 , 复制一份即可 ;
该协议不是必须的 ;
五、设置版本变更记录
在 CHANGELOG.md 中 , 设置每个版本的变更记录 , 具体就是某个版本更新后 , 更新了哪些内容 , 修改了哪些内容 ;
六、验证 Dart 包正确性
先运行如下命令 , 检查该 Flutter 包是否正常 ;
flutter packages pub publish --dry-run
运行后正常 :
D:\\002_Project\\002_android_Learn\\flutter_package>flutter packages pub publish --dry-run
Publishing flutter_package 0.0.1 to https://pub.flutter-io.cn:
|-- .gitignore
|-- .metadata
|-- CHANGELOG.md
|-- LICENSE
|-- README.md
|-- lib
| '-- flutter_package.dart
|-- pubspec.yaml
'-- test
'-- flutter_package_test.dart
Package has 0 warnings.
七、将 Dart 包推送到中央仓库中
执行如下命令 , 将 Dart 包推送到中央仓库中 ;
flutter packages pub publish --server=https://pub.dartlang.org
D:\\002_Project\\002_Android_Learn\\flutter_package>flutter packages pub publish
Publishing flutter_package 0.0.1 to https://pub.flutter-io.cn:
|-- .gitignore
|-- .metadata
|-- CHANGELOG.md
|-- LICENSE
|-- README.md
|-- lib
| '-- flutter_package.dart
|-- pubspec.yaml
'-- test
'-- flutter_package_test.dart
Publishing is forever; packages cannot be unpublished.
Policy details are available at https://pub.dev/policy
Do you want to publish flutter_package 0.0.1 (y/N)?
输入 y 然后点击回车 , 这里弹出一个链接 , 需要到该地址登录 Google 账号 ;
Do you want to publish flutter_package 0.0.1 (y/N)? y
Pub needs your authorization to upload packages on your behalf.
In a web browser, go to https://accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force&response_type=code&client_id=818368855108-8grd2eg9tj9f38os6f1urbcvsq399u8n.apps.googleusercontent.com&redirect_uri=http%3A%2
F%2Flocalhost%3A57747&code_challenge=iplyOXdxiNSnXI7z1Xza2wrHOfTUx-LWyiKM3wVlokg&code_challenge_method=S256&scope=openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email
Then click "Allow access".
Waiting for your authorization...
选择了要登录的账号后 , 需要进行手机验证 ;
输入手机验证码 ;
授权成功 ;
终于上传成功了 :
D:\\002_Project\\002_Android_Learn\\flutter_package>flutter packages pub publish --server=https://pub.dartlang.org
Publishing flutter_package_first_demo 0.0.1 to https://pub.dartlang.org:
|-- .gitignore
|-- .metadata
|-- CHANGELOG.md
|-- LICENSE
|-- README.md
|-- lib
| '-- flutter_package_first_demo.dart
|-- pubspec.yaml
'-- test
'-- flutter_package_test.dart
Publishing is forever; packages cannot be unpublished.
Policy details are available at https://pub.dev/policy
Do you want to publish flutter_package_first_demo 0.0.1 (y/N)? y
Uploading...
Successfully uploaded package.
D:\\002_Project\\002_Android_Learn\\flutter_package>
插件地址是 : https://pub.dev/packages/flutter_package_first_demo
发布插件包坑挺多 : 报错信息一个接着一个 , 研究了一晚上 ;
- 【错误记录】发布 Flutter 插件包报错 ( It‘s strongly recommended to include a “homepage“ or “repository“ field )
- 【错误记录】发布 Flutter 插件包报错 ( Failed to upload the package.pub finished with exit code 1 )
- 【错误记录】发布 Flutter 插件包报错 ( ‘gmail.com‘ has insufficient permissions to upload new versions of package)
八、博客资源
GitHub 地址 : https://github.com/han1202012/flutter_package
以上是关于Flutter开发 Flutter 包和插件 ( 开发 Dart 插件包 | 发布 Dart 插件包 )的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio 不会自动导入包和 @override 方法以进行 Flutter 应用开发
Flutter插件开发之FlutterChannel :Flutter调用Android 与 Android调用Flutter
Flutter插件开发之FlutterChannel :Flutter调用Android 与 Android调用Flutter