跳到主要內容

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;
}