Sobes.tech
Junior — Middle

Můžete vysvětlit mechanismus fungování vzoru BLoC v řízení stavu aplikace?

sobes.tech AI

Odpověď od AI

Vzor BLoC (Business Logic Component) se v Flutteru používá k řízení stavu aplikace, oddělením obchodní logiky od uživatelského rozhraní.

Hlavní myšlenkou je použití toků (Streams) k přenosu událostí a stavů:

  • Události (Events): akce uživatele nebo externí události jsou odesílány do BLoC.
  • Zpracování: BLoC přijímá události, provádí obchodní logiku a vytváří nový stav.
  • Stavy (States): aktualizovaná data jsou zpět přenášena přes tok, na který se UI přihlásí.

To umožňuje, aby byl kód modulárnější, testovatelnější a udržitelnější.

Příklad zjednodušeného 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();
  }
}

Uživatelské rozhraní se přihlašuje k stateStream a odesílá události do eventSink, BLoC aktualizuje stav a informuje UI.