如何简单解决多依赖版本冲突?

How to solve multi dependency version conflicts simply?

我已经在android studio flutter 中导入了一个项目。但是,会出现大量的版本冲突。如果一个解决了另一个问题,另一个问题解决了,另一个问题解决了。我正在尝试获取所有包裹,它向我显示如下错误。

Because date_utils >=0.1.0+3 depends on intl ^0.16.0 and prokit_flutter depends on intl 0.17.0-nullsafety.2, date_utils >=0.1.0+3 is forbidden.
So, because prokit_flutter depends on date_utils ^0.1.0+3, version solving failed.

pub get failed (1; So, because prokit_flutter depends on date_utils ^0.1.0+3, version solving failed.)
Process finished with exit code 1

我的pubspec.yaml代码如下。

name: prokit_flutter
description: A new Flutter application.
version: 1.0.0+1

environment:
  sdk: ">=2.6.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

  cupertino_icons: ^1.0.0
  url_launcher: 5.0.3
  nb_utils: 3.1.6+7
  google_fonts: 1.1.0
  animations: 1.1.2
  intl: 0.17.0-nullsafety.2
  http: 0.12.2
  firebase_core: 0.5.0
  firebase_analytics: 6.0.0
  firebase_crashlytics: 0.1.4+1
  google_sign_in: 4.5.3
  html: 0.14.0+3
  share: 0.6.5
  mobx: ^1.2.1+2
  flutter_mobx: ^1.1.0+2

  flutter_statusbarcolor: 0.2.3
  simple_animations: 1.3.8
  snaplist: 0.1.8
  flutter_svg: 0.18.1
  flutter_slidable: 0.5.7
  flutter_staggered_grid_view: 0.3.2
  flutter_staggered_animations: 0.1.2

  geolocator: 5.3.2+2
  geocoder: 0.2.1
  google_maps_flutter: 0.5.21+3
  clustering_google_maps: 0.1.2
  razorpay_flutter: 1.2.2
  signature: 3.2.0
  liquid_swipe: 1.5.0
  lipsum: 1.0.1
  flutter_colorpicker: 0.3.4
  clippy_flutter: 1.1.1
  flutter_tags: ^0.4.8
  image_picker_gallery_camera: 0.1.6
  video_player: 0.10.11+2
  charts_flutter: ^0.9.0
  like_button: ^1.0.1
  flutter_reaction_button: ^1.0.1
  lottie: ^0.6.0
  showcaseview: ^0.1.6
  date_utils: ^0.1.0+3
  cached_network_image: ^2.3.1

  flutter_localizations:
    sdk: flutter

dev_dependencies:
  flutter_test:
    sdk: flutter
  mobx_codegen:
  build_runner: ^1.9.0
  #flutter packages pub run build_runner build

flutter:

  uses-material-design: true

  assets:
    - images/smartDeck/images/

  fonts:
    - family: Andina
      fonts:
        - asset: fonts/andina.ttf

并且有4-5个依赖版本错误。我怎样才能一键解决这个版本错误,或者我可以以某种方式跳过这个版本问题并完成这件事。请帮助,提前致谢。

您可以在 pubspec.yaml 中使用 dependency_overrides 来强制使用特定的软件包版本。包版本将覆盖整个应用程序中对依赖项的任何引用。

在你的情况下你可以使用

dependencies:
  flutter:
    sdk: flutter
  ...

  cupertino_icons: ^1.0.0

dependency_overrides:
  intl: ^0.17.0-nullsafety.2

有关详细信息,请参阅 dependency_overrides

将 intl: 0.17.0-nullsafety.2 版本替换为 intl: 0.16.1 并从依赖项覆盖中删除 intl。 现在,运行 pub get 命令。

您可以简单地更改导致与您的 dart SDK 兼容的另一个版本发生冲突的包版本。我试了一下,问题解决了。

每当依赖项之间发生冲突时,最简单的解决方案 就是删除这两个依赖项的版本号并键入 'any',前面不加引号。

例如假设以下两个依赖冲突:

shared_preferences: ^0.5.7+3  
requests: ^3.3.0

然后执行以下操作:

shared_preferences: any  
requests: any

之后执行 pub get 问题将得到解决。现在,最重要的是,不要对这个表单留下任何依赖。而是转到 pubspec.lock 文件并搜索这两个依赖项。 Flutter自己选择不冲突的版本,复制过来替换成pubsec.yaml