Sobes.tech
Junior — Middle

Meg tudná magyarázni a BLoC mintázat működési mechanizmusát az alkalmazás állapotának kezelésében?

sobes.tech MI

Válasz az MI-től

A BLoC (Business Logic Component) minta Flutterben az alkalmazás állapotának kezelésére szolgál, elkülönítve az üzleti logikát a felhasználói felülettől.

A fő ötlet az események (Events) és állapotok (States) átadására szolgáló folyamatok (Streams) használata:

  • Események (Events): felhasználói műveletek vagy külső események kerülnek a BLoC-ba.
  • Feldolgozás: a BLoC fogadja az eseményeket, végrehajtja az üzleti logikát és új állapotot hoz létre.
  • Állapotok (States): a frissített adatok visszaküldésre kerülnek a folyamon keresztül, amelyhez a UI csatlakozik.

Ez lehetővé teszi a kód modulárisabb, tesztelhetőbb és karbantarthatóbb kialakítását.

Egyszerűsített BLoC példa:

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();
  }
}

A felhasználói felület feliratkozik a stateStream-re és eseményeket küld a eventSink-be, a BLoC frissíti az állapotot és értesíti a UI-t.