Equatable을 사용하여 여러 final 속성을 props에 포함시키려면, 해당 속성들을 List<Object>로 반환해 주면 됩니다. 여러 개의 속성을 사용하고 싶다면, 간단하게 리스트에 각 속성을 추가하면 됩니다.
예를 들어, final int a와 final int b가 있을 때는 다음과 같이 처리할 수 있습니다~
final class ExampleClass extends Equatable {
final int a;
final int b;
const ExampleClass(this.a, this.b);
@override
List<Object> get props => [a, b];
}
이렇게 하면 a와 b 값이 객체의 동등성을 결정하는 데 사용됩니다. 만약 a나 b 값이 다르면, 두 객체는 다른 것으로 간주됩니다.
동작 설명
props는Equatable의 동등성 비교에서 중요한 역할을 하며, 리스트에 포함된 값들이 모두 같아야 두 객체를 동일하다고 간주합니다.[a, b]와 같이 리스트에 여러 속성을 넣음으로써a와b가 동일해야만 두 객체가 동일한 것으로 처리됩니다.
예시 코드
void main() {
final example1 = ExampleClass(1, 2);
final example2 = ExampleClass(1, 2);
final example3 = ExampleClass(3, 4);
print(example1 == example2); // true
print(example1 == example3); // false
}
이 경우, example1과 example2는 a와 b가 동일하므로 같은 객체로 간주됩니다. example3은 다른 값이므로 example1과 다르다고 판단됩니다.
정리
final 속성이 여러 개일 경우, 그 속성들을 List<Object>에 추가하여 props로 반환하면 됩니다. Equatable은 이 리스트에 있는 모든 값들을 비교하여 객체의 동등성을 결정합니다.
