Ketika membuat sebuah State Managemen Bloc pada Flutter, kadang kala kita perlu membutuhkan Log event dan state dari state management, untuk mengetahui state terkini dan event pada yang barusan di jalankan.
Pada Flutter untuk membuat logging pada flutter_bloc, cukuplah mudah dengan cuma tambahin template observer saja dan langsung bisa dilihat hasilnya.
Buat Bloc Observer Class #
Pada Observer Bloc ini dimana fitur logging dan beberapa handle logic setiap state management bisa dijalankan di sini. Adapun fungsi/method apa saja yang bisa kita handle pada Bloc Observer diantaranya yaitu:
onCreate()
Pada method
onCreate
ini, dimana State Management Bloc ataupun Cubit di Flutter dibuat/di inisialisasikan saat pertama kalinya.onEvent()
Pada method
onEvent
di muculkan ketika ada aksi event ke salah satuBloc
, jadi untuk semua event di semua state management Bloc akan bisa dilihat disini.onChange()
Pada method
onChange
ketika ada perubahan state padaStateManagement Cubit.
onTransition()
Pada method
onTransition
dipanggil ketika ada perubahan state dari Bloc lewat event trigger.add()
dan di handle dimapEventToState
padaBloc.
onError()
Method ini dipanggil ketika terjadi error pada salah satu state management di
Bloc
ataupun
Cubit
misal yang sering terjadi kesalahan argument event tidak sesuai atau juga logic pada state management diBloc
tidak sesuai/terjadi sesuatu kesalahan, Maka method ini akan dijalankan.onClose()
Method ini dipanggil ketika
Cubit
telah di close ataudispose
oleh sistem atau juga user. Misal jika user pindah halaman dengan replace halaman sebelumnya denganProvider
pada halaman yang di replace, maka methodonClose
ini dijalankan.
Ketika membuat sebuah Bloc Observer
sendiri secara custom, kita perlu depend ke abstract class BlocObserver
yang merupakan bagian dari library flutter_bloc. Berikut contoh sederhana Bloc Observer yang saya buat.
|
|
Pada contoh tersebut saya hanya ingin menampilkan beberapa logging pada State management, yang berguna untuk mengetahui aktifitas pada state management yang kita buat.
Implement Bloc Observer #
Untuk implementasi Observer/Logging supaya berjalan perlu diterapkan pada file root project kita, biasanya observer bloc tiraruh pada root function main()
, intinya observer ini harus berada paling awal sebelum adanya Provider lain dari Bloc State Management
.
Pada contoh tadi saya buat Observer class dengan nama AppBlocObserver
, untuk namanya observer sesuaikan dengan class name yang Anda buat.
Berikut contoh penerapanya:
|
|
Jika Anda menerapkanya pada method root di main()
jangan lupa tambahkan method WidgetsFlutterBinding.ensureInitialized();
sebelum menjalankan kode lainya.
Sekian dari saya, Semoga bermanfaat :)
Jika terdapat kesalahan penulisan, typo, atau kurang sesuai dalam penulisan, bantu Saya untuk Edit on Github.
Comment: