deprecated_factory_method 진단: factory 메서드가 생성자로 해석될 때

deprecated_factory_method 진단: factory 메서드가 생성자로 해석될 때

Dart 분석기가 내보내는 진단에는 이름이 있어요. deprecated_factory_methodprimary_constructors 기능이 켜진 뒤에, factory라는 이름의 인스턴스 메서드가 생성자 선언으로 해석될 때 분석기가 알려주는 진단이에요. 즉, 이름이 factory인 메서드라도 미래에는 생성자처럼 취급된다는 걸 알려주는 거예요.

출처: deprecated_factory_method

본문

설명

분석기는 primary_constructors 기능이 켜진 뒤에 factory라는 이름의 인스턴스 메서드 선언이 생성자 선언으로 해석될 때 이 진단을 만들어요.

이 문제는 반환 타입(return type)이 없고, 메서드 이름이 첫 토큰이거나 그 앞에 external, augment, augment external만 붙어 있는 선언에만 영향을 줘요. augmentaugment external 키워드는 augmentations 기능이 켜진 뒤에만 유효해요.

아래 코드는 이름이 factory인 인스턴스 메서드에 반환 타입이나 수식어가 없기 때문에 이 진단이 나와요.

// @dart=3.10
class C {
  factory() => C();
}

흔한 해결 방법

이름을 바꿀 수 있다면 메서드 이름을 바꿔요.

// @dart=3.10
class C {
  make() => C();
}

이름을 반드시 factory로 유지해야 한다면 반환 타입을 추가해요.

// @dart=3.10
class C {
  C factory() => C();
}

더 알아보기