跳到主要內容

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;