Dart Equality 및 Equatable 패키지
Nov 27 2022
같음은 == 연산자를 사용하여 두 개체가 같은지 여부를 확인하는 데 사용됩니다. 두 개체가 같으면 == 연산자는 true로 평가되고 그렇지 않으면 false로 평가됩니다.

==
같음은 연산자 를 사용하여 두 개체가 같은지 여부를 확인하는 데 사용됩니다 . 두 개체가 같으면 ==
연산자는 로 평가되고 true
그렇지 않으면 로 평가됩니다 false
.
Dart에서 기본적으로 ==
연산자는 참조 동등성을 확인하고 true
두 개체가 동일한 인스턴스이거나 동일한 참조에 속하는 경우로 평가합니다. 동일한 값을 갖는 두 개의 비상수 객체를 비교하면 false
.
User
클래스 를 만들어 봅시다 :
class User {
final String? name;
final int? age;
const User({this.name, this.age});
}
void main() {
User user = User(name: "Usama", age: 10);
User administrator = User(name: "Usama", age: 10);
print(user == administrator);
}
void main() {
User user = const User(name: "Usama", age: 10);
User administrator = const User(name: "Usama", age: 10);
print(user == administrator);
}
4. 그러나 두 개의 비상수 객체를 참조가 아닌 값으로 비교하려면 어떻게 해야 합니까?

따라서 해결책은 다음과 같이 ==
연산자 를 재정의해야 합니다.hashCode
class User {
final String? name;
final int? age;
const User({this.name, this.age});
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is User &&
runtimeType == other.runtimeType &&
name == other.name &&
age == other.age;
@override
int get hashCode => name.hashCode ^ age.hashCode;
}
이제 User
동일한 값을 갖는 두 개의 비상수 객체를 비교하면 명령문이 인쇄 true
됩니다.
그리고 그것은 많은 상용구 코드입니다!

이를 달성하는 간단한 방법은 Equatable 패키지를 사용하는 것입니다.
pubspec.yaml
Flutter 프로젝트 에 equatable 종속성을 추가합니다 .
dependencies:
flutter:
sdk: flutter
equatable: ^2.0.5
import 'package:equatable/equatable.dart';
class User extends Equatable {
const User({this.name, this.age});
final String? name;
final int? age;
@override
List<Object?> get props => [name, age];
}
읽어 주셔서 감사합니다!
유튜브: Bekar 프로그래머
