Ketika kita membuat sebuah app dengan Flutter kadang kala kita perlu banget menggunakan state management, maka dari itu kita perlu paham dan mengerti tentang state management.
Di Flutter tersedia banyak sekali state management seperti Provider, Bloc, Redux, Mobx, Cubit, dll. Mungkin diantara teman-teman sudah banyak juga yang mengerti tentang state management di Flutter, atau perna menggunakannya.
Pada kali ini Aku akan membahas tentang state management di Flutter dengan Cubit, mungkin terdengar agak aneh namanya ya?, state management Cubit ini terbilang cukup baru banget sekitar kurang 1 bulanan pada saat saya menulis artikel ini. Link source code Cubit bisa teman-teman dapatkan di github.
Cubit ini adalah bagian dari Bloc Libaray yang ditambahkan pada mulai versi 5.0.0, Jadi tidak heran kodenya mirip dengan Bloc state management.
Pada kesempatan ini aku mau bahas tentang Tutorial Flutter Membuat Bottom Navigation Bar Menggunakan State Management Cubit, sebelum kita mula mari kita membuat project simple tentang cubit ini.
Mari kita mulai membuat sebuah project simple untuk belajar kita bareng-bareng, kita namai project kita dengan nama flutter_bottom_nav_cubit
. Untuk membuat project baru teman-teman bisa jalankan command berikut:
|
|
Kemudian open project nya di text editor VS Code atau pun di Android Studio.
Untuk membuat sebuah app dengan state management Cubit, ada yang perlu di install terlebih dahulu yaitu library cubit nya, kita install library Cubit di pubspec.yaml
.
|
|
Kemudian jalankan flutter pub get
tunggu sampai proses install selesai.
Setelah itu kita buat state management nya, tinggal klik kanan pada folder lib/
terus pilih Cubit: New Cubit
,
Oh ya, fitur ini bisa teman-teman dapatkan jika menginstall extension di VS Code. Berikut artikel tentang extensions VS Code:
Lanjut lagi, kemudian beri nama cubit kita dengan nama bottom_nav
kemudian enter.
Berikut kode hasil generate:
bottom_nav_cubit.dart
|
|
bottom_nav_state.dart
|
|
Pada state management cubit ini kita tidak perlu membuat class event-event yang seperti pada Bloc. Jadi di cubit lebih simple. Dan untuk meng trigger sebuah event di cubit cukup dengan method-method nya.
|
|
Ketika Bloc versi 5.0.0 dan cubit ini untuk initialisasi state pada super class.
Langkah pertama kita buat dulu logic Cubit untuk bottom nav.
Kita buat seperti ini.
bottom_nav_cubit.dart
|
|
Kita buat seperti itu, dah emang cukup itu aja buat state management, simple kan?
Kita hapus saja file bottom_nav_state.dart karena sudah tidak dibutuhkan.
Kemudian kita harus implementasi cubit ini pada UI. Pertama kita harus membuat CubitProvider
dulu.
Kita buat pada file main.dart
dan taruh sebagai parent widget MeterialApp
berikut kodenya.
|
|
Langkah selanjutnya buat terlebih dahulu widget MainPage, sebagai Page utamanya.
|
|
Kemudian buatlah page page yang ada di bottom nav terserah teman-teman saja, sampai saat ini kita sudah berhasil membuat app kita lebih dinamis dan mudah di maintance.
Berikut hasil preview:
Bedah Kode:
|
|
int
tersebut adalah type data yang digunakan state nya, kenapa sih saya menggunakan type data int
, karena bottomNavigationBar itu kan ada property currentIndex
nah state tersebut bisa kita gunakan sebagai value nya.
|
|
Pada super(0)
nilai 0
adalah initial state dari cubit itu sendiri.
|
|
Pada cubit ini untuk membuat event kita buat sebuah method / function untuk mentrigger sebuah event dan akan mengembalikan sebauh state.
|
|
Pada Cubit ini untuk mengembalikan state sekarang atau mengupdate state terbaru menggunakan keyword emit(value_state)
. Beda dengan Bloc yang menggunkana keyword yield
sebagai updater state.
|
|
Untuk posisi CubitProvider
pastikan diatas atau sebagai parent nya CubitProvider, bisa saja di taruh root widget seperti MaterialApp, atau sebagai parent suatu page.
|
|
Untuk mengambil sebuah state Cubit secara realtime kita perlu membuat sebuah widget yaitu CubitBuilder
. CubitBuilder
tidak boleh posisinya di atas CubitProvider
.
Get Event with Extensions
|
|
Get Event without Extensions
|
|
Untuk mentrigger sebuah event cubit kita perlu menggunakan keyword tersebut.
Teman-teman masih bingung dengan penjelasan saya? Bila masih bingung bisa contact saya, atau bisa lihat hasil experiment kali ini di Github:
Source CodeReference: - https://github.com/felangel/cubit
Jika terdapat kesalahan penulisan, typo, atau kurang sesuai dalam penulisan, bantu Saya untuk Edit on Github.
Comment: