Skip to content

Parameter pada state


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:

  1. Memperkaya State dengan Informasi Kontekstual:
    • Setiap state (error, initial, loaded, loading, empty) membawa informasi kontekstual yang berbeda. Misalnya, state loaded membawa daftar produk, yang tidak dibutuhkan dalam state initial.
  2. 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 dari loaded.
  3. Kemudahan dalam Menyimpan State Sebelumnya:
    • Dalam beberapa kasus, seperti transisi dari loaded ke loading, mungkin berguna untuk menyimpan daftar produk saat ini (sebelum memuat lebih banyak data). Parameter ini memudahkan hal tersebut.
  4. Menyediakan Data Tambahan untuk UI:
    • Parameter seperti searchText atau filterType memungkinkan state untuk membawa data tambahan yang relevan untuk rendering UI, seperti menyaring atau mencari produk.
  5. 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.
  6. 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.
  7. 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.