Junior — Middle
შეგიძლიათ ახსნათ BLoC ნიმუშის ფუნქციონირების მექანიზმი პროგრამის მდგომარეობის მართვაში?
sobes.tech AI
პასუხი AI-სგან
Flutter-ში BLoC (Business Logic Component) მოდელი გამოიყენება აპლიკაციის მდგომარეობის მართვისთვის, ბიზნეს ლოგიკის გამოყოფით UI-დან.
ძირითადი იდეაა გამოიყენოს ნაკადები (Streams) მოვლენებისა და მდგომარეობების გადასაცემად:
- ღონისძიებები (Events): მომხმარებლის მოქმედებები ან გარე მოვლენები გადაეცემა BLoC-ს.
- მუშაობა: BLoC იღებს მოვლენებს, ახორციელებს ბიზნეს ლოგიკას და ქმნის ახალ მდგომარეობას.
- მდგომარეობები (States): განახლებული მონაცემები გადაეცემა უკან ნაკადის მეშვეობით, რომელზეც UI-ი აბონირებულია.
ეს კოდს უფრო მოდულურს, ტესტირებადი და შენარჩუნებადი ხდის.
სადავიწროებული 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 აბონირებულია stateStream-ზე და აგზავნის მოვლენებს eventSink-ზე, BLoC განაახლებს მდგომარეობას და აცნობებს UI-ს.