invalid_modifier_on_constructor 진단: 생성자의 본문에는 async 같은 한정자를 쓸 수 없어요

invalid_modifier_on_constructor 진단: 생성자의 본문에는 async 같은 한정자를 쓸 수 없어요

Dart 분석기가 내보내는 진단에는 이름이 있어요. invalid_modifier_on_constructor생성자 본문(body)에 async, async*, sync* 같은 한정자가 붙어 있을 때 분석기가 알려주는 컴파일 타임 진단이에요. 생성자 본문은 항상 동기(synchronous)여야 해요.

출처: invalid_modifier_on_constructor

본문

설명

분석기는 생성자의 본문이 async, async*, sync* 중 하나의 한정자로 시작할 때 이 진단을 만들어요. 생성자 본문은 동기여야 해요.

예시

다음 코드는 C의 생성자 본문이 async로 표시되어 있기 때문에 이 진단을 만들어요.

class C {
  C() async {}
}

흔한 해결 방법

생성자를 동기로 만들 수 있다면 한정자를 제거해요.

class C {
  C();
}

생성자를 동기로 만들 수 없다면, 대신 static 메서드를 사용해서 인스턴스를 만들어요.

class C {
  C();
  static Future<C> c() async {
    return C();
  }
}

더 알아보기