factory 생성자 이름은 둘러싼 클래스 이름과 같아야 해요

factory 생성자 이름은 둘러싼 클래스 이름과 같아야 해요

factory 생성자의 이름이 바로 바깥에 있는 클래스의 이름과 같지 않을 때 Dart analyzer가 만들어 내는 진단이에요. 이름 규칙이 어긋났을 때 잡아 주는 거죠.

출처: invalid_factory_name_not_a_class

본문

이 진단은 factory 생성자의 이름이 둘러싸고 있는 클래스의 이름과 같지 않을 때 발생해요.

아래 코드는 factory 생성자의 이름이 A인데 둘러싼 클래스 이름이 C라서 이 진단을 만들어 내요.

// @dart = 3.12
class A {}

class C {
  factory A() => throw 0;
}

고치는 방법

상황에 따라 여러 가지로 고칠 수 있어요.

factory가 둘러싼 클래스의 인스턴스를 반환하고 있고, 이름 없는(unnamed) factory 생성자로 쓰려는 거라면 이름을 바꿔 주면 돼요.

class A {}

class C {
  factory C() => throw 0;
}

둘러싼 클래스의 인스턴스를 반환하고, 이름 있는(named) factory 생성자로 쓰려는 거라면 factory 생성자 이름 앞에 둘러싼 클래스의 이름을 붙여 주면 돼요.

class A {}

class C {
  factory C.a() => throw 0;
}

다른 클래스의 인스턴스를 반환한다면 그 클래스로 factory를 옮겨 주면 돼요.

class A {
  factory A() => throw 0;
}

class C {}

다른 클래스의 인스턴스를 반환하는데, 그 클래스를 고칠 수 없거나 factory를 옮기고 싶지 않다면 static 메서드로 바꿔 주면 돼요.

class A {}

class C {
  static A a() => throw 0;
}

더 알아보기

  • factory 생성자
  • named 생성자