跳到主要内容

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;