enum_mixin_with_instance_variable 진단: 열거형에 적용한 mixin이 인스턴스 변수를 가질 때

enum_mixin_with_instance_variable 진단: 열거형에 적용한 mixin이 인스턴스 변수를 가질 때

Dart 분석기가 내보내는 진단에는 이름이 있어요. enum_mixin_with_instance_variable열거형에 적용되는 mixin이 인스턴스 변수를 선언할 때 분석기가 알려주는 컴파일 타임 진단이에요. 열거형에 적용되는 mixin은 인스턴스 변수를 가질 수 없어요.

출처: enum_mixin_with_instance_variable

본문

설명

열거형에 적용되는 mixin이 인스턴스 변수를 하나 이상 선언하면 분석기가 이 진단을 만들어요. 이는 허용되지 않아요. 열거형 값은 상수라서 열거형의 생성자가 mixin의 필드를 초기화할 방법이 없기 때문이에요.

예시

아래 코드는 mixin M이 인스턴스 필드 x를 정의하므로 이 진단이 나와요.

mixin M {
  int x = 0;
}

enum E with M { a }

흔한 해결 방법

mixin을 적용해야 한다면, 모든 인스턴스 필드를 getter와 setter 쌍으로 바꾸고 필요하다면 열거형에서 구현해요.

mixin M {
  int get x => 0;
}

enum E with M { a }

mixin을 적용할 필요가 없다면, 그것을 제거해요.

enum E { a }

더 알아보기