매개변수의 기본값이 null이라 안 되는 경우

매개변수의 기본값이 null이라 안 되는 경우 (missing_default_value_for_parameter)

선택적 매개변수의 타입은 null을 허용하지 않는데, 명시된 기본값이 없어서 암묵적인 기본값인 null을 쓸 수 없을 때 나오는 진단이에요. 타입을 nullable로 바꾸거나, 기본값을 주거나, required 매개변수로 만들면 해결돼요.

출처: The parameter '{0}' can't have a value of 'null' because of its type, but the implicit default value is 'null'.

본문

이 진단은 선택적 매개변수(위치 매개변수든 이름 매개변수든)가 잠재적으로 non-nullable 타입을 가지면서 기본값을 명시하지 않았을 때 분석기가 만들어내요. 명시적인 기본값이 없는 선택적 매개변수는 암묵적인 기본값으로 null을 가져요. 그런데 매개변수의 타입이 null 값을 허용하지 않으면, 그 암묵적 기본값이 유효하지 않게 되는 거죠.

잠재적으로 non-nullable 타입은 명시적으로 non-nullable이거나, 타입 매개변수로 인해 non-nullable인 타입을 말해요.

null safety에서는 @required 어노테이션이 아니라 required 키워드를 사용하세요.

예시

아래 코드는 x가 null일 수 없는데 non-null 기본값을 지정하지 않아서 이 진단이 나와요.

void f([int x]) {}

다음 코드도 마찬가지예요.

void g({int x}) {}

해결 방법

null로 값이 제공되지 않았음을 나타내고 싶다면, 타입을 nullable로 만들어 주세요.

void f([int? x]) {}
void g({int? x}) {}

매개변수가 null일 수 없다면, 기본값을 제공하거나,

void f([int x = 1]) {}
void g({int x = 2}) {}

매개변수를 required 매개변수로 만들어 주세요.

void f(int x) {}
void g({required int x}) {}

더 알아보기

  • Null safety — null safety가 매개변수와 기본값에 어떤 영향을 주는지 다루는 가이드예요.