メインコンテンツにスキップ

non_sync_factory

ファクトリ本体では「async」「async*」「sync*」は使用できません。

説明

#

ファクトリコンストラクタ本体がasyncasync*、またはsync*でマークされている場合、アナライザはこの診断を生成します。ファクトリコンストラクタを含むすべてのコンストラクタは、宣言されているクラスのインスタンスを返す必要があり、FutureStream、または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._();
}