Sobes.tech
Junior — Middle

Можете ли да обясните механизма на функциониране на патърна BLoC в управлението на състоянието на приложението?

sobes.tech AI

Отговор от AI

Моделът BLoC (Business Logic Component) се използва във Flutter за управление на състоянието на приложението, като отделя бизнес логиката от потребителския интерфейс.

Основната идея е използването на потоци (Streams) за предаване на събития и състояния:

  • Събития (Events): действия на потребителя или външни събития се изпращат към BLoC.
  • Обработка: BLoC получава събитията, изпълнява бизнес логиката и формира ново състояние.
  • Състояния (States): актуализираните данни се изпращат обратно чрез поток, към който е абониран UI.

Това позволява кодът да бъде по-модулен, тестируем и поддържан.

Пример за опростен 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();
  }
}

Потребителският интерфейс се абонира за stateStream и изпраща събития към eventSink, BLoC актуализира състоянието и уведомява UI-то.