undefined_named_parameter 진단: 정의되지 않은 명명된 매개변수를 넘겼을 때

undefined_named_parameter 진단: 정의되지 않은 명명된 매개변수를 넘겼을 때

분석기가 내보내는 진단에는 이름이 있어요. undefined_named_parameter메서드나 함수를 호출할 때, 호출 대상에 정의되어 있지 않은 이름의 명명된 인자(named argument)를 넘겼을 때 Dart 분석기가 알려주는 진단이에요. 인자 이름을 잘못 적었거나, 매개변수가 다른 이름으로 선언된 경우에 흔히 발생해요.

출처: undefined_named_parameter

본문

설명

분석기는 메서드나 함수 호출에 명명된 인자가 있는데, 호출 대상인 메서드나 함수가 같은 이름의 매개변수를 선언하지 않았을 때 이 진단을 만들어요.

예시

다음 코드는 ma라는 이름의 명명된 매개변수를 선언하지 않았기 때문에 이 진단을 만들어요.

class C {
  void m({int? b}) {}
}

void f(C c) {
  c.m(a: 1);
}

흔한 해결 방법

인자 이름을 잘못 적었다면 올바른 이름으로 바꿔요. 위 예시는 ab로 바꾸면 해결돼요.

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);
}

더 알아보기