Junior — Middle
Ar galite paaiškinti BLoC šablono veikimo mechanizmą programos būsenos valdyme?
sobes.tech AI
Atsakymas iš AI
BLoC (Business Logic Component) modelis Flutter naudojamas programos būsenai valdyti, atskiriant verslo logiką nuo UI.
Pagrindinė idėja yra naudoti srautus (Streams) įvykių ir būsenų perdavimui:
- Įvykiai (Events): naudotojo veiksmai arba išoriniai įvykiai siunčiami į BLoC.
- Apdorojimas: BLoC priima įvykius, vykdo verslo logiką ir sukuria naują būseną.
- Būsenos (States): atnaujinti duomenys grąžinami atgal per srautą, į kurį prenumeruoja UI.
Tai leidžia kodą padaryti moduliškesnį, testuojamą ir palaikomą.
Supaprastintas BLoC pavyzdys:
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();
}
}
Vartotojo sąsaja prenumeruoja stateStream ir siunčia įvykius eventSink, BLoC atnaujina būseną ir praneša UI.