Pub工具包含管理Package、部署Package和部署命令行應用的命令。
如果使用的是Flutter SDK,不要直接使用pub命令。而是使用flutter pub命令,如下:
命令pub get/upgrade/outdated 屬於管理Package的依賴關系
pub get命令
用於檢索當前 Package 所依賴的其它 Package。如果 pubspec.lock 文件已經存在,則根據該文件中保存的依賴項版本獲取對應的依賴項。如有必要,將會創建或更新該文件。
pub outdated命令
查看當前軟件包所依賴的每個 package,確定哪些 package 的依賴項已過時,並為您提供有關如何更新它們的建議。當您要更新 package 的依賴性時,請使用此命令。
pub upgrade命令
用於檢索當前 Package 所依賴的其它 Package 的最新版本。如果 pubspec.lock 文件已經存在,則忽略其保存的版本並以 pubspec 文件中指定的最新版本為主。如有必要,將會創建或更新該文件。
更新 package 依賴
當你添加一個 package 后首次運行 flutter pub get(IntelliJ 或 Android Studio 中的 Packages Get), Flutter 將會保存在 pubspec.lock lockfile 中找到的具體 package 版本。這將確保當你或者團隊中其他開發者運行 flutter pub get 后能得到相同版本的 package。
如果你想升級到 package 的最新版本,比如使用 package 的最新特性,請運行 flutter packages upgrade (IntelliJ 或 Android Studio 的 Upgrade dependencies 功能)。這將檢索你在 pubspec.yaml 文件中指定的版本約束所允許的最高可用版本。請注意,flutter upgrade 與 flutter update-packages 是兩個不同的命令,但它們都會更新 Flutter。
案例
1 > 在flutter項目中導入oktoast包,在pubspec.yaml文件中添加配置:
dependencies:
oktoast: ^2.2.0
執行flutter pub get,可以在 pubspec.lock 中看到 oktoast 版本是2.3.2,這是因為目前oktoast的最新版本是2.3.2,配置“^”表示向最新版本兼容,具體可查看Package版本管理(https://dart.cn/tools/pub/versioning),所以再執行flutter pub upgrade 可以看到版本還是2.3.2,這個時候會發現pub get和 pub upgrade 效果一樣。
但是未來如果 oktoast 發布了2.4.0版本,這個時候使用flutter pub get在pubspec.lock中看到oktoast版本依舊是2.3.2,而執行flutter pub upgrade 后在pubspec.lock中看到oktoast版本就是2.4.0。
2> 現在先在flutter 項目的pubspec.yaml文件添加配置,指定oktoast版本是2.2.0,如下:
dependencies:
oktoast: 2.2.0
這個時候執行flutter pub get后可以在pubspec.lock的文件中看到oktoast版本是2.2.0,如果這個時候更改配置為 oktoast: ^2.2.0,在執行flutter pub get就會發現
在pubspec.lock的文件中看到oktoast版本還是2.2.0,這個時候可以執行flutter pub outdated查看依賴的每個 package,如下圖,可以看到Upgrable項oktoast版本號為2.3.2,執行flutter pub upgrade 后可以看到在pubspec.lock的文件中看到oktoast版本是2.3.2
3> 導入本地未發布的包
在pubspec.yaml文件添加配置:
dependencies:
flutter_log:
path: ../magic_library/flutter_log/
flutter_log信息如下圖:
執行flutter pub get后在pubspec.lock中看到flutter_log版本是0.0.1
現在修改flutter_log版本號為0.0.2,再執行flutter pub get會發現版本會及時更新為0.0.2,這個時候執行flutter pub get/upgrade效果一樣
參考文檔:
https://flutter.cn/docs/development/packages-and-plugins/using-packages