Sobes.tech
Junior — Middle

Môžete vysvetliť mechanizmus fungovania vzoru BLoC v riadení stavu aplikácie?

sobes.tech AI

Odpoveď od AI

Vzorec BLoC (Business Logic Component) se v Flutterju uporablja za upravljanje stanja aplikacije, ločevanje poslovne logike od uporabniškega vmesnika.

Glavna ideja je uporaba tokov (Streams) za prenos dogodkov in stanj:

  • Dogodki (Events): dejanja uporabnika ali zunanji dogodki se pošljejo v BLoC.
  • Obdelava: BLoC prejme dogodke, izvede poslovno logiko in oblikuje novo stanje.
  • Stanja (States): posodobljeni podatki se vrnejo nazaj prek toka, na katerega se UI naroči.

To omogoča, da je koda bolj modularna, testabilna in vzdrževana.

Primer poenostavljenega 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 se naroči na stateStream in pošlje dogodke v eventSink, BLoC posodobi stanje in obvesti UI.