跳到主要内容

sdk_version_ui_as_code_in_const_context

在 2.5.0 版本之前,常量表达式不支持 if 和扩展元素,但此代码需要在早期版本上运行。

描述

#

当分析器在 SDK 约束的下限小于 2.5.0 的代码中发现 常量上下文 中的 if 或扩展元素时,会生成此诊断。在早期版本中不支持在 常量上下文 中使用 if 或扩展元素,因此此代码无法在早期 SDK 版本上运行。

示例

#

这是一个 pubspec 文件的示例,其中定义了一个 SDK 约束,其下限小于 2.5.0

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

在使用此 pubspec 文件的包中,以下代码会生成此诊断

dart
const a = [1, 2];
const b = [...a];

常见修复方法

#

如果您不需要支持旧版本的 SDK,则可以提高 SDK 约束,以允许使用该语法

yaml
environment:
  sdk: '>=2.5.0 <2.6.0'

如果您需要支持旧版本的 SDK,则重写代码以不使用这些元素

dart
const a = [1, 2];
const b = [1, 2];

如果无法做到这一点,则更改代码,使元素不在 常量上下文

dart
const a = [1, 2];
var b = [...a];