Невозможно работать со звуковой нулевой безопасностью, потому что зависимости не поддерживают нулевую безопасность
Я следил за "Включение нулевой безопасности" на
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
Вы столкнетесь с этой ошибкой, если ваш код не полностью переведен на нулевую безопасность. Вы можете запустить свой код "смешанной версии":
Использование IDE
Добавлять
// @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
Запустить
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
Выполните следующую команду в терминале, чтобы принять все лицензии пакета SDK.
flutter doctor - лицензии на андроид
Выполните следующую команду в терминале, чтобы проверить, есть ли какие-либо зависимости платформы для завершения настройки:
трепещущий доктор
ВЫВОД:
Резюме доктора (чтобы увидеть все подробности, запустите 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)
• Проблем не обнаружено!
Если проблем не обнаружено, выполните следующую команду, чтобы создать приложение с ненадежной нулевой безопасностью.
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/установить
Обновите версию библиотеки до последней. теперь дни большая часть поддержки библиотеки.