Dart Equality e Equatable Package
A igualdade é usada para verificar se dois objetos são iguais ou não usando o ==operador. Se dois objetos forem iguais, o ==operador será avaliado como true, caso contrário, será avaliado como false.
No Dart, por padrão, o ==operador verifica a igualdade referencial e avalia truequando dois objetos são a mesma instância ou pertencem à mesma referência. Se compararmos dois objetos não constantes que têm os mesmos valores, ele será avaliado como false.
- Vamos criar uma
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. Mas e se quisermos comparar dois objetos não constantes por valor e não por referência?
Então a solução é, precisamos substituir o ==operador e hashCodeassim:
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;
}
E agora, se compararmos dois Userobjetos não constantes que têm os mesmos valores, a instrução será impressa true.
E isso é um monte de código clichê!
Uma maneira simples de conseguir isso é usando o pacote Equatable .
- Adicione a dependência igualável em
pubspec.yamlseu projeto 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];
}
Obrigado por ler!
Youtube: Programador Bekar





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)