无法以健全的空安全运行,因为依赖项不支持空安全

cre*_*not 97 dart flutter dart-null-safety

我遵循了“启用空安全”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.
Run Code Online (Sandbox Code Playgroud)

URL 上的指南说我应该“在迁移包之前等待依赖项迁移”,但我现在想使用 NNBD。

我怎样才能做到这一点?

cre*_*not 134

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

flutter run --no-sound-null-safety
Run Code Online (Sandbox Code Playgroud)

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

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

IDE 运行参数/配置

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

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

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


小智 70

在 Android Studio 中:

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

在此处输入图片说明


Cop*_*oad 55

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

\n\n


Erf*_*tfi 25

如果使用 vscode。在项目根目录中创建 .vscode/launch.json 并添加

"args": [
         "--no-sound-null-safety"
        ]
Run Code Online (Sandbox Code Playgroud)

完整代码:

{
        // 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"
                            ]
                }
        ]
}
Run Code Online (Sandbox Code Playgroud)


bal*_*u k 15

如果您使用的是VS Code

然后转到

文件=>首选项=>设置

搜索“Flutter 运行附加参数”

然后点击添加项目

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

单击确定


Yan*_*nni 8

如果您使用VSCode并在单元测试中遇到它。

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

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

  • 如果用于颤振测试,这将是正确的答案。但是,如果您在运行时遇到错误,则应该为 Flutter Run 添加附加参数。因此在“设置”中搜索“Flutter Run”。然后像上面一样添加。 (2认同)

小智 8

跑步

dart pub outdated --mode=null-safety
Run Code Online (Sandbox Code Playgroud)

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

这可能有帮助。


ABD*_*ALI 7

出现这个问题的原因是 Flutter 框架(版本 2.2.0 及更高版本)现在支持开箱即用的声音 null 安全,但pub.dev上有大量软件包和插件尚未迁移到 null 安全,因此这提高了每当您运行buildorrun命令时都会出错。

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

例子:

flutter build [Target] --no-sound-null-safety
Run Code Online (Sandbox Code Playgroud)

目标参数:

对于安卓:

"apk" or "appbundle"
Run Code Online (Sandbox Code Playgroud)

对于 iOS:

"ipa"
Run Code Online (Sandbox Code Playgroud)


Kav*_*a S 6

    \n
  1. 在终端中执行以下命令接受所有SDK包许可证

    \n
    flutter doctor --android-licenses\n
    Run Code Online (Sandbox Code Playgroud)\n
  2. \n
  3. 在终端中运行以下命令,检查是否有任何平台依赖项来完成设置:

    \n
    flutter doctor\n
    Run Code Online (Sandbox Code Playgroud)\n

    输出:

    \n

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

    \n

    [\xe2\x88\x9a] Flutter(频道开发,2.2.0-10.1.pre,在 Microsoft Windows [版本 10.0.19042.928],区域设置 en-US)

    \n

    [\xe2\x88\x9a] Android 工具链 - 为 Android 设备开发(Android SDK 版本 30.0.3)

    \n

    [\xe2\x88\x9a] Chrome - 网络开发

    \n

    [\xe2\x88\x9a] Android Studio(版本 4.1.0)

    \n

    [\xe2\x88\x9a] Visual Studio 代码(版本 1.55.2)

    \n

    [\xe2\x88\x9a] 连接的设备(3 个可用)

    \n

    \xe2\x80\xa2 未发现问题!

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

    \n
    flutter run --no-sound-null-safety\n
    Run Code Online (Sandbox Code Playgroud)\n
  6. \n
\n


小智 5

如果你想运行你的项目,--no-sound-null-safety那么现在你将这一行你的main.dart文件添加到顶部(第一行)并带有注释..

// @dart=2.9

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