Junior — Middle
Puoi spiegare il meccanismo di funzionamento del pattern BLoC nella gestione dello stato dell'applicazione?
sobes.tech AI
Risposta dell'AI
Il pattern BLoC (Business Logic Component) viene utilizzato in Flutter per gestire lo stato dell'applicazione, separando la logica di business dall'interfaccia utente.
L'idea principale è usare flussi (Streams) per trasmettere eventi e stati:
- Eventi (Events): azioni dell'utente o eventi esterni vengono inviati al BLoC.
- Elaborazione: il BLoC riceve gli eventi, esegue la logica di business e forma un nuovo stato.
- Stati (States): i dati aggiornati vengono trasmessi indietro tramite il flusso, a cui l'UI è iscritta.
Questo permette di rendere il codice più modulare, testabile e manutenibile.
Esempio di un BLoC semplificato:
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();
}
}
L'interfaccia utente si iscrive a stateStream e invia eventi a eventSink, il BLoC aggiorna lo stato e notifica l'UI.