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가 빈 리스트이므로, 기본적으로 모든 상태가 동일하게 취급됩니다. SleepTimeCalcFailure는ex라는 예외 객체를 가지고 있습니다.ex가 객체 동등성에 영향을 미치지 않는다면props를 오버라이드하지 않아도 됩니다. 하지만,ex가 포함된 상태를 서로 다른 것으로 인식하고 싶다면props에ex를 포함시켜야 합니다.
결론~
ex가 다른 두 상태를 구분짓는 중요한 요소일 경우,props에ex를 추가해야 해요. (props에ex를 포함함으로써,ex값이 다르면 두 객체는 다른 객체로 간주됩니다.)ex가 상태의 동등성 비교에서 중요하지 않다면, props에 ex를 추가할 필요 없어요.
