149

我遵循了“启用空安全性”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)。

我怎样才能做到这一点?

4

13 回答 13

238

首先,您应该通读指南以了解不健全的 null 安全性。如果您确定要以不健全的 null 安全性运行应用程序,则可以使用以下命令:

flutter run --no-sound-null-safety

--no-sound-null-safety选项没有在文章中记录,但是,在过去的几个月里,我没有遇到任何问题(尤其是在整个 Flutter 框架已迁移到 null 安全性之后)。

文档现已更新以包含此内容。请参阅测试或运行混合版本程序

IDE 运行参数/配置

要在您选择的 IDE 中进行设置,您可以使用:

  • IntelliJ / Android Studio中:“编辑配置”(在您的运行配置中)→“附加运行参数”。
  • Visual Studio Code中:在您的用户设置中搜索“Flutter run additional args”。

在这两种情况下,添加--no-sound-null-safety.

测试配置

对于测试,你会想要做同样的事情:

  • IntelliJ / Android Studio中:“编辑配置”(在您的运行配置中)→“附加参数”。
  • Visual Studio Code中:在您的用户设置中搜索“Flutter 测试附加参数”。

在这两种情况下,添加--no-sound-null-safety.

于 2020-11-19T18:23:11.090 回答
111

在 Android Studio 中:

运行 →编辑配置添加额外的运行参数--no-sound-null-safety

在此处输入图像描述

于 2021-03-21T21:03:55.967 回答
38

如果使用 Visual Studio Code,请在项目根目录中创建文件.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"
                            ]
                }
        ]
}
于 2021-04-09T21:00:02.277 回答
30

如果您使用的是Visual Studio Code,请转到:

  • 菜单文件首选项设置

  • 搜索“Flutter 运行附加参数”

  • 然后点击Add Item

  • 现在输入--no-sound-null-safety

  • 单击OK

于 2021-06-26T16:09:00.697 回答
16

如果您的代码未完全迁移到空安全,您会遇到此错误。您可以运行“混合版本”代码:

  • 使用Android Studio IDE

    复制: --no-sound-null-safety

    在此处输入图像描述

    在此处输入图像描述

  • 在 Dart 文件中

    // @dart=2.9在文件顶部添加main.dart并使用 Play ► 图标运行应用程序。

    // @dart=2.9
    import 'package:flutter/material.dart';
    
    void main() {
      //...
    }
    
  • 使用命令行

    flutter run --no-sound-null-safety
    

    或者具体一点(比如在Chrome中)

    flutter run -d chrome --no-sound-null-safety
    
于 2021-08-28T22:17:58.067 回答
13

如果您使用Visual Studio Code并在您的单元测试中遇到它。

Visual Studio代码→首选项设置搜索设置,输入“flutter test”Dart:Flutter Test Additional Args,添加项目添加“ --no-sound-null-safety

--no-sound-null-safety 描述图片

于 2021-04-03T08:37:45.720 回答
8

如果您想使用 运行您的项目--no-sound-null-safety,您可以将此行添加到main.dart文件顶部(第一行)并带有注释...

// @dart=2.9

然后你的项目运行--no-sound-null-safety...

于 2021-04-18T08:03:38.317 回答
5
  1. 在终端执行以下命令接受所有 SDK 包许可

    flutter doctor --android-licenses
    
  2. 在终端中运行以下命令,检查是否有任何平台依赖项来完成设置:

    flutter doctor
    

    输出:

    医生总结(要查看所有详细信息,请运行flutter doctor -v):

    [√] Flutter (Channel dev, 2.2.0-10.1.pre, on Microsoft Windows [Version 10.0.19042.928], locale en-US)

    [√] Android 工具链 - 为 Android 设备开发(Android SDK 版本 30.0.3)

    [√] Chrome - 为网络开发

    [√] Android Studio(4.1.0版)

    [√] Visual Studio Code(1.55.2版)

    [√] 连接设备(3 个可用)

    • 未发现任何问题!

  3. 如果发现问题,则执行以下命令以构建具有不健全的 null 安全性的应用程序

    flutter run --no-sound-null-safety
    
于 2021-04-27T09:25:29.853 回答
5

dart pub outdated --mode=null-safety

在终端中,如果有开发依赖项更新,则更新依赖项。

这可能会有所帮助。

于 2021-07-06T04:40:56.340 回答
4

出现问题是因为 Flutter 框架(版本 2.2.0 及更高版本)现在支持开箱即用的健全的 null 安全性,但是pub.dev上的许多包和插件尚未迁移到 null 安全性,所以这提高了运行buildorrun命令时出错。

--no-sound-null-safety要解决此问题,请在命令中添加标志。

例子:

flutter build [Target] --no-sound-null-safety

目标参数:

对于安卓:

"apk" or "appbundle"

对于 iOS:

"ipa"
于 2021-08-06T22:06:48.587 回答
1

添加到creatorormaybenot的答案

如果您构建的APK文件或AAB文件没有可靠的 null 安全性:

只需在您的终端上执行此操作

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

或者

flutter build apk --release --no-sound-null-safety
于 2021-10-18T08:59:17.770 回答
0

打开终端 → 使用此命令 → flutter run -d chrome --no-sound-null-safety

这应该有效。

于 2021-09-15T05:06:48.250 回答
0

将您的库版本更新到最新版本。现在一天大部分图书馆都支持。

于 2022-01-16T05:37:20.337 回答