无法使用声音空安全运行,因为依赖项不支持空安全

我已经遵循了";启用空安全";在dart.dev已迁移,我的整个颤振应用程序都是零安全的。

现在,我尝试使用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)。

我该怎么做?

353573 次浏览

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

flutter run --no-sound-null-safety

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

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

IDE运行参数/配置

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

  • Intellij/安卓工作室中:“编辑配置”(在运行配置中)→其他运行参数。
  • Visual Studio代码中:搜索";颤振运行附加参数";在您的用户设置中。

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

测试配置

对于测试,您将需要执行相同的操作:

  • Intellij/安卓工作室中:“编辑配置”(在运行配置中)→";附加自变量";。
  • Visual Studio代码中:搜索“颤振试验附加参数”在您的用户设置中。

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

在Android Studio中:

运行→编辑配置添加其他运行参数--无声-零-安全

Enter image description here

如果您正在使用Visual Studio代码,并在您的单元测试中面对它。

Visual Studio代码→首选项设置搜索设置,键入";颤振试验飞镖:颤振测试附加参数,添加项目添加";--no-sound-null-safety";

--no-sound-null-safety description picture

如果使用Visual Studio代码,请在项目根目录中创建文件.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"
]
}
]
}

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

// @dart=2.9

那么您的项目将以--no-sound-null-safety..运行。

  1. 在终端中

    执行以下命令以接受所有SDK包许可证

    flutter doctor --android-licenses
    
  2. 在终端中

    运行以下命令,以检查是否存在任何平台依赖项来完成设置:

    flutter doctor
    

    产量:

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

    [√]颤动(通道开发,2.2.0-10.1.pre,适用于Microsoft Windows[版本10.0.19042.928],区域设置为en-US)

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

    [√]Chrome-为Web开发

    [√]Android Studio(版本4.1.0)

    [√]Visual Studio代码(版本1.55.2)

    【√】连接设备(3个可用)

    •未发现问题!

  3. 如果发现没有问题,则执行以下命令以构建一个具有不可靠的空安全性的应用程序

    flutter run --no-sound-null-safety
    

简单的解决方案

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

  • 菜单文件首选项设置

  • 搜索";颤振运行附加参数";

  • 然后单击“_ABC ”_0

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

  • 单击“

    _ABC ”_0。

运行

dart pub outdated --mode=null-safety

在终端中,如果存在开发相关性更新,则更新该相关性。

那可能会有帮助。

发生此问题的原因是,Flutter框架(版本2.2.0及更高版本)现在支持开箱即用的声音空安全,但Pub.dev上的大量软件包和插件尚未迁移到空安全,因此每当您运行buildrun命令时,都会引发此错误。

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

示例:

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

目标参数:

对于Android:

"apk" or "appbundle"

对于IOS:

"ipa"

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

  • 使用Android StudioIDE

    抄送:--no-sound-null-safety

    Enter image description here

    enter image description here

  • 在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
    

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

这个应该能用。

添加到CreativeCreator或MaybEno的答案

如果您正在构建APK文件或AAB文件,而没有声音空安全:

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

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

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

将库版本更新为最新版本。如今大部分图书馆都支持。

假设,在这种情况下,对于flutter_html: ^0.8.2,任何人都会得到此错误。

将以下内容添加到pubspec.yaml文件中:

dependencies:
flutter_html: ^3.0.0-alpha.2

因此,证明了在项目中使用的任何依赖项都必须是包含空安全机制的最新版本。

因此,在使用"--no-sound-null-safety"解决方案之前,请尝试搜索并使用您的依赖项的升级版本。

对于Visual Studio代码用户,请将下面的内容添加到settings.JSON

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