Sobes.tech
Back to questions
Junior — Middle
124

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

Answer from AI

sobes.tech AI

Паттерн BLoC (Business Logic Component) используется во Flutter для управления состоянием приложения, отделяя бизнес-логику от UI.

Основная идея — использовать потоки (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();
  }
}

UI подписывается на stateStream и отправляет события в eventSink, BLoC обновляет состояние и уведомляет UI.