deprecated_factory_method 진단: factory 메서드가 생성자로 해석될 때
deprecated_factory_method 진단: factory 메서드가 생성자로 해석될 때
Dart 분석기가 내보내는 진단에는 이름이 있어요. deprecated_factory_method는 primary_constructors 기능이 켜진 뒤에, factory라는 이름의 인스턴스 메서드가 생성자 선언으로 해석될 때 분석기가 알려주는 진단이에요. 즉, 이름이 factory인 메서드라도 미래에는 생성자처럼 취급된다는 걸 알려주는 거예요.
본문
설명
분석기는 primary_constructors 기능이 켜진 뒤에 factory라는 이름의 인스턴스 메서드 선언이 생성자 선언으로 해석될 때 이 진단을 만들어요.
이 문제는 반환 타입(return type)이 없고, 메서드 이름이 첫 토큰이거나 그 앞에 external, augment, augment external만 붙어 있는 선언에만 영향을 줘요. augment와 augment 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();
}