non_sync_factory
工厂函数体不能使用 'async', 'async*', 或 'sync*'。
描述
#当工厂构造函数体被标记为 async
, async*
, 或 sync*
时,分析器会产生此诊断。所有构造函数,包括工厂构造函数,都要求返回声明它们所在的类实例,而不是 Future
, Stream
, 或 Iterator
。
示例
#以下代码会产生此诊断,因为工厂构造函数体被标记为 async
dart
class C {
factory C() async {
return C._();
}
C._();
}
常见修复方法
#如果该成员必须声明为工厂构造函数,则移除函数体前的关键字
dart
class C {
factory C() {
return C._();
}
C._();
}
如果该成员必须返回除其所在类的实例以外的内容,则将该成员设为静态方法
dart
class C {
static Future<C> m() async {
return C._();
}
C._();
}