डार्ट समानता और समान पैकेज

समानता का उपयोग यह जांचने के लिए किया जाता है कि दो वस्तुएँ समान हैं या ==
संकारक का उपयोग नहीं कर रही हैं। यदि दो वस्तुएं समान हैं तो ==
ऑपरेटर मूल्यांकन करता है true
अन्यथा यह मूल्यांकन करता है false
।
डार्ट में, डिफ़ॉल्ट रूप से ==
ऑपरेटर संदर्भात्मक समानता के लिए जाँच करता है और यह मूल्यांकन करता है कि 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
।
और वह बहुत सारे बॉयलरप्लेट कोड हैं!

इसे प्राप्त करने का एक आसान तरीका इक्विटेबल पैकेज का उपयोग कर रहा है।
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];
}
पढ़ने के लिए शुक्रिया!
यूट्यूब: बेकर प्रोग्रामर
