Pub Dev Equatable | Library untuk komparasi objek
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