Skip to main content

State Management dengan BLoC

MStore menggunakan BLoC (Business Logic Component) Pattern untuk state management yang scalable dan testable.

๐ŸŽฏ Mengapa BLoC?

Keuntungan BLoC Pattern

  1. Separation of Concerns - Business logic terpisah dari UI
  2. Testability - Mudah di-unit test tanpa UI
  3. Reusability - BLoC bisa digunakan di multiple screens
  4. Predictability - State changes melalui events yang jelas
  5. Debugging - Easy to track state changes
  6. Platform Agnostic - Bisa digunakan di Flutter, AngularDart, dll

๐Ÿ“ฆ Dependencies

๐Ÿ—๏ธ Arsitektur BLoC

๐Ÿ“ Struktur BLoC

1. Events

Events adalah input ke BLoC yang memicu state changes.

2. States

States merepresentasikan kondisi UI pada waktu tertentu.

3. BLoC Implementation

๐ŸŽจ UI Integration

BlocProvider

Menyediakan BLoC ke widget tree.

BlocBuilder

Rebuild widget saat state berubah.

BlocListener

Listen state changes tanpa rebuild.

BlocConsumer

Kombinasi BlocBuilder + BlocListener.

๐Ÿ’พ Hydrated BLoC (Persistent State)

Untuk persist state across app restarts.
Setup di main:

๐Ÿ” BLoC Observer

Global observer untuk logging dan debugging.
Register di main:

๐Ÿงฉ Advanced Patterns

Bloc-to-Bloc Communication

Debouncing Events

Throttling Events

๐Ÿงช Testing BLoC

Unit Test

๐Ÿ“Š Performance Tips

1. Use Equatable

2. Avoid Rebuilding Entire Tree

3. Use buildWhen

๐Ÿ“š Best Practices

  1. Single Responsibility - Satu BLoC untuk satu feature
  2. Immutable States - Gunakan @immutable atau const
  3. Equatable - Implement untuk efficient rebuilds
  4. Error Handling - Selalu handle error states
  5. Loading States - Show loading indicators
  6. Dispose - Close BLoC saat tidak digunakan
  7. Testing - Write unit tests untuk semua BLoCs
  8. Logging - Use BlocObserver untuk debugging

Next Steps


BLoC Pattern memberikan:
  • โœ… Clear separation of concerns
  • โœ… Predictable state management
  • โœ… Easy testing
  • โœ… Scalable architecture