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