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;