Flutter 2.0 升级,pub 因无意义的依赖行为而失败
Posted
技术标签:
【中文标题】Flutter 2.0 升级,pub 因无意义的依赖行为而失败【英文标题】:Flutter 2.0 upgrade, pub get failed with nonsense dependency behavior 【发布时间】:2021-06-03 13:30:50 【问题描述】:在升级到flutter 2.0
后,该项目就像一个魅力一样开始出现问题。以下是pub get
的错误。
[delivered] flutter pub get
Running "flutter pub get" in delivering...
Because every version of flutter_localizations from sdk depends on intl 0.17.0 and firebase_auth_web >=0.3.0-dev.1 <0.4.0-1.0.nullsafety.0 depends on intl ^0.16.1, flutter_localizations from sdk is incompatible with firebase_auth_web >=0.3.0-dev.1 <0.4.0-1.0.nullsafety.0.
Because firebase_auth >=0.18.4 <=0.18.4 depends on firebase_auth_web ^0.3.2+2 and firebase_auth ^0.18.4+1 depends on firebase_auth_web ^0.3.2+3, firebase_auth ^0.18.4 requires firebase_auth_web ^0.3.2+2.
Thus, flutter_localizations from SDK are incompatible with firebase_auth ^0.18.4.
So, because iDelivered depends on both flutter_localizations any from SDK and firebase_auth ^0.18.4, version solving failed.
pub get failed (1; So, because delivered depends on both flutter_localizations any from SDK and firebase_auth ^0.18.4, version solving failed.)
exit code 1
这是我的pubspec.yaml
供参考:
version: 1.0.0+1
environment:
sdk: ">=2.7.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
google_fonts: ^1.1.1
http: ^0.12.2
shared_preferences: ^0.5.12+4
firebase_core: ^0.5.3
firebase_auth: ^0.18.4
cloud_firestore: ^0.14.4
firebase_messaging: ^7.0.3
parse_server_sdk_flutter: ^2.1.0
place_picker: ^0.9.16
google_maps_flutter: ^1.0.6
animations: ^1.1.2
flutter_slidable: ^0.5.7
【问题讨论】:
看看我的解决方案***.com/questions/66477175/… 查看:Flutter 2 upgrade - Flutter version solving failed error 【参考方案1】:我的建议是几周内不要更新你的 Flutter 版本
降级你的颤振(主频道):
flutter downgrade 1.22.6
【讨论】:
感谢您的指导【参考方案2】:由于您升级到Flutter 2.0,flutter sdk 是flutter_localizations
的来源。因此,您必须升级您的 firebase 依赖项,例如firebase_auth, firebase_core
至少到 1.0.0 版。
我的建议是,如果您使用的软件包尚未升级到 null-safety或它们最近没有更新,您应该坚持使用 1.22.6 稳定版的 Flutter for现在。
【讨论】:
那么如何从 2.0 反转回 1.23.0 等?我正在使用 vs 代码,我的应用运行顺利,这次升级搞砸了。 我想知道我是否可以为这个项目关闭这个空安全带? 你可以在终端上运行flutter downgrade 即使你使用的是最新版本,你仍然可以使用非空安全飞镖,问题只是你正在使用的包..有些已经移植到空安全,有些没有,这些版本相互依赖..因此,冲突。 这个 Flutter Engaged 有什么大惊小怪的,我认为 Flutter 应该立即解决这个问题【参考方案3】:您可以尝试添加 dependency_overrides 来解决此冲突:
dependency_overrides:
intl: "<0.17.0"
【讨论】:
【参考方案4】:使用flutter downgrade version
来降级flutter【讨论】:
【参考方案5】:我对这个问题的解决方案..
同时下载 2.0.2 Flutter SDK 和 1.22.6 Flutter SDK。更改 Flutter SDK 项目。
【讨论】:
您能详细说明一下吗?您是使用 fvm cli 还是自己手动处理?我有一个新项目,我想从最新版本开始,但暂时不需要更新现有项目。 @RamithDR 你的操作系统是什么?我的操作系统是mac os。我手动完成。创建 .bash_alias 文件并设置flutternew
和 flutterold
。然后设置安卓工作室。当我发布 apk 时,flutternew build apk
或 flutterold build apk
我也在 Mac 上。谢谢,我试试这个方法。【参考方案6】:
在我的应用中,
-
我将以下三个 pub 升级到最新版本
firebase_analytics: ^7.1.1,
firebase_core: ^1.0.1,
firebase_messaging: ^9.0.0
-
我在 ios pod 文件中将谷歌移动广告 SDK 降级为 7.6.9,它对我有用。 https://github.com/FirebaseExtended/flutterfire/issues/4931
【讨论】:
以上是关于Flutter 2.0 升级,pub 因无意义的依赖行为而失败的主要内容,如果未能解决你的问题,请参考以下文章