Sobes.tech
Junior — Middle

Приложение архитектурасында BLoC үлгүсүнүн мааниси эмне экенин түшүндүрө аласызбы?

sobes.tech AI

AIден жооп

Flutter колдонмолорунун архитектурасында BLoC (Business Logic Component) үлгүсү бизнес логиканы жана UI-ны бөлүп көрсөтүү үчүн иштелип чыккан. Ал колдонмонун абалын башкарууга жардам берет, кодду көбүрөөк модулдуу жана тестке оңой кылат.

BLoCнин негизги идеялары:

  • Маалымат агымдары (Streams): BLoC UI-дан окуяларды өткөрүү жана кайра абалдарды чыгарып берүү үчүн агымдарды (Streams) колдонуп жатат.
  • Кирүү окуялары (Events): UI BLoC-га окуяларды жиберет, мисалы, кнопканы басуу.
  • Чыгуу абалы (States): BLoC окуяларды иштетип, жаңы абалдарды чыгарат, аларга UI жазылат.

Dart тилинде жөнөкөй BLoC мисалы:

import 'dart:async';

class CounterBloc {
  int _counter = 0;

  final _stateController = StreamController<int>();
  Stream<int> get counterStream => _stateController.stream;

  final _eventController = StreamController<void>();
  Sink<void> get incrementSink => _eventController.sink;

  CounterBloc() {
    _eventController.stream.listen((_) {
      _counter++;
      _stateController.sink.add(_counter);
    });
  }

  void dispose() {
    _stateController.close();
    _eventController.close();
  }
}

Бул жерде, UI incrementSink аркылуу окуя жиберет, BLoC эсептегичти көбөйтүп, жаңы маанини counterStream агымына жиберет, ал жерде UI жазылат.