Equatable
패키지는 Flutter 애플리케이션에서 객체 비교를 간편하게 해주는 방법을 제공합니다. 이 패키지는 ==
연산자와 hashCode
를 자동으로 재정의하여 반복적인 코드를 줄이고, 비교를 보다 효율적으로 만들어 줍니다.
==
와 hashCode
를 자동으로 생성하여 코드를 단순화합니다.final
로 선언해야 합니다.pubspec.yaml
파일에 equatable
을 종속성으로 추가합니다.
dependencies:
flutter:
sdk: flutter
equatable: ^2.0.0
Equatable을 사용하려면 클래스를 Equatable로 확장하고 props
리스트를 재정의합니다.
import 'package:equatable/equatable.dart';
class Person extends Equatable {
const Person(this.name);
final String name;
List<Object> get props => [name];
}
Equatable을 JSON과 함께 사용할 수 있습니다. fromJson
팩토리 메서드를 추가하여 JSON을 객체로 변환할 수 있습니다.
import 'package:equatable/equatable.dart';
class Person extends Equatable {
const Person(this.name);
final String name;
List<Object> get props => [name];
factory Person.fromJson(Map<String, dynamic> json) {
return Person(json['name']);
}
}
toString
메서드를 구현하여 객체의 문자열 표현을 개선할 수 있습니다. stringify
플래그를 true
로 설정하면 됩니다.
import 'package:equatable/equatable.dart';
class Person extends Equatable {
const Person(this.name);
final String name;
List<Object> get props => [name];
bool get stringify => true;
}
final
로 선언해야 합니다.EquatableMixin
을 사용하여 다른 슈퍼클래스를 가진 클래스에서도 Equatable의 기능을 사용할 수 있습니다.class EquatableDateTime extends DateTime with EquatableMixin {
EquatableDateTime(
int year, [
int month = 1,
int day = 1,
int hour = 0,
int minute = 0,
int second = 0,
int millisecond = 0,
int microsecond = 0,
]) : super(year, month, day, hour, minute, second, millisecond, microsecond);
List<Object> get props {
return [year, month, day, hour, minute, second, millisecond, microsecond];
}
}
==
와 hashCode
재정의를 피할 수 있습니다.