跳到主要内容

sdk_version_as_expression_in_const_context

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

描述

#

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

示例

#

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

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

在该 pubspec 文件所在的 Package 中,如下代码会产生此诊断

dart
const num n = 3;
const int i = n as int;

常见修复方法

#

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

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

如果你需要支持旧版本的 SDK,则可以重写代码以不使用 as 表达式,或修改代码使 as 表达式不在 常量上下文

dart
num x = 3;
int y = x as int;