Sobes.tech
Junior — Middle

Czy możesz wyjaśnić mechanizm działania wzorca BLoC w zarządzaniu stanem aplikacji?

sobes.tech AI

Odpowiedź od AI

Wzorzec BLoC (Business Logic Component) jest używany w Flutter do zarządzania stanem aplikacji, oddzielając logikę biznesową od interfejsu użytkownika.

Główny pomysł polega na używaniu strumieni (Streams) do przesyłania zdarzeń i stanów:

  • Zdarzenia (Events): działania użytkownika lub zdarzenia zewnętrzne są wysyłane do BLoC.
  • Przetwarzanie: BLoC przyjmuje zdarzenia, wykonuje logikę biznesową i tworzy nowy stan.
  • Stany (States): zaktualizowane dane są przesyłane z powrotem przez strumień, do którego subskrybuje UI.

To pozwala na bardziej modułowy, testowalny i łatwy w utrzymaniu kod.

Przykład uproszczonego BLoC:

class CounterBloc {
  final _eventController = StreamController<void>();
  final _stateController = StreamController<int>();

  int _count = 0;

  StreamSink<void> get eventSink => _eventController.sink;
  Stream<int> get stateStream => _stateController.stream;

  CounterBloc() {
    _eventController.stream.listen((_) {
      _count++;
      _stateController.sink.add(_count);
    });
  }

  void dispose() {
    _eventController.close();
    _stateController.close();
  }
}

UI subskrybuje stateStream i wysyła zdarzenia do eventSink, BLoC aktualizuje stan i powiadamia UI.