sdk_version_extension_methods

sdk_version_extension_methods

Dart 분석기(analyzer)가 확장(extension) 선언이나 확장 오버라이드를 사용하는 코드에서 내보내는 진단이에요. 확장 기능은 버전 2.6.0부터 지원되었기 때문에, 그보다 오래된 SDK에서도 돌아가야 하는 코드라면 이 진단이 나타나요.

출처: sdk_version_extension_methods

본문

확장 메서드는 버전 2.6.0까지 지원되지 않았지만, 이 코드는 더 이전 버전에서도 실행될 수 있어야 합니다.

설명

analyzer는 SDK 제약 조건의 하한이 2.6.0보다 낮은 코드에서 확장 선언이나 확장 오버라이드를 발견하면 이 진단을 생성해요. 확장을 사용하는 것은 이전 버전에서는 지원되지 않았으므로, 이 코드는 이전 버전의 SDK에서는 실행되지 못해요.

예시

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

environment:
 sdk: '>=2.4.0 <2.7.0'

그 pubspec을 가진 패키지에서는 다음과 같은 코드가 이 진단을 만들어 내요.

extension E on String {
  void sayHello() {
    print('Hello $this');
  }
}

일반적인 해결 방법

이전 버전의 SDK를 지원할 필요가 없다면 SDK 제약 조건을 올려서 이 문법을 사용할 수 있게 해 주세요.

environment:
  sdk: '>=2.6.0 <2.7.0'

이전 버전의 SDK를 지원해야 한다면 확장을 사용하지 않도록 코드를 다시 써 주세요. 가장 흔한 방법은 확장의 멤버들을 최상위 함수(또는 메서드)로 다시 쓰고, 원래 this에 바인딩되었을 값을 매개변수로 받는 거예요.

void sayHello(String s) {
  print('Hello $s');
}