illegal_enum_values 진단: Enum을 구현하는 곳에서 values 멤버를 선언할 때

illegal_enum_values 진단: Enum을 구현하는 곳에서 values 멤버를 선언할 때

Dart 분석기가 내보내는 진단에는 이름이 있어요. illegal_enum_valuesEnum을 구현하는 클래스나 on 절에 Enum을 둔 mixin이 values라는 인스턴스 멤버를 가질 때 분석기가 알려주는 진단이에요. values는 enum 타입이 이미 자체적으로 제공하는 정적 멤버이기 때문에, 그걸 다시 정의하면 충돌이 생겨요.

출처: illegal_enum_values

본문

설명

분석기는 Enum을 구현하는 클래스나 on 절에 Enum을 둔 mixin이 values라는 인스턴스 멤버를 가질 때 이 진단을 만들어요.

예시

다음 코드는 Enum을 구현하는 클래스 Cvalues라는 인스턴스 필드를 선언하기 때문에 이 진단이 나와요.

abstract class C implements Enum {
  int get values => 0;
}

다음 코드는 Enum을 구현하는 클래스 BA로부터 values라는 인스턴스 메서드를 상속받기 때문에 이 진단이 나와요.

abstract class A {
  int values() => 0;
}

abstract class B extends A implements Enum {}

흔한 해결 방법

충돌하는 멤버의 이름을 바꿔요.

abstract class C implements Enum {
  int get value => 0;
}

더 알아보기