const는 static 필드에서만 쓸 수 있어요

const는 static 필드에서만 쓸 수 있어요

클래스에 필드를 선언할 때 const를 붙이면 안 되는 경우가 있어요. 인스턴스 필드는 각 객체마다 따로 값을 갖는 필드인데, const는 컴파일 시점에 값이 확정되는 성질이라 인스턴스 필드에는 맞지 않거든요. 이 진단이 어떤 상황에 나오고 어떻게 고치는지 함께 볼게요.

출처: const_instance_field

본문

Description

Dart 분석기는 인스턴스 필드에 const를 붙였을 때 이 진단을 내요. const는 static 필드에서만 선언할 수 있거든요.

Example

아래 코드는 f가 인스턴스 필드인데 const로 선언되어서 이 진단이 발생해요.

class C {
  const int f = 3;
}

Common fixes

필드가 인스턴스 필드여야 한다면, const 키워드를 빼거나 final로 바꿔 주면 돼요.

class C {
  final int f = 3;
}

정말로 const 필드가 필요하다면, 필드를 static 필드로 만들어 주면 돼요.

class C {
  static const int f = 3;
}

더 알아보기