리다이렉팅 팩토리 생성자의 기본값
리다이렉팅 팩토리 생성자의 기본값
다른 생성자로 리다이렉트하는 팩토리 생성자에서 기본값을 쓰려다 analyzer가 내는 진단이에요. 팩토리 생성자가 어떻게 동작하는지부터 차근차근 볼게요.
본문
다른 생성자로 리다이렉트하는 팩토리 생성자가, 선택 파라미터에 기본값을 지정하고 있으면 analyzer가 이 진단을 만들어 내요.
다음 코드가 이 진단을 만들어 내는 예시예요. 클래스 A의 팩토리 생성자가 선택 파라미터 x에 기본값을 갖고 있거든요.
class A {
factory A([int x = 0]) = B;
}
class B implements A {
B([int x = 1]);
}
흔한 해결책
팩토리 생성자에서 기본값을 빼 주면 돼요.
class A {
factory A([int x]) = B;
}
class B implements A {
B([int x = 1]);
}
여기서 주의할 점이 있어요. 이렇게 고치면 선택 파라미터를 생략했을 때 쓰이는 값이 바뀔 수 있거든요. 만약 그 값이 바뀌는 게 문제라면, 팩토리 메서드에서 그 선택 파라미터를 필수 파라미터로 바꾸는 방법도 고려해 볼 수 있어요.
class A {
factory A(int x) = B;
}
class B implements A {
B([int x = 1]);
}
더 알아보기
- Diagnostics — Dart analyzer가 만들어 내는 다른 진단들도 둘러보세요.