Junior — Middle
Môžete vysvetliť mechanizmus fungovania vzoru BLoC v riadení stavu aplikácie?
sobes.tech AI
Odpoveď od AI
Vzorec BLoC (Business Logic Component) se v Flutterju uporablja za upravljanje stanja aplikacije, ločevanje poslovne logike od uporabniškega vmesnika.
Glavna ideja je uporaba tokov (Streams) za prenos dogodkov in stanj:
- Dogodki (Events): dejanja uporabnika ali zunanji dogodki se pošljejo v BLoC.
- Obdelava: BLoC prejme dogodke, izvede poslovno logiko in oblikuje novo stanje.
- Stanja (States): posodobljeni podatki se vrnejo nazaj prek toka, na katerega se UI naroči.
To omogoča, da je koda bolj modularna, testabilna in vzdrževana.
Primer poenostavljenega 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();
}
}
UI se naroči na stateStream in pošlje dogodke v eventSink, BLoC posodobi stanje in obvesti UI.