Implement BlocObserver untuk Debug dan Mengetahui Proses State Management Bekerja
BlocObserver BlocObserver adalah class abstract untuk memantau perilaku instance Bloc. Disini kita dapat melacak kapan saja suatu tindakan atau triggered baik dari user atau event saat pertamakali dijalankan. dan dalam contoh ini debugging Bloc akan lebih seru ketika kita tau proses nya bekerja. Baca Juga: Pengenalan Bahasa Pemrograman DART onChange Kita perlu override method onChange di dalam bloc untuk melihat perubahan ketika ada state baru pada saat pertama kali dijalankan.
Seperti yang kita lihat, function onChange memiliki satu argument paramenters yaitu Change. Untuk parameters Change disini merepresentasikan perubahan dari satu state ke state yang lain. Parameters Change terdiri dari currentState dan nextState. Sekarang setiap kali ada state baru terjadi perubahan yang di emitted dan disanalah tempat yang menarik untuk kebutuhan logging/analytics dengan begitu kita akan tau secara spesifik. Satuhal yang perlu kita ketahui disini sebelum melakukan operasi apapun di dalam method onChange kita perlu memangil super.onChange terlebih dahulu. onTransition Jika kita ingin mengamati bloc setiap kali ada event yang ditambahkan dan penambahan state baru, kita perlu override terlebih dahulu method onTransition.Transition terjadi ketika ada event baru yang ditambahkan dan state baru yang di emitted dari EventHandler yang di jalankan.Transition dipanggil sebelum Bloc state di perbaharui.Itulah mengapa penggunaan Transition ini adalah tempat yang bagus untuk menambahkan logging/analitik di masing-masing bloc.Seperti biasa sebelum memasukan operasi yang lain kita perlu memanggil super.onTransition terlebih dahulu. onError Untuk mengetahui kesalahan di dalam bloc yang terjadi kita perlu override method onError terlebih dahulu untuk mengetahui kesalahan yang di timbulkan ketika dijalankan.onError akan dipanggil setiap kali terjadi kesalahan dan memberitahu BlocObserver.onError.Seperti biasa sebelum memasukan operasi yang lain kita perlu memanggil super.onError terlebih dahulu. onEvent Seperti namanya, setiap kali ada tindakan yang ditambahkan ke dalam bloc, method onEvent ini akan ke trigger.Ini juga merupakan tempat yang bagus untuk menambahkan logging/analitik begaimana event dari bloc itu bekerja. Example Untuk menampilkan cara kerja BlocObserver saya telah menambahkan sample code yang ada di github saya dan bisa dilihat disini class HomeBloc extends Bloc { HomeBloc({required FoodRespository foodRespository}) : _foodRespository = foodRespository, super(const HomeState()) { on(mapEventToState); } final FoodRespository _foodRespository; Future mapEventToState(HomeEvent event, Emitter emit) async { try { final listFood = await _foodRespository.listFood(); emit(HomeState(food: listFood, status: HomeStatus.success)); } on Exception catch (e) { emit(state.copyWith(message: e.toString(), status: HomeStatus.failure)); } }