繁体   English   中英

无法以声音 null 安全运行,因为依赖项不支持 null 安全

[英]Cannot run with sound null safety because dependencies don't support null safety

我在 dart.dev 上遵循了“启用dart.dev安全”,并将我的整个 Flutter 应用程序迁移到 null 安全。

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

我怎样才能做到这一点?

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

flutter run --no-sound-null-safety

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

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

IDE 运行参数/配置

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

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

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

在 Android Studio 中:

运行 --> 编辑配置 --> 添加额外的运行参数 --> --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"
                            ]
                }
        ]
}

如果您使用的是VS Code

然后转到

文件=>首选项=>设置

搜索“Flutter 运行附加参数”

然后点击添加项目

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

单击确定

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

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

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

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

// @dart=2.9

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

  1. 在终端执行以下命令,接受所有SDK包许可

    颤振医生 --android-licenses

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

    扑医生

    输出:
    医生摘要(要查看所有详细信息,请运行 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版本)

    [√] VS Code(1.55.2 版本)

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

    • 未发现问题!

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

    颤动运行 --no-sound-null-safety

 dart pub outdated --mode=null-safety

在终端上,如果有开发依赖更新,则更新依赖

这可能会有所帮助。

问题发生是因为 Flutter 框架( version 2.2.0和 Up)现在支持开箱即用的声音空安全,但 pub.dev 上有很多包和插件尚未迁移到空安全,因此无论何时运行都会引发错误buildrun命令

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

经验:

flutter build --no-sound-null-safety

假设,以防万一有人收到flutter_html: ^0.8.2的错误。

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

dependencies:
  flutter_html: ^3.0.0-alpha.2

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

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

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

  • 使用IDE

    副本:-- --no-sound-null-safety

    在此处输入图片说明

    在此处输入图片说明

  • 在 Dart 文件中

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

     // @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 ,这应该可以工作

添加到@creativecreatorormaybenot

如果您正在构建没有声音安全性的 apk 文件或 aab 文件

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

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

或者

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

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

对于Visual Studio Code用户,将以下内容添加到文件settings.json

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

用这个对我有用

  flutter pub upgrade --null-safety

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM