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._();
}