Flutter: не удалось решить версию в pub get
Ситуация
Я только что клонировал проект Flutter, над которым работают мои коллеги, но не могу заставить его работать на своем ноутбуке. Я использую Macbook Pro, такой же, как и они. У них это работает, но не у меня.
Проблема вflutter pub get
илиflutter upgrade
. Это ошибка:
Разрешение зависимостей...
Примечание: intl привязан к версии 0.18.1 с помощью flutter_localizations из flutter SDK. Подробности см. на https://dart.dev/go/sdk-version-pinning .
Поскольку trooms зависит от flutter_localizations из SDK, который зависит от intl 0.18.1, требуется intl 0.18.1. Итак, поскольку trooms зависит от intl ^0.17.0, определение версии не удалось.
Процесс завершен с кодом завершения 1
И это мои зависимости:
name: trooms
description: Web, Android and iOS App for TROOMS.
publish_to: 'none'
version: 1.0.0+1
environment:
sdk: ">=2.12.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
cupertino_icons: ^1.0.4
intl: 0.18.1
json_serializable: ^6.1.6
json_annotation: ^4.4.0
firebase_core: ^2.0.3
firebase_auth: ^4.1.3
cloud_firestore: ^4.1.0
firebase_analytics: ^10.0.6
firebase_crashlytics: ^3.0.6
firebase_performance: ^0.9.0+6
firebase_storage: ^11.0.6
image_picker: ^0.8.6
flutter_image_slideshow: ^0.1.4
cloud_functions: ^4.0.5
logging: ^1.0.2
flutter_riverpod: ^2.1.1
flutter_launcher_icons: ^0.11.0
font_awesome_flutter: ^10.1.0
flutterfire_ui: ^0.4.0+2
url_launcher: ^6.0.20
beamer: ^1.5.3
q_form:
git:
url: //url
flutter_native_splash: ^2.1.5
date_time_picker: ^2.1.0
table_calendar: ^3.0.5
flutter_beacon: ^0.5.1
google_fonts: ^3.0.1
dev_dependencies:
flutter_app_name: ^0.1.1
build_runner: ^2.1.10
fake_cloud_firestore: ^2.0.1
firebase_auth_mocks: ^0.9.1
firebase_storage_mocks: ^0.6.0+1
flutter_test:
sdk: flutter
flutter_lints: ^2.0.1
get: ^4.6.1
flutter_app_name:
name: "TROOMS"
flutter_icons:
android: true
ios: true
remove_alpha_ios: true
image_path: "assets/icon/trooms-ulm-logo.png"
adaptive_icon_background: #ffffff
flutter_lints: ^1.0.4
flutter:
uses-material-design: true
generate: true
assets:
- assets/
- assets/icon/
Первая попытка решения
Я пробовал менять SDK на такой же, как у них, но это не сработало. По какой-то причине я не могу понизить версию Flutter до точно такой же версии:
~ TROOMS % flutter downgrade v3.7.7 Downgrade flutter to version 3.3.9 ? [y|n]:
Вторая попытка решения
Затем я изменил версию пакета intl на необходимую:intl: 0.18.1
. Это новая ошибка:
Разрешение зависимостей...
Поскольку date_time_picker 2.1.0 зависит от intl ^0.17.0 и ни одна версия date_time_picker не соответствует >2.1.0 <3.0.0, date_time_picker ^2.1.0 требует intl ^0.17.0. Итак, поскольку trooms зависит как от intl 0.18.1, так и от date_time_picker ^2.1.0, решение версии не удалось.
Процесс завершен с кодом завершения 1
Третья попытка решения
Я также пробовал менять на что-нибудь подобное
dependencies:
flutter:
sdk: flutter
flutter_localizations: any
Но также не принято:
Разрешение зависимостей...
Поскольку трумы зависят от несуществующих flutter_localizations (не удалось найти пакет flutter_localizations на https://pub.dev), определение версии не удалось.
Процесс завершен с кодом выхода 69
Я сделал то же самое дляintl
. Тот же вывод.
Вопросы
Так что похоже, что пакетыdate_time_picker
иflutter_localizations
оба зависят от разных версий intl , которые несовместимы и поэтому не работают. Итак, как мне решить проблему с пакетами, имеющими разные закрепленные версии одной и той же зависимости?
НО меня смущает то, что у моих коллег работает один и тот же код , имеющий одинаковые зависимости, хотя у нас разные SDK. Может ли SDK чем-то заняться?
1 ответ
Я думаю, что начиная с Flutter >= 3.10 (чтобы быть уверенным, проведите небольшое исследование), flutter_localizations требует intl >= 0.18.0 . Итак, есть 2 решения:
- если у date_time_picker есть версия, использующая более новую версию Flutter, используйте ее,
- понизьте ваш Flutter SDK до версии, поддерживающей intl 0.17.0.