代码之家  ›  专栏  ›  技术社区  ›  Stéphane de Luca

如何解决“flutter升级”后的依赖性问题?

  •  0
  • Stéphane de Luca  · 技术社区  · 2 年前

    升级后,我很难解决所有的依赖关系问题。

    关于

    $ flutter pub get
    
    Resolving dependencies...
    Because no versions of i18n_extension match >9.0.2 <10.0.0 and i18n_extension 9.0.2 depends on sprintf ^7.0.0, i18n_extension ^9.0.2 requires sprintf ^7.0.0.
    And because optimized_cached_image >=3.0.0 depends on sprintf ^6.0.0, i18n_extension ^9.0.2 is incompatible with optimized_cached_image >=3.0.0.
    So, because shokaze depends on both i18n_extension ^9.0.2 and optimized_cached_image ^3.0.0, version solving failed.
    exit code 1
    

    这是yaml(为了方便起见,我去掉了所有不必要的行):

    environment:
      sdk: '>=2.18.2 <3.0.0'
    
    dependencies:
      flutter:
        sdk: flutter
      flutter_localizations:
        sdk: flutter
    
      intl: ^0.18.0 #^0.17.0
      i18n_extension: ^9.0.2 #^5.0.1
      optimized_cached_image: ^3.0.0 #^3.0.1
    

    我没有明确要求 sprintf

    我该如何解决依赖性问题?

    1 回复  |  直到 2 年前
        1
  •  0
  •   Ercross    2 年前

    您可以使用包来提供一些使用过时依赖项的包 Vendor 。这是 a step-by-step article 关于如何提供包并在pub上发布。

    另一个 helpful article 关于解决代码中的依赖性地狱(DLL)错误。

        2
  •  -1
  •   70ny    2 年前

    这是Flutter中的一个常见问题,之所以会发生这种情况,是因为 i18n_extension optimized_cached_image 取决于的不同版本 sprintf 包裹明确地 i18n_扩展 取决于版本 ^7.0.0 属于 把格式数据写成串 虽然 优化的_cached_image 取决于版本 ^6.0.0 。这会导致冲突,因为这两个包需要相同依赖项的不同版本。

    以下是解决此问题的几种方法:

    1. 升级或降级其中一个程序包 -查看pub.dev列表 i18n_扩展 优化的_cached_image 查看是否有解决依赖关系冲突的任何一个包的更新版本。如果没有更新的版本,如果其中一个包与您的项目兼容,您可以考虑降级它。

    2. 覆盖依赖项 -您可以覆盖 把格式数据写成串 版本 pubspec.yaml 文件以使用特定版本。 这只能作为最后的手段,因为如果重写的版本与依赖它的所有包不兼容,可能会导致意外行为 。以下是如何执行此操作的示例:

    dependency_overrides:
      sprintf: ^7.0.0
    
    1. 询问包维护人员-如果以上两个选项都不起作用,你可以在GitHub页面上打开其中一个包的问题(无论你认为哪个包应该更新它们 把格式数据写成串 依赖项),并要求维护人员更新包以使用 把格式数据写成串 与另一个软件包兼容。

    记得跑步 flutter pub get 在对您的 pubspec.yaml 文件以更新依赖项

    推荐文章