Dart Equality et Equatable Package
L'égalité est utilisée pour vérifier si deux objets sont égaux ou non en utilisant l' ==opérateur. Si deux objets sont égaux, alors l' ==opérateur est évalué à truesinon il est évalué à false.
Dans Dart, par défaut, ==l'opérateur vérifie l'égalité référentielle et évalue le truemoment où deux objets sont la même instance ou appartiennent à la même référence. Si nous comparons deux objets non constants qui ont les mêmes valeurs, alors il est évalué à false.
- Créons une
Userclasse :
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. Mais que se passe-t-il si nous voulons comparer deux objets non constants par valeur et non par référence ?
La solution est donc que nous devons remplacer l' ==opérateur et hashCodecomme ceci :
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;
}
Et maintenant, si nous comparons deux Userobjets non constants qui ont les mêmes valeurs, la déclaration imprimera true.
Et c'est beaucoup de code passe-partout !
Un moyen simple d'y parvenir consiste à utiliser le package Equatable .
- Ajoutez la dépendance equatable dans
pubspec.yamlde votre projet flutter :
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];
}
Merci d'avoir lu!
Youtube : Programmeur Bekar
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































