跳到主要内容

sdk_version_eq_eq_operator_in_const_context

在 2.3.2 版本之前,非基本类型不支持使用 '==' 运算符,但此代码需要在更早版本上运行。

描述

#

当代码中的 SDK 约束下限低于 2.3.2 时,如果代码在常量上下文中对非基本类型使用了 == 运算符,分析器就会产生此诊断。在更早的版本中,不支持在常量上下文中使用此运算符,因此此代码无法在更早版本的 SDK 上运行。

示例

#

以下是一个 pubspec 文件示例,它定义了一个 SDK 约束,其下限低于 2.3.2

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

在包含该 pubspec 文件的包中,以下代码会产生此诊断

dart
class C {}
const C a = null;
const C b = null;
const bool same = a == b;

常见修复

#

如果您不需要支持旧版本的 SDK,则可以提高 SDK 约束,以便允许使用此运算符

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

如果您需要支持旧版本的 SDK,则可以重写代码以不使用 == 运算符,或者更改代码使表达式不在常量上下文

dart
class C {}
const C a = null;
const C b = null;
bool same = a == b;