Flutter开发疑问:另一种pubspec.yaml包添加方式是否为最新版本?
你提到的另一种添加方式是否会获取最新版本,得看具体写法,下面是几种常见情况的说明:
只写包名(无版本号):比如
shared_preferences:
这种写法会自动拉取当前兼容你项目Flutter/Dart版本的最新稳定版。不过要注意,后续包发布新版本后,除非你手动执行flutter pub upgrade,否则项目不会自动升级到新的最新版。带^符号的版本号:比如
shared_preferences: ^2.2.2
这其实就是pub.dev安装标签里默认给出的写法,它允许升级到不改变第一个主版本号的最新版(比如从2.2.2可以升到2.3.0,但不会跳到3.0.0这种大版本)。只要执行flutter pub get或者flutter pub upgrade,就会拿到这个范围内的最新版本。固定版本号:比如
shared_preferences: 2.2.2
这种写法会强制使用指定的版本,哪怕包有更新也不会自动升级,完全不会获取最新版本。Git地址/本地路径:比如
shared_preferences: git: url: https://github.com/flutter/plugins.git path: packages/shared_preferences/shared_preferences
如果指定的是主分支(比如main/master),执行flutter pub get时会拉取该分支的最新代码;但如果指定了特定的commit或tag,就会固定到对应的版本,不会获取最新版。
简单来说:如果另一种写法是无版本号或者带^的版本号,就能获取对应规则下的最新版本;要是固定版本号、指定了Git特定节点,就不会拿到最新版。
内容的提问来源于stack exchange,提问作者DBG

