flutter_test из sdk запрещен, решение проблемы не удалось

У меня возникла эта проблема, когда я добавил http зависимость в свой проект флаттера. Может кто-нибудь, пожалуйста, помогите мне с этим?

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, или если указано, что зависит от коллекции ***, чем измените версию коллекции.

Другие вопросы по тегам