我刚刚克隆了一个同事正在开发的 Flutter 项目,但我无法让它在我的笔记本电脑上运行。我用的是Macbook Pro,和他们一样。这对他们有用,但对我不起作用。
问题出在
flutter pub get
或flutter upgrade
。这是错误:
解决依赖关系...
注意:intl 通过 flutter SDK 中的 flutter_localizations 固定到版本 0.18.1。 有关详细信息,请参阅https://dart.dev/go/sdk-version-pinning。
因为trooms依赖于sdk中的flutter_localizations,而sdk又依赖于intl 0.18.1,所以需要intl 0.18.1。 所以,由于 trooms 依赖于 intl ^0.17.0,版本解析失败。
进程已完成,退出代码为 1
这些是我的依赖项:
name: trooms
description: Web, Android and iOS App for TROOMS.
publish_to: 'none'
version: 1.0.0+1
environment:
sdk: ">=2.12.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
cupertino_icons: ^1.0.4
intl: 0.18.1
json_serializable: ^6.1.6
json_annotation: ^4.4.0
firebase_core: ^2.0.3
firebase_auth: ^4.1.3
cloud_firestore: ^4.1.0
firebase_analytics: ^10.0.6
firebase_crashlytics: ^3.0.6
firebase_performance: ^0.9.0+6
firebase_storage: ^11.0.6
image_picker: ^0.8.6
flutter_image_slideshow: ^0.1.4
cloud_functions: ^4.0.5
logging: ^1.0.2
flutter_riverpod: ^2.1.1
flutter_launcher_icons: ^0.11.0
font_awesome_flutter: ^10.1.0
flutterfire_ui: ^0.4.0+2
url_launcher: ^6.0.20
beamer: ^1.5.3
q_form:
git:
url: //url
flutter_native_splash: ^2.1.5
date_time_picker: ^2.1.0
table_calendar: ^3.0.5
flutter_beacon: ^0.5.1
google_fonts: ^3.0.1
dev_dependencies:
flutter_app_name: ^0.1.1
build_runner: ^2.1.10
fake_cloud_firestore: ^2.0.1
firebase_auth_mocks: ^0.9.1
firebase_storage_mocks: ^0.6.0+1
flutter_test:
sdk: flutter
flutter_lints: ^2.0.1
get: ^4.6.1
flutter_app_name:
name: "TROOMS"
flutter_icons:
android: true
ios: true
remove_alpha_ios: true
image_path: "assets/icon/trooms-ulm-logo.png"
adaptive_icon_background: #ffffff
flutter_lints: ^1.0.4
flutter:
uses-material-design: true
generate: true
assets:
- assets/
- assets/icon/
我尝试将 SDK 更改为与他们相同的版本,但没有成功。由于某种原因,我无法将 Flutter 降级到完全相同的版本:
~ TROOMS % flutter downgrade v3.7.7 Downgrade flutter to version 3.3.9 ? [y|n]:
然后,我将 intl 软件包版本更改为所需的版本:
intl: 0.18.1
。这是新的错误:
解决依赖关系...
因为 date_time_picker 2.1.0 依赖于 intl ^0.17.0 并且没有任何版本的 date_time_picker 匹配 >2.1.0 <3.0.0, date_time_picker ^2.1.0 requires intl ^0.17.0. So, because trooms depends on both intl 0.18.1 and date_time_picker ^2.1.0, version solving failed.
进程已完成,退出代码为 1
我也尝试将
flutter_localizations
更改为这样的
dependencies:
flutter:
sdk: flutter
flutter_localizations: any
但也不被接受:
解决依赖关系...
因为 trooms 依赖于任何不存在的 flutter_localizations(在 https://pub.dev 找不到包 flutter_localizations),版本解决失败。
进程已完成,退出代码为 69
我对
intl
也做了同样的事情。相同的输出。
所以看来包
date_time_picker
和flutter_localizations
都依赖于不同版本的intl,这是不兼容的,这就是它失败的原因。那么,如何解决具有相同依赖项的不同固定版本的包?
但是我感到困惑的原因是因为完全相同的代码对我的同事有效,具有相同的依赖项,尽管我们确实有不同的 SDK。请问SDK有什么作用吗?
我认为从 Flutter >= 3.10(自己做一些研究以确保),flutter_localizations 需要 intl >= 0.18.0。所以有2个解决方案: