跳到主要内容

sdk_version_is_expression_in_const_context

在常量上下文中使用 is 表达式直到 2.3.2 版本才得到支持,但此代码需要在更早的版本上运行。

描述

#

当分析器在 SDK 约束的下限低于 2.3.2 的代码中发现 常量上下文 中使用了 is 表达式时,会产生此诊断。在更早的版本中,在 常量上下文 中使用 is 表达式不受支持,因此此代码无法在早期版本的 SDK 上运行。

示例

#

以下是定义了 SDK 约束下限低于 2.3.2 的 pubspec 文件示例

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

在此 pubspec 文件所在的包中,类似以下代码会产生此诊断

dart
const Object x = 4;
const y = x is int ? 0 : 1;

常见修复

#

如果您不需要支持旧版本的 SDK,则可以提高 SDK 约束以允许使用此表达式

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

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

dart
const Object x = 4;
var y = x is int ? 0 : 1;