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-то.