一余掖、使用YAML管理第三方依賴包
在原生開發(fā)中热监,Android
使用Gradle
來管理依賴垒探,iOS
用Cocoapods
來管理依賴,Node 中通過 npm來管理依賴匙瘪。Flutter
使用配置文件pubspec.yaml
(位于項目根目錄)來管理第三方依賴包。
二羊赵、Pub倉庫
Pub 是Google官方的Dart Packages倉庫独悴,類似于node中的npm倉庫,android中的jcenter混驰,我們可以在上面查找我們需要的包和插件攀隔,也可以向pub發(fā)布我們的包和插件。
Pub工具包含管理Package栖榨、部署Package和部署命令行應用的命令昆汹。
如果使用的是Flutter SDK,不要直接使用pub命令婴栽。而是使用flutter pub命令满粗,如下:
命令pub get/upgrade/outdated 屬于管理Package的依賴關系
- pub get命令
用于檢索當前 Package 所依賴的其它 Package。如果 pubspec.lock 文件已經(jīng)存在愚争,則根據(jù)該文件中保存的依賴項版本獲取對應的依賴項映皆。如有必要,將會創(chuàng)建或更新該文件准脂。
pub upgrade命令
用于檢索當前 Package 所依賴的其它 Package 的最新版本劫扒。如果 pubspec.lock 文件已經(jīng)存在,則忽略其保存的版本并以 pubspec 文件中指定的最新版本為主狸膏。如有必要沟饥,將會創(chuàng)建或更新該文件。pub outdated命令
查看當前軟件包所依賴的每個 package湾戳,確定哪些 package 的依賴項已過時贤旷,并為您提供有關如何更新它們的建議。當您要更新 package 的依賴性時砾脑,請使用此命令幼驶。
更新 package 依賴
當你添加一個 package 后首次運行 flutter pub get, Flutter 將會保存在 pubspec.lock lockfile 中找到的具體 package 版本韧衣。這將確保當你或者團隊中其他開發(fā)者運行 flutter pub get 后能得到相同版本的 package盅藻。
如果你想升級到 package 的最新版本购桑,比如使用 package 的最新特性,請運行 flutter pub upgrade 氏淑。這將檢索你在 pubspec.yaml 文件中指定的版本約束所允許的最高可用版本勃蜘。
案例
1. 兼容版本
在flutter項目中導入hive包,在pubspec.yaml文件中添加配置:
dependencies:
hive: ^2.0.5
執(zhí)行flutter pub get假残,可以在 pubspec.lock 中看到 hive 版本是2.1.0缭贡,這是因為目前hive的最新版本是2.1.0,配置“^”表示向最新版本兼容,具體可查看Package版本管理(https://dart.cn/tools/pub/versioning)辉懒,所以再執(zhí)行flutter pub upgrade 可以看到版本還是2.1.0阳惹,這個時候會發(fā)現(xiàn)pub get和 pub upgrade 效果一樣。
但是未來如果 hive 發(fā)布了2.2.0版本眶俩,這個時候使用flutter pub get在pubspec.lock中看到hive版本依舊是2.1.0莹汤,而執(zhí)行flutter pub upgrade 后在pubspec.lock中看到hive版本就是2.2.0。
2. 固定版本
現(xiàn)在先在flutter 項目的pubspec.yaml文件添加配置仿便,指定hive版本是2.0.5体啰,如下:
dependencies:
hive: 2.0.5
這個時候執(zhí)行flutter pub get后攒巍,可以在pubspec.lock的文件中看到hive版本是2.0.5嗽仪,如果這個時候更改配置為 hive: ^2.0.5,再執(zhí)行flutter pub get就會發(fā)現(xiàn)在pubspec.lock的文件中看到hive版本還是2.0.5柒莉,這個時候可以執(zhí)行flutter pub outdated查看依賴的每個 package闻坚,如下圖,
可以看到兢孝,Upgrable項hive版本號為2.1.0窿凤,執(zhí)行flutter pub upgrade 后可以看到在pubspec.lock的文件中看到hive版本是2.1.0
3. 導入本地未發(fā)布的包
在pubspec.yaml文件添加配置:
dependencies:
lxx_package_demo:
path: ../lxx_package_demo
lxx_package_demo信息如下圖:
執(zhí)行flutter pub get后在pubspec.lock中看到flutter_log版本是0.0.1
現(xiàn)在修改lxx_package_demo版本號為0.0.2,再執(zhí)行flutter pub get
會發(fā)現(xiàn)版本會及時更新為0.0.2跨蟹,這個時候執(zhí)行flutter pub get/upgrade效果一樣
tip:demo演示
參考文檔:
https://blog.csdn.net/Nathan1987_/article/details/90212896
https://www.cnblogs.com/lulushen/p/14150544.html