sdk_version_ui_as_code 진단: SDK 버전 제약에 맞지 않는 UI 요소

sdk_version_ui_as_code 진단: SDK 버전 제약에 맞지 않는 UI 요소

for, if, spread 요소는 2.3.0 버전부터 지원됐는데요, 이 코드는 더 이른 버전의 SDK에서도 실행될 수 있어야 해요.

출처: sdk_version_ui_as_code

본문

설명

분석기는 SDK 제약 조건(constraint)의 하한(bound)이 2.3.0보다 낮은 코드에서 for, if, spread 요소를 발견하면 이 진단을 만들어요. for, if, spread 요소는 이전 버전에서는 지원되지 않았기 때문에, 이 코드는 이전 버전의 SDK에서는 실행할 수 없어요.

예시

다음은 하한이 2.3.0보다 낮은 SDK 제약 조건을 정의한 pubspec 예시예요.

environment:
  sdk: '>=2.2.0 <2.4.0'

해당 pubspec을 가진 패키지에서 아래와 같은 코드가 이 진단을 만들게 돼요.

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

흔한 해결 방법

이전 버전의 SDK를 지원할 필요가 없다면, 해당 문법을 쓸 수 있도록 SDK 제약 조건을 올리면 돼요.

environment:
  sdk: '>=2.3.0 <2.4.0'

이전 버전의 SDK를 지원해야 한다면, 그 요소들을 쓰지 않도록 코드를 다시 작성해요.

var digits = _initializeDigits();

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

더 알아보기