英文:
How to solve dependency issues after a `flutter upgrade`?
问题
我在升级后努力解决了所有的依赖问题。
仍然存在一个问题,涉及到以下内容:
$ flutter pub get
解决依赖关系...
因为没有与 >9.0.2 <10.0.0 匹配的 i18n_extension 版本,而 i18n_extension 9.0.2 依赖于 sprintf ^7.0.0,所以 i18n_extension ^9.0.2 需要 sprintf ^7.0.0。
而 optimized_cached_image >=3.0.0 依赖于 sprintf ^6.0.0,因此 i18n_extension ^9.0.2 与 optimized_cached_image >=3.0.0 不兼容。
因此,由于 shokaze 依赖于 i18n_extension ^9.0.2 和 optimized_cached_image ^3.0.0,版本解析失败。
退出代码 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
。
我应该如何解决依赖问题?
英文:
I struggled to fix all the dependencies issues I had after the upgrade.
there is still one regarding
$ 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
And here is the yaml (I removed all the unnecessary lines for convenience):
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
I don't explicitly ask for sprintf
.
How could I solve the dependency issues?
答案1
得分: -1
这是Flutter中的一个常见问题,它发生是因为i18n_extension
和optimized_cached_image
这两个包依赖于不同版本的sprintf
包。具体来说,i18n_extension
依赖于sprintf
的版本^7.0.0
,而optimized_cached_image
依赖于sprintf
的版本^6.0.0
。这会导致冲突,因为这两个包要求同一依赖的不同版本。
以下是解决此问题的几种方法:
-
升级或降级其中一个包 - 检查
i18n_extension
和optimized_cached_image
的pub.dev列表,看是否有更新的版本可以解决依赖冲突。如果没有较新版本可用,您可以考虑降级其中一个包,前提是它与您的项目兼容。 -
覆盖依赖项 - 您可以在
pubspec.yaml
文件中覆盖sprintf
的版本,以使用特定版本。只有在最后一种情况下才应这样做,因为如果覆盖的版本与所有依赖于它的包不兼容,可能会导致意外行为。以下是如何执行此操作的示例:
dependency_overrides:
sprintf: ^7.0.0
- 向包维护者提问 - 如果以上两个选项都不起作用,您可以在其中一个包的GitHub页面上打开问题(根据您认为应更新
sprintf
依赖项的包),并要求维护者将包更新为与另一个包兼容的sprintf
版本。
请记住,在修改pubspec.yaml
文件后,运行flutter pub get
以更新您的依赖项。
英文:
This is a common problem in Flutter, and it's happening because the packages i18n_extension
and optimized_cached_image
depend on different versions of the sprintf
package. Specifically, i18n_extension
depends on version ^7.0.0
of sprintf
, while optimized_cached_image
depends on version ^6.0.0
. This causes a conflict because the two packages require different versions of the same dependency.
Here's a few ways to resolve this issue:
-
Upgrade or downgrade one of the packages - Check the pub.dev listings for
i18n_extension
andoptimized_cached_image
to see if there's a newer version of either package that resolves the dependency conflict. If a newer version isn't available, you might consider downgrading one of the packages if it's compatible with your project. -
Override the dependency - You can override the
sprintf
version in yourpubspec.yaml
file to use a specific version. This should only be done as a last resort, because it can lead to unexpected behavior if the overridden version isn't compatible with all packages that depend on it. Here's an example of how to do this:
dependency_overrides:
sprintf: ^7.0.0
- Ask the package maintainers - If neither of the above options work, you can open an issue on the GitHub page for one of the packages (whichever one you think should update their
sprintf
dependency) and ask the maintainers to update the package to use a version ofsprintf
that's compatible with the other package.
Remember to run flutter pub get
after making changes to your pubspec.yaml
file to update your dependencies
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论