[flutter] Equatable과 일반적인 비교 연산자의 차이점
Flutter 앱을 개발하다 보면 객체 간의 동등성 비교가 필요한 때가 있습니다. 일반적으로 == 연산자를 사용하여 객체를 비교할 수 있지만, Equatable을 사용함으로써 더 효과적인 비교가 가능합니다.
일반적인 비교 연산자
일반적으로 Dart에서는 == 연산자를 오버라이드하여 동등성 비교를 구현합니다. 하지만 이 방법은 객체가 변경될 때 모든 필드를 수동으로 비교해야 하므로 번거로울 수 있습니다.
class Person {
final String name;
final int age;
Person(this.name, this.age);
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is Person && runtimeType == other.runtimeType && name == other.name && age == other.age;
@override
int get hashCode => name.hashCode ^ age.hashCode;
}
Equatable 사용하기
Equatable 라이브러리는 객체의 동등성 비교를 단순화해주는 도우미 도구입니다. Equatable을 사용하면 간단한 설정만으로 동등성 비교와 해시코드 생성이 자동으로 처리됩니다.
import 'package:equatable/equatable.dart';
class Person extends Equatable {
final String name;
final int age;
Person(this.name, this.age);
@override
List<Object> get props => [name, age];
}
위의 예제에서 Equatable 클래스를 상속하고, get props 메서드를 오버라이드하여 비교할 속성을 정의합니다. 그러면 Equatable이 동등성 비교와 해시코드 생성을 자동으로 처리해줍니다.
결론
Equatable을 사용하면 객체의 동등성 비교를 보다 간편하게 처리할 수 있습니다. 수동으로 모든 필드를 비교하고 해시코드를 생성하는 번거로움을 줄여줄 뿐만 아니라, 코드를 더 간결하고 읽기 쉽게 만들어줍니다.
더 많은 정보는 Equatable 라이브러리 문서를 확인해보시기 바랍니다.