`factory`로 표시한 메서드가 새 객체를 반환하지 않을 때

factory로 표시한 메서드가 새 객체를 반환하지 않을 때

factory 어노테이션이 붙은 메서드가 새로 할당된 객체를 반환하지 않을 때 Dart analyzer가 만들어 내는 진단이에요. factory 메서드는 말 그대로 새 객체를 만들어 주는 역할을 해야 하는데, 그 규칙을 지키지 않았을 때 알려 주는 거죠.

출처: invalid_factory_method_impl

본문

이 진단은 factory 어노테이션이 붙은 메서드가 새로 할당된 객체를 반환하지 않을 때 발생해요.

아래 코드는 createC 메서드가 새 인스턴스를 만들지 않고 필드의 값을 그대로 돌려주고 있어서 이 진단을 만들어 내요.

import 'package:meta/meta.dart';

class Factory {
  C c = C();

  @factory
  C createC() => c;
}

class C {}

고치는 방법

메서드가 반환 타입의 새 인스턴스를 만들어서 반환하도록 바꿔 주면 돼요.

import 'package:meta/meta.dart';

class Factory {
  @factory
  C createC() => C();
}

class C {}

더 알아보기

  • meta 패키지의 @factory 어노테이션
  • factory 생성자