flutter_test из sdk запрещен, решение проблемы не удалось
11 ответов
Если вы получили сообщение:
Поскольку каждая версия flutter_test из sdk зависит от...
Это означает, что flutter_test зависит от зависимости с версией ниже, чем вы указали в другой зависимости.
Чтобы решить эту проблему, откройте pubspec.yaml и удалите номер версии зависимости проблемы:
Пример:
+ Изменить
archive: ^2.0.13 --> remove this number
Кому:
archive:
Вы предоставили или пытаетесь использовать http: ^0.12.0
зависимость от реализации вызовов API в файле pubspec.yaml, но flutter_test потребует http: ^0.11.3+17
, Вот почему это не удается. Пожалуйста, замените
dependencies:
flutter:
sdk: flutter
http: ^0.12.0
с
dependencies:
flutter:
sdk: flutter
http: ^0.11.3
Надеюсь, это поможет вам.
Я столкнулся с этой ошибкой при попытке обновить пакет коллекции .
Моя ошибка:
Because butler_labs depends on flutter from sdk which depends on collection 1.17.1, collection 1.17.1 is required.
So, because butler_labs depends on collection ^1.17.2, version solving failed.
Решением было запуститьflutter update-packages --force-upgrade
который обновил зависимости в моем локальном экземпляре Flutter. Эта команда упоминается в официальной документации .
Я столкнулся с аналогичной ошибкой. Я решил это, удалив все номера версий из
dependencies:
раздел в.
Итак, если мой
pubspec.yaml
раньше выглядело так:
dependencies:
freezed_annotation: ^0.14.3
Я изменил его на это:
dependencies:
freezed_annotation:
Я предполагаю, что при этом будет получена последняя «возможная» версия каждого пакета.
В моем случае я как-то удалил
sdk: flutter
:
dependencies:
flutter:
sdk: flutter
Попробуйте изменить версию зависимости, которую вы добавили в файл pubspec.yaml. Не используйте текущую или последнюю версию. Попробуйте некоторые предыдущие версии зависимости.
например, если вы используете последнюю версию sqflite, измените ее на предыдущую версию, а затем повторно запустите весь проект.
В моем случае IDE ссылалась на более старую версию dart из-за fvm. Кажется, кнопка "Выполнить" называется
fvm flutter run
, но нет
flutter run
как я и предполагал. После того, как я удалил папку fvm из проекта, проблема исчезла.
Допустим, пакет сопоставителя столкнулся со следующей проблемой, которая является реальным случаем, с которым я сталкивался в прошлом:
Because matcher >=0.12.15 depends on test_api ^0.5.0 and every version of flutter_test from sdk depends on test_api 0.4.16, matcher >=0.12.15 is incompatible with flutter_test from sdk.
So, because myapp depends on both flutter_test from sdk and matcher ^0.12.15, version solving failed.
Просто выполните три команды последовательно:
flutter pub remove matcher
flutter pub add --dev matcher
flutter pub get
Наконец, происходит изменение строки вpubspec.yaml
:
# before
matcher: ^0.12.15
# after
matcher: ^0.12.13
Иmyapp
можно успешно запустить, используя приведенное выше решение для обновления флаттера в стабильном канале и обновления пакетов флаттера паба:
# upgrade flutter in channel stable
flutter channel stable
flutter upgrade
# upgrade flutter pub packages
flutter pub outdated
flutter pub upgrade
Можете ли вы предоставить зависимости в вашем pubspec.yaml
? Похоже, ваше приложение зависит как минимум http 0.12.0
но flutter_test специально требует http 0.11.3+17
(старая версия), что делает его неудачным.
Если в вашем приложении не так много зависимостей, которые могут сломаться, вы можете попробовать обновить версию Flutter:
flutter upgrade
. Скорее всего, это решит эту проблему. Но всегда помните, что ваше приложение может сломаться в неожиданных местах. Так что все в порядке, если:
- либо вы делаете это для небольшого приложения
- или это большое приложение на работе, и у него есть обширные тесты, которые скажут вам, что что-то сломалось
- если большое приложение без тестов, обязательно протестируйте все важные места приложения, где используются зависимости
Измените версию зависимых атрибутов внутри pubspec.yaml, если указано, что зависит от http ***, чем измените версию http, или если указано, что зависит от коллекции ***, чем измените версию коллекции.