Flutter 版本解决失败 firebase_auth ^1.4.1 和 http ^0.12.2

Posted

技术标签:

【中文标题】Flutter 版本解决失败 firebase_auth ^1.4.1 和 http ^0.12.2【英文标题】:Flutter version solving failed firebase_auth ^1.4.1 and http ^0.12.2 【发布时间】:2021-10-30 21:41:05 【问题描述】:

我是 Flutter 的新手。 我试图在我的颤振项目中添加 http: ^0.12.2 包,现有的 firebase 包发生冲突,我无法添加 http 包。

我尝试将频道更改为 dev。 还尝试添加 http ^0.10.0 的旧包,但问题仍然存在。 这是我遇到的错误

Running "flutter pub get" in fsp...                             
Because firebase_auth_web 1.3.1 depends on http_parser ^4.0.0 and no versions of firebase_auth_web match >1.3.1 <2.0.0, firebase_auth_web ^1.3.1 requires http_parser ^4.0.0.
And because http >=0.11.3+17 <0.13.0-nullsafety.0 depends on http_parser >=0.0.1 <4.0.0, http >=0.11.3+17 <0.13.0-nullsafety.0 is incompatible with firebase_auth_web ^1.3.1.
And because firebase_auth 1.4.1 depends on firebase_auth_web ^1.3.1 and no versions of firebase_auth match >1.4.1 <2.0.0, http >=0.11.3+17 <0.13.0-nullsafety.0 is incompatible with firebase_auth ^1.4.1.
So, because match11 depends on both firebase_auth ^1.4.1 and http ^0.12.2, version solving failed.
pub get failed (1; So, because match11 depends on both firebase_auth ^1.4.1 and http ^0.12.2, version solving failed.)
exit code 1

以下是我的pubspec.yaml 文件

# The following line prevents the package from being accidentally published to
# pub.dev using `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 used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+1

environment:
  sdk: ">=2.12.0 <3.0.0"

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
  firebase_auth: ^1.4.1
  firebase_core: ^1.3.0
  flutter_pdfview: ^1.0.4
  cloud_firestore: ^2.2.2
  firebase_database: ^7.1.1
  provider: ^5.0.0
  path: ^1.7.0
  http: ^0.12.2
loading_animations: "^2.1.0"

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_native_splash: ^1.2.0
flutter_native_splash: 
  color: "#2d63d6"
  image: assets/splash.jpg
  android: true
  ios: true
# 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.
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/

  # 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

提前致谢;)

【问题讨论】:

【参考方案1】:

因为正如消息所说,firebase_auth 需要 http_parser 正好是 ^4.0.0,但同时,http 需要 http_parser 小于 ^4.0.0。

您有两个选择,要么降级firebase_auth,要么升级http。问题是,您无法知道哪些版本实际上可以相互配合。

您可以运行此命令以了解更多信息

dart pub outdated

这会给你一个类似this的输出。

在可升级列中,它会告诉您哪些软件包有更新。

在可解决的列中,它会告诉您可以更新哪些软件包(如果有的话),因为有时会出现解决问题,这就是您正在发生的事情。

所以降级 firebase_auth 可能会奏效,如果确实如此,并且您想要它的最新版本,请运行此命令以查看 firebase_authhttp 的可解决问题

【讨论】:

感谢您的回复。我能够使用flutter pub outdated 命令解决它。首先,我分别更新了firebase_authfirebase_core,然后我运行了flutter pub upgrade 并升级了其余的包,之后我能够安装http 包。

以上是关于Flutter 版本解决失败 firebase_auth ^1.4.1 和 http ^0.12.2的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Pubnub 版本解决失败

Flutter easy_localization 和 intl 版本解决失败

firebase 消息传递和flutter sdk 驱动程序版本解决失败

flutter firebase 版本解决失败

Flutter 版本解决失败 firebase_auth ^1.4.1 和 http ^0.12.2

Flutter 设备预览和 Firebase 身份验证不兼容