Kenapa menggunakan parameter pada state di cubit, Seperti berikut contohnya:
@freezed
class ProductState with _$ProductState {
const factory ProductState.error({
required AppException error,
String? searchText,
FilterType? filterType,
}) = _Error;
const factory ProductState.initial({
String? searchText,
FilterType? filterType,
}) = _Initial;
const factory ProductState.loaded({
@Default([]) List<ProductEntity> products,
ProductEntity? selectedProduct,
@Default(1) int currentPage,
@Default(false) bool hasReachedMax,
String? categoryId,
String? searchText,
FilterType? filterType,
}) = _Loaded;
const factory ProductState.loading({
@Default([]) List<ProductEntity> products,
String? searchText,
FilterType? filterType,
}) = _Loading;
const factory ProductState.empty({
required EmptyType type,
String? searchText,
FilterType? filterType,
}) = _Empty;
}
Parameter dalam state freezed
memungkinkan Anda untuk membawa data yang relevan dengan setiap state. Ini sangat berguna dalam mengelola state aplikasi Flutter karena memungkinkan aplikasi Anda untuk bereaksi sesuai dengan data yang spesifik untuk kondisi tertentu. Mari kita bahas kegunaan parameter dalam contoh ProductState
yang Anda berikan:
- Memperkaya State dengan Informasi Kontekstual:
- Setiap state (
error
,initial
,loaded
,loading
,empty
) membawa informasi kontekstual yang berbeda. Misalnya, stateloaded
membawa daftar produk, yang tidak dibutuhkan dalam stateinitial
.
- Setiap state (
- Flexibilitas dalam Menangani State:
- Dengan adanya parameter, Anda dapat menyesuaikan perilaku UI berdasarkan nilai parameter tersebut. Misalnya, tampilkan pesan error spesifik dari
error
atau daftar produk dariloaded
.
- Dengan adanya parameter, Anda dapat menyesuaikan perilaku UI berdasarkan nilai parameter tersebut. Misalnya, tampilkan pesan error spesifik dari
- Kemudahan dalam Menyimpan State Sebelumnya:
- Dalam beberapa kasus, seperti transisi dari
loaded
keloading
, mungkin berguna untuk menyimpan daftar produk saat ini (sebelum memuat lebih banyak data). Parameter ini memudahkan hal tersebut.
- Dalam beberapa kasus, seperti transisi dari
- Menyediakan Data Tambahan untuk UI:
- Parameter seperti
searchText
ataufilterType
memungkinkan state untuk membawa data tambahan yang relevan untuk rendering UI, seperti menyaring atau mencari produk.
- Parameter seperti
- State yang Dapat Disesuaikan:
- Dengan menggunakan parameter, Anda dapat membuat state yang lebih dapat disesuaikan dan responsif terhadap perubahan data spesifik, tanpa harus menciptakan banyak state yang sangat mirip.
- Menghindari State Global:
- Menggunakan parameter memungkinkan Anda untuk menghindari pendekatan state global yang mungkin berlebihan. Sebagai gantinya, setiap state membawa hanya data yang relevan untuk konteksnya.
- Optimalisasi Performa:
- Parameter memungkinkan pengelolaan state yang lebih efisien dan performa yang lebih baik, karena Anda tidak perlu melakukan perubahan pada seluruh state, tetapi hanya pada bagian yang relevan.
Dalam praktiknya, parameter dalam state freezed
memungkinkan Anda untuk menulis kode yang lebih bersih, terorganisir, dan mudah dipahami, sekaligus memberikan fleksibilitas yang lebih besar dalam menangani berbagai skenario dalam aplikasi Anda.