avoid_void_async

avoid_void_async

값을 반환하지 않는 비동기 함수를 void로 선언하면 await로 기다릴 수 없어서 곤란해져요. avoid_void_async 린트 규칙이 왜 Future를 반환하도록 권하는지 설명해 드릴게요.

출처: avoid_void_async

본문

상태: 안정(stable) · 자동 수정 가능(Fix available) · 출시: Dart 2.1

async 함수는 Future를 반환하도록 선언하세요. 값을 반환하지 않는 비동기 메서드나 함수를 선언할 때도 void만 쓰지 말고 Future를 반환한다고 선언해 주세요. 그래야 호출하는 쪽에서 await로 완료를 기다릴 수 있어요.

나쁜 예

void f() async {}
void f2() async => null;

좋은 예

Future f() async {}
Future f2() async => null;

예외

최상위 main 함수는 예외예요. main에서는 Future 어노테이션을 생략하고(일반적으로 생략하는 게 좋고) void를 쓰는 것이 허용돼요.

Future f() async {}

void main() async {
  await f();
}

규칙 활성화하기

analysis_options.yaml 파일의 linter > rules 아래에 avoid_void_async을 추가하면 돼요.

linter:
  rules:
    - avoid_void_async

룰을 YAML 맵 문법으로 설정하고 있다면 linter > rules 아래에 avoid_void_async: true를 넣어 주세요.

linter:
  rules:
    avoid_void_async: true

더 알아보기