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.