생성자(constructor)는 값을 반환할 수 없어요

생성자(constructor)는 값을 반환할 수 없어요

return_in_generative_constructor 진단은 Dart 분석기가 생성자(constructive constructor) 안에서 값을 반환하는 return 문을 발견했을 때 알려주는 경고예요. 생성자는 항상 생성된 객체만 돌려줄 수 있으니, 이 오류가 나면 구조를 다시 생각해 보면 돼요.

출처: Constructors can't return values

본문

Dart 분석기는 generative constructor(생성자)가 값을 지정해 반환하는 return 문을 포함하고 있을 때 이 진단을 만들어요. Generative constructor는 항상 생성된 객체 그 자체를 반환하기 때문에, 다른 객체를 반환할 수 없거든요.

예시

아래 코드에서 return 문에 식(expression)이 붙어 있어서 이 진단이 발생해요.

class C {
  C() {
    return this;
  }
}

흔한 해결 방법

생성자가 새 인스턴스를 만들어야 하는 상황이라면, return 문이나 식 중 하나를 제거하면 돼요.

class C {
  C();
}

반대로 생성자가 새 인스턴스를 만들지 않아야 한다면, 이 생성자를 factory constructor로 바꿔 주면 돼요.

class C {
  factory C() {
    return _instance;
  }

  static final C _instance = C._();

  C._();
}

더 알아보기