Sobes.tech
Junior — Middle

Pode explicar o mecanismo de funcionamento do padrão BLoC na gestão do estado da aplicação?

sobes.tech IA

Resposta da IA

O padrão BLoC (Business Logic Component) é utilizado no Flutter para gerir o estado da aplicação, separando a lógica de negócio da interface de utilizador.

A ideia principal é usar fluxos (Streams) para transmitir eventos e estados:

  • Eventos (Events): ações do utilizador ou eventos externos são enviados ao BLoC.
  • Processamento: o BLoC recebe os eventos, executa a lógica de negócio e forma um novo estado.
  • Estados (States): os dados atualizados são enviados de volta através do fluxo, ao qual a UI está inscrita.

Isto permite que o código seja mais modular, testável e fácil de manter.

Exemplo de um BLoC simplificado:

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();
  }
}

A interface de utilizador subscreve-se ao stateStream e envia eventos para o eventSink, o BLoC atualiza o estado e notifica a UI.