Pub Dev Equatable | Library untuk komparasi objek

Muhammad Rezki Ananda
4 min readOct 12, 2021

Simplify Equality Comparisons

Halo semuanya, pada artikel ini saya akan membahas terkait perbandingan objek dalam Bahasa Dart. Menurut saya perbandingan objek dalam Bahasa Dart cukup sulit untuk dilakukan. Agar teman — teman tidak bingung saat membacanya, saya akan sampaikan dalam bentuk studi kasus.

Pertama, kita membuat sebuah class bernama User, class ini mempunyai beberapa property yaitu name, address, dan age. Property ini wajib ada dalam sebuah constructor.

Jika sudah membuat sebuah class, dilanjutkan dengan membuat sebuah objek dari class User.

Pada objek-objek ini, saya akan membuat sebuah test case, yaitu :

  • Perbandingan user1 dengan user2
  • Perbandingan user1 dengan user3
  • Perbandingan menggunakan nilai property
  • Perbandingan menggunakan library equatable

Perbandingan user1 dengan user2

Mulai dari sini kita akan membandingkan objek user1 dengan user2. Agar mempermudah dalam perbandingan, disini saya akan membuat function bernama compareObject() dengan parameter dua buah objek user dan return value yang berupa string.

Sekarang mari bandingkan objek user1 dan user2.

Disini sebenarnya cukup jelas bahwa perbandingan objek tersebut akan menghasilkan objek yang tidak sama, karena nilai property dari setiap objek sudah berbeda. User1 dengan name Rezki, address Kediri dan age 20 akan selalu tidak sama dengan user2 dengan name Nando, address Malang, dan age 21.

Setelah dicek, ternyata bahwa objek tidak sama.

Perbandingan user1 dengan user3

Sekarang kita bandingkan user1 dan user3. Jika dilihat, nilai property dari kedua objek tersebut terlihat sama, dengan name Rezki, address Kediri, dan age 20. Tentunya bagi teman — teman yang baru belajar konsep OOP pasti akan menjawab ini objek yang sama. Tapi tunggu dulu, disini saya akan melakukan simulasi test case terlebih dahulu.

Sekarang kita perlu memasukan objek user1 dan objek user3 dalam sebuah function compareObject()

Setelah di masukkan, sekarang mari kita coba untuk running programnya.

Hasil dari running program ternyata objek tidak sama, padahal isinya sudah sama. Disini perlu teman — teman ketahui bahwa user1 dan user3 merupakan objek yang berbeda walaupun isinya sama. Bisa diibaratkan kita mempunyai 2 orang teman, yang satu bernama Rezki dan yang kedua bernama Rezki juga, kebetulan keduanya mempunyai age atau umur 20. Jika dibandingan, hasilnya akan false karena teman 1 tidak sama dengan teman 2. Hal ini bisa kita implementasikan dalam konsep OOP termasuk didalam Bahasa Dart.

Perbandingan menggunakan nilai property

Setelah kita mempelajari perbandingan antar objek secara langsung, sekarang kita akan coba membandingan objek melalui nilai dari propertynya, pada test case ini, kita akan memodifikasi function compareObject().

Perbedaan dengan sebelumnya, terdapat kondisi if dengan membandingkan apakah sama antara semua property dari name, address dan age.

Setelah di masukkan, sekarang mari kita coba untuk running programnya.

Dapat dilihat, terdapat hasil objek sama dengan cara membandingkan property. Namun perlu diketahui, jika sebuah class mempunyai banyak property, maka pembuatan perbandingan tiap objek dengan cara seperti ini akan menguras banyak waktu. Namun jangan khawatir, masalah tersebut akan diatasi dengan cara menginstall library yang bernama Equatable

Perbandingan menggunakan library equatable

Equatable adalah sebuah library dimana kita tidak perlu untuk membanding objek berdasarkan propertynya secara satu persatu.

Cara menginstall equatable dengan cara masuk ke pubspec.yaml,measuk kebagian depedencies

dependencies:
equatable: ^2.0.0

Setelah itu, lakukan

# Dart
pub get
# Flutter
flutter packages get

Sekarang kembali ke class User, kita akan menambahkan extends ke class Equatable seperti berikut :

Perhatikan di getter props, dia akan return sebuah property yang akan kita bandingkan. Pada test case ini property tersebut adalah name, address dan age.
Kembali di method main, sekarang kita akan melakukan perbandingan user1 dan user3 namun dengan kondisi setelah menggunakan equatable

Setelah di masukkan, sekarang mari kita coba untuk running programnya.

Dari perbandingan — perbandingan di atas, kita dapat mengetahui bahwa penggunaan equatable dapat membantu dalam komparasi objek menjadi lebih mudah. Perbandingan objek ini akan berguna saat ini sudah memakai state management dalam aplikasi dart atau flutter kita.

Full source code : https://github.com/newbiexpert/Dart-Equatable

--

--

Muhammad Rezki Ananda

Like to explore and learn various things about technology and how to build apps with a team work system