missing_required_param 진단 — 필수 파라미터에 값을 안 줬어요
missing_required_param 진단 — 필수 파라미터에 값을 안 줬어요
Dart 분석기가 내보내는 missing_required_param 진단은 필수로 지정된 named 파라미터에 값을 제공하지 않고 함수(또는 메서드)를 호출했다는 뜻이에요.
본문
이 진단은 언제 발생해요?
analyzer는 필수(required)로 어노테이션된 named 파라미터를 가진 함수나 메서드를, 그 파라미터 값을 주지 않고 호출했을 때 이 진단을 내보내요. "이 파라미터는 꼭 채워야 하는데 안 채웠네요"라는 신호예요.
예시를 볼까요?
아래 코드에서 named 파라미터 x가 필수로 지정되어 있는데, f()를 호출할 때 값을 안 줘서 이 진단이 발생해요.
import 'package:meta/meta.dart';
// ignore: deprecated_member_use
void f({@required int? x}) {}
void g() {
f();
}
어떻게 고치면 돼요?
필수로 요구되는 값을 호출부에서 채워주면 돼요.
import 'package:meta/meta.dart';
// ignore: deprecated_member_use
void f({@required int? x}) {}
void g() {
f(x: 2);
}
무엇이 포인트예요?
여기 등장한 @required는 package:meta의 옛 방식 어노테이션이에요. 요즘 Dart에서는 언어 차원의 required 키워드를 쓰는 게 표준이라, 새로 작성하는 코드에서는 {required int x}처럼 쓰는 편이 좋아요. missing_required_param과 비슷한 이름의 missing_required_argument 진단도 있는데, 이쪽은 호출부에서 인자를 빠뜨린 경우를 다룬다는 점이 조금 달라요.
더 알아보기
- named 파라미터와
required키워드는 Functions 문서에서 자세히 볼 수 있어요. - Dart 분석기 진단 전체 목록은 Diagnostics 문서를 참고해 보세요.