Junior — Middle
Kas saaksite selgitada BLoC mustri tööpõhimõtet rakenduse oleku haldamisel?
sobes.tech AI
Vastus AI-lt
BLoC (Business Logic Component) muster Flutteris kasutatakse rakenduse oleku haldamiseks, eraldades äriloogika kasutajaliidesest.
Peamine idee on kasutada vooge (Streams) sündmuste ja olekute edastamiseks:
- Sündmused (Events): kasutaja tegevused või välised sündmused saadetakse BLoC-ile.
- Töötlemine: BLoC võtab sündmused vastu, täidab äriloogika ja loob uue oleku.
- Olekud (States): uuendatud andmed saadetakse tagasi voolu kaudu, millele UI on tellitud.
See võimaldab koodi muuta modulaarsemaks, testitavamaks ja hooldatavamaks.
Lihtsustatud BLoC näide:
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();
}
}
Kasutajaliides tellib stateStream-ile ja saadab sündmusi eventSink-i kaudu, BLoC uuendab olekut ja teavitab UI-d.