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