[Dart] Equatable 상속할 때, 하위 클래스는 모두 get 을 오버라이드 해야 할까요? (flutter)

Equatable을 상속받을 때, 하위 클래스는 반드시 props를 오버라이드할 필요는 없습니다. 하지만, 만약 하위 클래스에서 객체의 동등성을 판단하는 데 필요한 추가적인 프로퍼티가 있다면, 그 프로퍼티를 props에 포함시켜야 합니다.

예시코드~

abstract class SleepTimeState extends Equatable {
  const SleepTimeState();

  @override
  List<Object> get props => [];
}

final class SleepTimeCalcFailure extends SleepTimeState {
  const SleepTimeCalcFailure(this.ex);

  final Exception ex;

  @override
  List<Object> get props => [ex];
}

Equatable 상속

  • Equatable은 객체의 동등성을 쉽게 비교하기 위해 사용되며, props에 포함된 값들을 기준으로 두 객체가 같은지 비교합니다.
  • 부모 클래스인 SleepTimeState에서는 props가 빈 리스트이므로, 기본적으로 모든 상태가 동일하게 취급됩니다.
  • SleepTimeCalcFailureex라는 예외 객체를 가지고 있습니다. ex가 객체 동등성에 영향을 미치지 않는다면 props를 오버라이드하지 않아도 됩니다. 하지만, ex가 포함된 상태를 서로 다른 것으로 인식하고 싶다면 propsex를 포함시켜야 합니다.

결론~

  • ex가 다른 두 상태를 구분짓는 중요한 요소일 경우, propsex를 추가해야 해요. (props에 ex를 포함함으로써, ex 값이 다르면 두 객체는 다른 객체로 간주됩니다.)
  • ex가 상태의 동등성 비교에서 중요하지 않다면, props에 ex를 추가할 필요 없어요.
이전최근
댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗