Невозможно работать со звуковой нулевой безопасностью, потому что зависимости не поддерживают нулевую безопасность

Я следил за "Включение нулевой безопасности" на dart.dev а также перевел все мое приложение Flutter на нулевую безопасность.

Теперь я пытаюсь запустить его, используя flutter runОднако он не запустится из-за следующей ошибки:

Error: Cannot run with sound null safety, because the following dependencies
don't support null safety:

 - package:cloud_firestore_web
 - package:firebase_core_web
 - package:shared_preferences
 - package:url_launcher_web
 - package:firebase_auth
 - package:http
 - package:provider
...

For solutions, see https://dart.dev/go/unsound-null-safety
Failed to compile application.

В руководстве по URL-адресу сказано, что я должен "дождаться переноса зависимостей, прежде чем переносить свой пакет", но я хочу использовать NNBD сейчас.

Как я могу это сделать?

19 ответов

Решение

Во-первых, вы должны прочитать руководство, чтобы понять ненадежную нулевую безопасность.
Если вы уверены, что хотите запустить приложение с ненадежной нулевой безопасностью, вы можете использовать следующую команду:

flutter run --no-sound-null-safety

В --no-sound-null-safety Эта опция не описана в статье, однако я не испытывал с ней никаких проблем в течение последних нескольких месяцев (и особенно с тех пор, как весь фреймворк Flutter был переведен на нулевую безопасность).

Изменить: теперь документация обновлена, чтобы включить это. См. Раздел " Тестирование или запуск программ смешанной версии".

В Android Studio:

Выполнить -> Изменить конфигурации -> Добавить дополнительные аргументы запуска -> --no-sound-null-safety

Если вы используете VS Code, тогда

Перейти к файлу => Настройки => Настройки

Искать "Flutter run additional args"

нажмите "Добавить элемент"

тип --no-sound-null-safety

нажмите ОК

Вы столкнетесь с этой ошибкой, если ваш код не полностью переведен на нулевую безопасность. Вы можете запустить свой код "смешанной версии":

  • Использование IDE

    Копия: --no-sound-null-safety

  • В файле Dart

    Добавлять // @dart=2.9 наверху в твоем main.dart файл и запустите приложение с помощью значка Воспроизвести ►.

            // @dart=2.9
    import 'package:flutter/material.dart';
    
    void main() {
      //...
    }
    
  • Используя командную строку

            flutter run --no-sound-null-safety
    

    или, чтобы быть конкретным (скажем, в хроме)

            flutter run -d chrome --no-sound-null-safety
    

Если вы используете vscode. создать .vscode / launch.json в корне проекта и добавить

      "args": [
         "--no-sound-null-safety"
        ]

Полный код:

      {
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
            {
                    "name": "YOUR_PROJECT_NAME",
                    "program": "lib/main.dart",
                    "request": "launch",
                    "type": "dart",
                    "args": [
                            "--no-sound-null-safety"
                        ]
            }
    ]

}

Если вы использовали VSCdoe и столкнулись с этим в своем модульном тесте .

Код => Настройки => Настройки => Настройка поиска, введите «тест на флаттер» => Dart: Дополнительные аргументы теста флаттера, Добавить элемент => Добавить « --no-sound-null-security »

Если вы хотите запустить свой проект с параметром --no-sound-null-security, теперь вы добавляете эту строку в свой файл main.dart вверху (первая строка) с комментарием ..

// @dart=2.9

затем вы запускаете run --no-sound-null-security ...

Поддержка других отвечает тем, кто использует Android Studio для Flutter:

Изменить конфигурацию

(Вставить) Дополнительные аргументы запуска: --no-sound-null-security

Вы столкнетесь с этой ошибкой, если ваш код не полностью переведен на нулевую безопасность. Вы можете запустить свой код "смешанной версии":

  1. Использование IDE

    Добавлять // @dart=2.9 наверху в твоем main.dart файл и запустите приложение с помощью значка Воспроизвести ►.

            // @dart=2.9
    import 'package:flutter/material.dart';
    
    void main() {
      //...
    }
    
  2. Используя командную строку

            flutter run --no-sound-null-safety
    

    или, чтобы быть конкретным (скажем, в хроме)

            flutter run -d chrome --no-sound-null-safety
    

Источник

Запустить

       dart pub outdated --mode=null-safety

на терминале, и если есть обновление зависимости разработчика, обновите зависимость

это может помочь.

Проблема возникает из-за того, что фреймворк флаттера ( version 2.2.0 и Up) теперь поддерживает звуковую нулевую безопасность из коробки, но на pub.dev есть множество пакетов и плагинов, которые еще не переведены на нулевую безопасность, поэтому это вызывает ошибку при каждом запуске build или run команда

чтобы решить эту проблему, добавьте флаг --no-sound-null-safety в твоей команде

Опыт:

      flutter build --no-sound-null-safety
  1. Выполните следующую команду в терминале, чтобы принять все лицензии пакета SDK.

    flutter doctor - лицензии на андроид

  2. Выполните следующую команду в терминале, чтобы проверить, есть ли какие-либо зависимости платформы для завершения настройки:

    трепещущий доктор

    ВЫВОД:
    Резюме доктора (чтобы увидеть все подробности, запустите flutter doctor -v):

    [√] Flutter (Channel dev, 2.2.0-10.1.pre, в Microsoft Windows [версия 10.0.19042.928], локаль en-US)

    [√] Android toolchain - разработка для устройств Android (Android SDK версии 30.0.3)

    [√] Chrome - разработка для Интернета

    [√] Android Studio (версия 4.1.0)

    [√] VS Code (версия 1.55.2)

    [√] Подключенное устройство (доступно 3)

    • Проблем не обнаружено!

  3. Если проблем не обнаружено, выполните следующую команду, чтобы создать приложение с ненадежной нулевой безопасностью.

    flutter run -no-sound-null-safety

добавление в @creativecreatorormaybenot

если вы создаете файл apk или aab без звуковой безопасности

Просто сделайте это на своем терминале

      flutter build apk --split-per-abi --no-sound-null-safety

или

      flutter build apk --release --no-sound-null-safety

используйте это, это сработало для меня

        flutter pub upgrade --null-safety

откройте терминал -> используйте эту команду -> flutter run -d chrome --no-sound-null-security, это должно сработать

Для пользователя VSCode добавьте ниже в settings.json

      "dart.flutterRunAdditionalArgs": [
    "--no-sound-null-safety"
],

Предположим, в случае, если кто-нибудь получает эту ошибку для flutter_html: ^0.8.2

Добавьте следующее в свой pubspec.yamlфайл:

      dependencies:
  flutter_html: ^3.0.0-alpha.2

Итак, доказано, что использование любой зависимости в проекте должно быть последней версии, включающей механизм нулевой безопасности.

Итак, перед использованием "--no-sound-null-safety"решение, попробуйте найти и использовать обновленную версию ваших зависимостей.

Я бы порекомендовал вам всем установить этот пакет, чтобы сохранить контроль над нулевыми значениями в других реализациях:

https://pub.dev/packages/flutter_swiper_null_safety/установить

Обновите версию библиотеки до последней. теперь дни большая часть поддержки библиотеки.

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