Equatable 플러그인은 한 인스턴스와 다른 인스턴스가 같은 인스턴스인지 판단을 쉽게 할 수 있게 해주는 플러그인
(스터디 때 A님이 너무 설명을 잘해줘서 좋았던 거 같다..)
bool operator ==(Object other) {
return other is Person && other.id == this.id
&& other.name == this.name
&& other.age == this.age;
}
int get hashCode {
return this.id;
}
위의 예처럼 operator를 이용해서 1-2개를 비교하면 문제가 1도 없겠지만 .. 많이 사용되면 당연히 코드가 길어짐!
그러기에 우리는 equtable을 사용하면 좋음!
Equtable 클래스를 상속을 받고 props라는 메소드에 override 시켜주면 됌! ( 으잇!?)
예를 들어보쟈
List<Object> get props => [todos];
// == 과 hashcode 함수를 생성하는데 사용 (이렇기에 todos만 같으면 두 props를 같다고 볼 수 있음)
이 것에 대한 답은 스터디에서도 얻을 수 있었지만 공식 문서를 확인해보았습니다.
toString 구현을 위함! / toStringEquatable은 주어진 모든 props를 포함하는 메소드를 구현할 수 있음.
말이 애매하다면, 예를 하나 통해 설명해드렸습니다.
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;
}
// name이 sunny라고 한다면 Person(sunny) => 기본 flag는 false 이며, toString에서는 Person 타입만 return 한다고 나와있네요..
// EquatableConfig.stringify = true; 를 이용해서 따로 선언할 수 있지만 새로 stringify가 들어온다면 stringify가 우선!!
// 결론 String 메서드을 구현하기 위해 사용한다.. (으잇!)
나중에 활용하여 source Code를 정리해봐야긋다.