Flutter中pubspec.yaml移除依赖库版本号的作用是什么?
pubspec.yaml无版本号依赖的含义说明
你给出的省略版本号的依赖写法如下:
dependencies: flutter: sdk: flutter webview_flutter: device_info:
具体含义
这种写法属于隐式版本声明,代表你允许pub工具拉取和当前项目环境兼容的最新稳定版对应依赖库。
Flutter的处理逻辑
- 首次执行
flutter pub get时,pub会检索配置的pub源(默认是pub.dev)中对应库的所有版本,筛选出和当前项目Flutter SDK、其他已声明依赖无冲突的最高稳定版本进行安装,同时会将匹配到的具体版本号写入项目根目录的pubspec.lock文件完成版本锁定。 - 后续再次执行
flutter pub get时,会直接读取pubspec.lock中锁定的版本安装,不会主动更新依赖版本。 - 只有主动执行
flutter pub upgrade命令时,pub才会重新检索最新的兼容版本,更新依赖并刷新pubspec.lock的版本记录。
注意事项
这种写法不推荐用于正式生产项目:如果依赖库发布了带破坏性变更的大版本,执行
flutter pub upgrade时很容易出现代码不兼容的问题。更稳妥的写法是声明大版本范围,比如webview_flutter: ^4.0.0,限制只拉取4.x.x的最新兼容版本,规避跨大版本的破坏性变更影响。
内容的提问来源于stack exchange,提问作者Thanoss
相关产品推荐
相关产品推荐

