Flutter项目依赖版本冲突及txapita移除问题求助
问题核心
- 依赖冲突:老旧版本的
cloud_firestore(0.11.x-0.14.x)与firebase_core ^2.4.1完全不兼容,同时google_sign_in ^5.4.2和旧版cloud_firestore依赖的quiver版本冲突,导致pub get失败。 - 项目名称残留:
txapita是原项目名称,修改名称后需清理缓存才能彻底移除残留。
翻译后的错误信息
因为 google_sign_in >=5.4.0 依赖于 google_sign_in_platform_interface ^2.2.0,而后者依赖于 quiver ^3.0.0,所以 google_sign_in >=5.4.0 需要 quiver ^3.0.0。
同时,cloud_firestore >=0.14.0-dev.1 <0.17.0-1.0.nullsafety.0 依赖于 quiver ^2.0.0,因此 google_sign_in >=5.4.0 和 cloud_firestore >=0.14.0-dev.1 <0.17.0-1.0.nullsafety.0 不兼容。
另外,cloud_firestore >=0.13.3 <0.14.0-dev.1 依赖于 firebase_core ^0.4.4,cloud_firestore >=0.11.0 <0.13.3 依赖于 firebase_core ^0.4.0,所以 cloud_firestore >=0.11.0 <0.14.0-dev.1 需要 firebase_core ^0.4.0。
由此可知,如果同时使用 google_sign_in >=5.4.0 和 cloud_firestore >=0.11.0 <0.17.0-1.0.nullsafety.0,就必须使用 firebase_core ^0.4.0。
而你的项目依赖于 cloud_firestore >=0.11.0 <0.14.0+1,所以 google_sign_in >=5.4.0 要求 firebase_core ^0.4.0。
但你的项目同时依赖了 firebase_core ^2.4.1 和 google_sign_in ^5.4.2,导致版本解析失败。
pub get 执行失败(1;因为 txapita 同时依赖 firebase_core ^2.4.1 和 google_sign_in ^5.4.2,版本解析失败。)
退出码 1
解决步骤
1. 修复依赖冲突
- 先升级Dart SDK版本,
firebase_core ^2.4.1要求Dart 2.16+、Flutter 3.0+,修改pubspec.yaml的environment字段:environment: sdk: ">=2.16.0 <4.0.0" - 替换老旧的
cloud_firestore版本,同时清理null版本依赖(指定具体兼容版本),修改后的dependencies示例:dependencies: flutter: sdk: flutter cloud_firestore: ^4.3.0 # 与firebase_core 2.4.1兼容的版本 cupertino_icons: ^1.0.5 firebase_auth: ^4.2.6 firebase_core: ^2.4.1 firebase_messaging: ^14.2.1 flutter_google_places: ^0.3.0 flutter_spinkit: ^5.1.0 geocoder: ^0.2.1 geoflutterfire: ^3.0.1 geolocator: ^9.0.2 google_maps_flutter: ^2.2.3 google_maps_webservice: ^0.0.20 http: ^0.13.5 location: ^4.4.0 modal_bottom_sheet: ^2.1.0 percent_indicator: ^4.2.2 provider: ^6.0.5 rxdart: ^0.27.7 shared_preferences: ^2.0.15 uuid: ^3.0.7 url_launcher: ^6.1.10 get_it: ^7.2.0 get: ^4.6.5 share_plus: ^6.3.0 google_sign_in: ^5.4.2 # 该版本与新版Firebase依赖兼容 path_provider: ^2.0.11 path_provider_windows: ^2.1.3 shared_preferences_windows: ^2.1.2 path_provider_platform_interface: ^2.0.0 platform: ^3.1.0 - 执行命令更新依赖:
flutter clean flutter pub get
2. 彻底移除txapita项目名称残留
- 修改pubspec.yaml的
name字段为新名称,比如:name: my_new_flutter_app description: A new Flutter application. - 执行清理命令清除缓存:
flutter clean rm -rf .dart_tool # Windows系统执行:rd /s /q .dart_tool flutter pub get
内容的提问来源于stack exchange,提问作者broken_mold_web

