无法为Flutter项目添加firebase_ui_auth包的版本冲突问题
问题
在Firebase项目中尝试使用firebase_ui_auth包实现认证功能,添加该包到pubspec.yaml后执行flutter pub get时出现版本冲突错误:
由于所有版本的firebase_ui_auth都依赖于SDK中的flutter_localizations,而后者依赖intl 0.18.0,因此所有版本的firebase_ui_auth都要求intl 0.18.0。但我的项目firat_bilgisayar_sistemleri同时依赖firebase_ui_auth ^1.1.15和intl ^0.17.0,导致版本解析失败。
已尝试执行flutter pub upgrade、flutter pub outdated、flutter pub upgrade --major-versions命令,问题仍未解决。
项目的pubspec.yaml内容如下:
name: firat_bilgisayar_sistemleri description: A new Flutter project. # The following line prevents the package from being accidentally published to # pub.dev using `flutter pub publish`. This is preferred for private packages. publish_to: 'none' # Remove this line if you wish to publish to pub.dev # The following defines the version and build number for your application. # A version number is three numbers separated by dots, like 1.2.43 # followed by an optional build number separated by a +. # Both the version and the builder number may be overridden in flutter # build by specifying --build-name and --build-number, respectively. # In Android, build-name is used as versionName while build-number used as versionCode. # Read more about Android versioning at https://developer.android.com/studio/publish/versioning # In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. version: 1.0.0+1 environment: sdk: '>=3.0.0-286.0.dev <4.0.0' # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions # consider running `flutter pub upgrade --major-versions`. Alternatively, # dependencies can be manually updated by changing the version numbers below to # the latest version available on pub.dev. To see which dependencies have newer # versions available, run `flutter pub outdated`. dependencies: flutter: sdk: flutter # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 provider: ^6.0.5 carousel_slider: ^4.2.1 line_icons: ^2.0.1 form_validator: ^2.1.1 #Core equatable: ^2.0.5 flutter_riverpod: ^2.3.2 kartal: ^2.8.0 #Firebase cloud_firestore: ^4.4.3 firebase_core: ^2.7.0 firebase_auth: ^4.2.9 firebase_ui_auth: ^1.1.15 #Utility animated_text_kit: ^4.2.2 intl: ^0.17.0 dev_dependencies: flutter_test: sdk: flutter # very_good_analysis: ^4.0.0+1 # # The "flutter_lints" package below contains a set of recommended lints to # encourage good coding practices. The lint set provided by the package is # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. # flutter_lints: ^2.0.0 # # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec # # The following section is specific to Flutter packages. flutter: # The following line ensures that the Material Icons font is # included with your application, so that you can use the icons in # the material Icons class. uses-material-design: true # To add assets to your application, add an assets section, like this: assets: - assets/images/ - assets/images/slider/ # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/assets-and-images/#resolution-aware # For details regarding adding assets from package dependencies, see # https://flutter.dev/assets-and-images/#from-packages # To add custom fonts to your application, add a fonts section here, # in this "flutter" section. Each entry in this list should have a # "family" key with the font family name, and a "fonts" key with a # list giving the asset and other descriptors for the font. For # example: # fonts: # - family: Schyler # fonts: # - asset: fonts/Schyler-Regular.ttf # - asset: fonts/Schyler-Italic.ttf # style: italic # - family: Trajan Pro # fonts: # - asset: fonts/TrajanPro.ttf # - asset: fonts/TrajanPro_Bold.ttf # weight: 700 # # For details regarding fonts from package dependencies, # see https://flutter.dev/custom-fonts/#from-packages
解决方案
这个问题的核心是版本依赖冲突:firebase_ui_auth强制要求intl版本至少为0.18.0,但项目指定了intl ^0.17.0。直接修改pubspec.yaml中的intl版本即可解决:
- 打开项目的
pubspec.yaml文件,找到dependencies下的intl配置项,将版本从^0.17.0修改为^0.18.0(或更高兼容版本):
#Utility animated_text_kit: ^4.2.2 intl: ^0.18.0
- 保存文件后,在终端执行:
flutter pub get
这样就能解决版本解析失败的问题,因为intl 0.18.0完全兼容项目环境(SDK >=3.0.0),同时满足firebase_ui_auth的依赖要求。
内容的提问来源于stack exchange,提问作者Furkan Yildiz
相关产品推荐
相关产品推荐

