Sobes.tech
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-ին: