You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter项目pub get依赖版本冲突问题求助

解决Flutter项目依赖版本冲突问题

问题背景

克隆同事的Flutter项目后,在同款MacBook Pro上无法运行,执行flutter pub get或flutter upgrade时出现依赖冲突错误。

错误信息

Resolving dependencies...
Note: intl is pinned to version 0.18.1 by flutter_localizations from the flutter SDK.
Because trooms depends on flutter_localizations from sdk which depends on intl 0.18.1, intl 0.18.1 is required.
So, because trooms depends on intl ^0.17.0, version solving failed.
Process finished with exit code 1

项目依赖配置(pubspec.yaml)

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版本v3.7.7,但执行flutter downgrade v3.7.7只能降级到v3.3.9,无法匹配指定版本
  • 将intl包版本改为0.18.1后,出现date_time_picker 2.1.0依赖intl ^0.17.0的冲突错误
  • 尝试将flutter_localizations改为any,提示无法找到该包,对intl执行相同操作也无效

疑问

  1. date_time_picker与flutter_localizations依赖不同版本的intl导致冲突,该如何解决这类依赖版本冲突问题?
  2. 为何相同代码在同事设备上可正常运行,是否与SDK版本有关?

解决方案

针对依赖冲突的解决办法

  1. 升级date_time_picker到兼容intl 0.18.1的版本
    查看date_time_picker的版本更新记录,找到支持intl ^0.18.0的版本(比如最新稳定版),将pubspec.yaml中的date_time_picker: ^2.1.0替换为对应版本,再执行flutter pub get。

  2. 使用dependency_overrides强制统一intl版本
    在pubspec.yaml末尾添加以下配置,强制所有依赖使用intl 0.18.1:

    dependency_overrides:
      intl: 0.18.1
    

    注意:这种方式会忽略其他依赖对intl的版本要求,需要后续测试date_time_picker功能是否正常,避免潜在兼容性问题。

  3. 精准切换到同事使用的Flutter SDK版本
    直接用flutter downgrade无法指定版本时,可通过以下两种方式:

    • 手动下载v3.7.7版本的SDK压缩包,解压后替换本地Flutter SDK目录
    • 使用Flutter版本管理工具fvm:
      # 安装fvm
      brew install fvm
      # 安装指定版本
      fvm install 3.7.7
      # 在当前项目中使用该版本
      fvm use 3.7.7
      

关于同事设备正常运行的原因

确实和SDK版本直接相关:不同版本的Flutter SDK中,flutter_localizations依赖的intl版本不同。同事使用的v3.7.7版本SDK里,flutter_localizations依赖的intl版本是0.17.x,和项目中指定的intl ^0.17.0兼容;而你当前的SDK版本更高,flutter_localizations已升级为依赖intl 0.18.1,因此触发版本冲突。


内容的提问来源于stack exchange,提问作者JAgüero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 14:35:47