undefined_named_parameter 진단: 정의되지 않은 명명된 매개변수를 넘겼을 때
undefined_named_parameter 진단: 정의되지 않은 명명된 매개변수를 넘겼을 때
분석기가 내보내는 진단에는 이름이 있어요. undefined_named_parameter는 메서드나 함수를 호출할 때, 호출 대상에 정의되어 있지 않은 이름의 명명된 인자(named argument)를 넘겼을 때 Dart 분석기가 알려주는 진단이에요. 인자 이름을 잘못 적었거나, 매개변수가 다른 이름으로 선언된 경우에 흔히 발생해요.
본문
설명
분석기는 메서드나 함수 호출에 명명된 인자가 있는데, 호출 대상인 메서드나 함수가 같은 이름의 매개변수를 선언하지 않았을 때 이 진단을 만들어요.
예시
다음 코드는 m이 a라는 이름의 명명된 매개변수를 선언하지 않았기 때문에 이 진단을 만들어요.
class C {
void m({int? b}) {}
}
void f(C c) {
c.m(a: 1);
}
흔한 해결 방법
인자 이름을 잘못 적었다면 올바른 이름으로 바꿔요. 위 예시는 a를 b로 바꾸면 해결돼요.
class C {
void m({int? b}) {}
}
void f(C c) {
c.m(b: 1);
}
하위 클래스가 해당 이름의 매개변수를 추가했다면, 수신 객체(receiver)를 하위 클래스로 캐스팅해요.
class C {
void m({int? b}) {}
}
class D extends C {
@override
void m({int? a, int? b}) {}
}
void f(C c) {
(c as D).m(a: 1);
}
매개변수를 함수에 추가해야 하는 상황이라면, 매개변수를 추가해요.
class C {
void m({int? a, int? b}) {}
}
void f(C c) {
c.m(a: 1);
}