Flutter 앱을 개발하다 보면 객체를 비교해야 하는 경우가 많습니다. Dart에서는 Equatable을 사용하여 객체를 간편하게 비교할 수 있지만, Equatable을 구현하지 않은 객체의 비교 방법도 있습니다.
Equatable이란?
Equatable은 Dart 패키지 중 하나로, 객체의 동등성 비교를 간단히 처리할 수 있는 도구입니다. 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을 사용하여 객체를 정의하고 비교할 수 있습니다.
Equatable을 구현하지 않은 객체 비교 방법
Equatable을 구현하지 않은 경우에는 다음과 같이 equals() 메서드를 이용하여 객체를 비교할 수 있습니다.
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;
}
위와 같이 equals() 메서드를 재정의하여 객체의 필드를 비교하고 hashCode를 재정의하여 객체의 해시코드를 생성할 수 있습니다. 이를 통해 객체를 동등성 비교할 수 있습니다.
결론
Equatable을 이용하면 객체의 동등성 비교를 간편하게 처리할 수 있지만, Equatable을 구현하지 않은 경우에는 equals() 메서드를 사용하여 객체를 비교할 수 있습니다. 주어진 상황에 맞게 적절한 방법을 선택하여 객체를 비교하도록 합니다.
위와 같이 Equatable을 구현하지 않은 객체의 비교 방법에 대해 알아보았습니다. 객체를 비교해야 하는 경우에는 해당 상황에 맞는 방법을 선택하여 사용하도록 합니다.
References
부가적인 문의나 궁금한 점이 있으면 언제든지 문의해 주세요.