리다이렉팅 팩토리 생성자의 기본값

리다이렉팅 팩토리 생성자의 기본값

다른 생성자로 리다이렉트하는 팩토리 생성자에서 기본값을 쓰려다 analyzer가 내는 진단이에요. 팩토리 생성자가 어떻게 동작하는지부터 차근차근 볼게요.

출처: default_value_in_redirecting_factory_constructor

본문

다른 생성자로 리다이렉트하는 팩토리 생성자가, 선택 파라미터에 기본값을 지정하고 있으면 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가 만들어 내는 다른 진단들도 둘러보세요.