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-ին: