跳到主要内容

invalid_factory_name_not_a_class

工厂构造函数的名称必须与其直接所在的类名称相同。

描述

#

当工厂构造函数的名称与其所在类名称不同时,分析器会生成此诊断信息。

示例

#

以下代码会生成此诊断信息,因为工厂构造函数的名称(A)与其所在类(C)的名称不同

dart
class A {}

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

常见修复方法

#

如果工厂返回的是其所在类的实例,并且你打算让它成为一个无名工厂构造函数,那么请重命名该工厂

dart
class A {}

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

如果工厂返回的是其所在类的实例,并且你打算让它成为一个命名工厂构造函数,那么请在工厂构造函数的名称前加上其所在类的名称

dart
class A {}

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

如果工厂返回的是不同类的实例,那么请将该工厂移动到那个类中

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

class C {}

如果工厂返回的是不同类的实例,但你无法修改那个类或不想移动该工厂,那么请将其转换为一个静态方法

dart
class A {}

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