跳到主要内容

sdk_version_ui_as_code

for、if 和 spread 元素直到 2.3.0 版本才支持,但此代码需要在早期版本上运行。

描述

#

当在 SDK 约束下限小于 2.3.0 的代码中找到 for、if 或 spread 元素时,分析器会产生此诊断。在早期版本中不支持使用 for、if 或 spread 元素,因此此代码无法在早期版本的 SDK 上运行。

示例

#

以下是定义了 SDK 约束下限小于 2.3.0 的 pubspec 文件示例:

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

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

dart
var digits = [for (int i = 0; i < 10; i++) i];

常见修复方法

#

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

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

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

dart
var digits = _initializeDigits();

List<int> _initializeDigits() {
  var digits = <int>[];
  for (int i = 0; i < 10; i++) {
    digits.add(i);
  }
  return digits;
}