Flutter:pub get 中版本解析失败

问题描述 投票:0回答:1

情况

我刚刚克隆了一个同事正在开发的 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 dart flutter-dependencies flutter-pub flutter-pubspec
1个回答
2
投票

我认为从 Flutter >= 3.10(自己做一些研究以确保),flutter_localizations 需要 intl >= 0.18.0。所以有2个解决方案:

  • 如果 date_time_picker 有使用较新版本 Flutter 的版本,请改用它,
  • 将 Flutter SDK 降级到支持 intl 0.17.0的版本。
© www.soinside.com 2019 - 2024. All rights reserved.