跳過主內容

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