Dart Equality และ Equatable Package
 
                    
                Equality ใช้ตรวจสอบว่าวัตถุ 2 ชิ้นเท่ากันหรือไม่โดยใช้ตัว==ดำเนินการ หากวัตถุสองชิ้นมีค่าเท่ากัน==ผู้ดำเนินการจะประเมินเป็น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โครงการกระพือของคุณ:
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];
}
ขอบคุณที่อ่าน!
Youtube: Bekar โปรแกรมเมอร์
 
                    
                




































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)