Dart Eşitlik ve Eşitlik Paketi

Nov 27 2022
Eşitlik, == operatörünü kullanarak iki nesnenin eşit olup olmadığını kontrol etmek için kullanılır. İki nesne eşitse, o zaman== operatörü doğru olarak değerlendirilir, aksi takdirde yanlış olarak değerlendirilir.

==Eşitlik, operatörü kullanarak iki nesnenin eşit olup olmadığını kontrol etmek için kullanılır . İki nesne eşitse, ==operatör olarak değerlendirir, trueaksi takdirde olarak değerlendirir false.

Dart'ta, operatör varsayılan ==olarak referans eşitliğini kontrol eder ve trueiki nesnenin ne zaman aynı örnek olduğunu veya aynı referansa ait olduğunu değerlendirir. Aynı değerlere sahip iki sabit olmayan nesneyi karşılaştırırsak, o zaman olarak değerlendirilir false.

  1. Bir Usersınıf oluşturalım:
  2. 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. Peki ya sabit olmayan iki nesneyi referansa göre değil de değere göre karşılaştırmak istiyorsak?

==Çözüm şu ki, operatörü geçersiz kılmamız gerekiyor ve hashCodeşöyle:

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;
}

Ve şimdi User, aynı değerlere sahip iki sabit olmayan nesneyi karşılaştırırsak, ifade yazdırılacaktır true.

Ve bu çok fazla basmakalıp kod!

Bunu başarmanın basit bir yolu, Equatable paketini kullanmaktır.

  1. Çarpıntı projenizin eşitlenebilir bağımlılığını ekleyin pubspec.yaml:
  2. 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];
    }
    

Okuduğunuz için teşekkürler!

Youtube: Bekar Programcı