簡體   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