sdk_version_bool_operator_in_const_context
在常量上下文中對 'bool' 運算元使用運算子 '{0}' 的功能直到 2.3.2 版本才支援,但此程式碼需要在早期版本上執行。
描述
#分析器在以下情況下會產生此診斷:當發現程式碼中的 SDK 約束的下限低於 2.3.2 版本時,在該程式碼的 常量上下文 中使用了 bool 類的 &、| 或 ^ 運算子。在早期版本中不支援在 常量上下文 中使用這些運算子,因此此程式碼將無法在早期版本的 SDK 上執行。
示例
#以下是一個 pubspec 示例,其中定義了一個 SDK 約束,其下限低於 2.3.2 版本
yaml
environment:
sdk: '>=2.1.0 <2.4.0'在具有該 pubspec 的軟體包中,以下程式碼會產生此診斷:
dart
const bool a = true;
const bool b = false;
const bool c = a & b;常見修復方法
#如果您不需要支援舊版本的 SDK,則可以提高 SDK 約束版本以允許使用這些運算子
yaml
environment:
sdk: '>=2.3.2 <2.4.0'如果您需要支援舊版本的 SDK,則可以重寫程式碼不使用這些運算子,或更改程式碼使表示式不在 常量上下文 中
dart
const bool a = true;
const bool b = false;
bool c = a & b;