flutter提供了插件包的形式来使代码分模块和共享,可以避免开发者从0开发程序,轻松实现组件化,和iOS的cocopods类似。
创建
一个最小的package包括: (1)一个pubspec.yaml文件:声明了package的名称、版本、作者等的元数据文件。 (2)一个 lib 文件夹:包括包中公开的(public)代码,最少应有一个.dart文件
我用的是andriod studio,可以新建一个pulgin或者package,一个是结合安卓、iOS混编的,一个是纯dart代码
发布
发布有几种方式:
(1)本地依赖
本地依赖就是把你的插件项目在本地添加到已有的项目中,然后在pubspec.yaml中添加依赖, demo: path:路径名
(2)公有库
发布了以后可以供所有人查询和使用,方便开源,就可以在pub.flutter-io.cn 中查询到
预发布命令:flutter packages pub publish --dry-run
发布命令:flutter packages pub publish
设置了国内镜像的话可以用:flutter packages pub publish --server=pub.dartlang.org
有什么问题按照反馈进行更改,上传成功后就可以在pubspec,yaml中引用,格式如下:
dependencies:
rxdart: 0.22.6
(3)私有库
可以上传到自己的服务器上,仅供内部使用
发布命令:flutter packages pub publish --server=http://192.168.0.1:8080
192.168.0.1替换为自己的服务器地址,引用的格式如下
flutter_screenutil:
hosted:
name: flutter_screenutil
url: http://192.168.0.1:8080
version: 4.0.2
问题
本人在上传的时候也遇到一些问题,也在这共享一下:
(1)发布公有和私有的库连不上服务器
这个是因为不管你发布公有还是私有的库,都会通过google的验证,在国内就会有问题,所以要翻墙,发布公有的这一步是不可省略的,必须要验证,但是发布私有的话,这一步可以绕过。
下载项目: github.com/ameryzhu/pu…
然后执行
dart --snapshot=mypub.dart.snapshot bin/pub.dart
完成之后会在项目根目录下多出来一个 mypub.dart.snapshot 文件
复制之后放入${flutterSDK Path}/bin/cache/dart-sdk/bin/snapshots/ 目录下
用txt编辑器打开${flutterSDK Path}/bin/cache/dart-sdk/bin/pub文件
将倒数第三行的:pub.dart.snapshot 替换为 mypub.dart.snapshot
这样就可以完成私有包的发布而绕过验证
(2)pub did not create .dart_tools/package_config.json file
如果使用了自己的mypub.dart.snapshot,在去清空缓存执行pub get就会报这个错误,把上一个更改的文件改回来就可以了
(3)私有库的头文件找不到
出现这个问题真的要吐槽下android studio,清空缓存没有用,因为我的项目是一开始本地依赖,然后再传到私有服务器,删除本地的,结果项目中一直有缓存,导致找不到头文件,我最后是删除了.idea文件夹,重新导入包就好了