Как решить проблемы с зависимостями после «обновления флаттера»?
Я изо всех сил пытался исправить все проблемы с зависимостями, которые возникли у меня после обновления.
есть еще один относительно
$ 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
.
Как я могу решить проблемы с зависимостью?
2 ответа
Вы можете продавать некоторые пакеты, используя устаревшие зависимости, используя пакет Vendor. Вот пошаговая статья о том, как продать пакет и опубликовать его в паблике.
Еще одна полезная статья об устранении ошибки «ада зависимостей» (DLL) в вашем коде.
Это распространенная проблема во Flutter, и она происходит потому, что пакеты зависят от разных версий пакета. Конкретно зависит от версии^7.0.0
из , хотя зависит от версии^6.0.0
. Это вызывает конфликт, поскольку двум пакетам требуются разные версии одной и той же зависимости.
Вот несколько способов решить эту проблему:
Обновите или понизьте версию одного из пакетов . Проверьте списки pub.dev на наличие
i18n_extension
иoptimized_cached_image
чтобы узнать, существует ли более новая версия любого пакета, разрешающая конфликт зависимостей. Если более новая версия недоступна, вы можете рассмотреть возможность понижения версии одного из пакетов, если он совместим с вашим проектом.Переопределить зависимость . Вы можете переопределить версию в файле, чтобы использовать определенную версию. Это следует делать только в крайнем случае, поскольку это может привести к неожиданному поведению, если переопределенная версия несовместима со всеми пакетами, которые от нее зависят . Вот пример того, как это сделать:
dependency_overrides:
sprintf: ^7.0.0
- Спросите разработчиков пакетов. Если ни один из вышеперечисленных вариантов не работает, вы можете открыть проблему на странице GitHub для одного из пакетов (в зависимости от того, какой из них, по вашему мнению, должен обновить их зависимость) и попросить сопровождающих обновить пакет, чтобы использовать версию
sprintf
это совместимо с другим пакетом.
Не забудьте бежатьflutter pub get
после внесения изменений в вашpubspec.yaml
файл для обновления ваших зависимостей