Dart Equality dan Equatable Package
Persamaan digunakan untuk memeriksa apakah dua objek sama atau tidak menggunakan ==operator. Jika dua objek sama maka ==operator akan mengevaluasi truejika tidak maka akan mengevaluasi ke false.
Di Dart, secara default, ==operator memeriksa persamaan referensial dan mengevaluasi truekapan dua objek adalah contoh yang sama atau milik referensi yang sama. Jika kita membandingkan dua objek non-konstanta yang memiliki nilai yang sama, maka nilainya menjadi false.
- Mari kita membuat
Userkelas:
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. Tapi bagaimana jika kita ingin membandingkan dua objek non-konstan dengan nilai dan bukan dengan referensi?
Jadi solusinya, kita perlu mengganti ==operator dan hashCodeseperti ini:
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;
}
Dan sekarang jika kita membandingkan dua Userobjek non-konstanta yang memiliki nilai yang sama maka pernyataan akan dicetak true.
Dan itu banyak kode boilerplate!
Cara sederhana untuk mencapai ini adalah dengan menggunakan paket Equatable .
- Tambahkan ketergantungan yang setara dalam
pubspec.yamlproyek flutter Anda:
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];
}
Terima kasih sudah membaca!
Youtube: Bekar Programmer

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































