跳到主要內容

sdk_version_as_expression_in_const_context

在常量表達式中使用 as 表示式直到 2.3.2 版本才支援,但此程式碼需要在更早的版本上執行。

描述

#

當在 SDK 約束的下限小於 2.3.2 的程式碼中發現 常量上下文 內使用了 as 表示式時,分析器會生成此診斷。在早期版本中不支援在 常量上下文 中使用 as 表示式,因此此程式碼將無法在更早版本的 SDK 上執行。

示例

#

以下是一個 pubspec 檔案示例,該檔案定義了 SDK 約束,其下限小於 2.3.2

yaml
environment:
  sdk: '>=2.1.0 <2.4.0'

在該 pubspec 檔案所在的 Package 中,如下程式碼會產生此診斷

dart
const num n = 3;
const int i = n as int;

常見修復方法

#

如果你不需要支援舊版本的 SDK,則可以提高 SDK 約束,以允許使用此表示式

yaml
environment:
  sdk: '>=2.3.2 <2.4.0'

如果你需要支援舊版本的 SDK,則可以重寫程式碼以不使用 as 表示式,或修改程式碼使 as 表示式不在 常量上下文

dart
num x = 3;
int y = x as int;