Flutter中dart pub outdated未显示provider依赖更新问题
为什么provider依赖未出现在dart pub outdated的更新列表中?
问题场景
项目的pubspec.yaml中配置了以下依赖:
dependencies: flutter: sdk: flutter # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.6 provider: ^6.0.0 firebase_auth: ^3.11.2
执行dart pub outdated后,输出仅显示:
Package Name Current Upgradable Resolvable Latest direct dependencies: firebase_auth *3.11.2 *3.11.2 5.1.3 5.1.3 dev_dependencies: flutter_lints *3.0.2 *3.0.2 4.0.0 4.0.0
但pub.dev显示provider的最新版本为6.1.2,却未出现在更新列表中。
原因解析
这是因为你配置的provider版本约束是^6.0.0,这个符号的含义是:允许安装所有大于等于6.0.0且小于7.0.0的版本。而6.1.2完全符合这个范围,dart pub outdated默认只会列出那些当前版本约束无法覆盖的更新(比如需要升级主版本号,或者当前约束不允许的版本)。
对于处于约束范围内的最新兼容版本,pub会认为该依赖已经处于“可自动升级”的状态,不会将其放入pub outdated的待更新列表中。
验证与处理
- 执行
dart pub upgrade命令,pub会自动将provider升级到6.1.2,因为该版本符合^6.0.0的约束。 - 如果希望provider出现在
pub outdated的列表中,可以修改版本约束为固定版本(比如6.0.0,去掉^符号),此时6.1.2就会被识别为可更新版本。
内容的提问来源于stack exchange,提问作者Nerdy Bunz
相关产品推荐
相关产品推荐

