Sobes.tech
Junior — Middle

Meg tudná magyarázni, mit jelent a BLoC minta az alkalmazás architektúrájában?

sobes.tech MI

Válasz az MI-től

A BLoC (Business Logic Component) minta a Flutter alkalmazások architektúrájában arra, hogy elkülönítse az üzleti logikát a felhasználói felülettől. Segít az alkalmazás állapotának kezelésében, így a kód modulárisabb és könnyebben tesztelhető lesz.

A BLoC fő ötletei:

  • Adatfolyamok (Streams): A BLoC adatfolyamokat (Streams) használ az események továbbítására a UI-tól és az állapotok visszaküldésére.
  • Bemeneti események (Events): A UI eseményeket küld a BLoC-nak, például egy gombnyomást.
  • Kimeneti állapotok (States): A BLoC feldolgozza az eseményeket és új állapotokat ad ki, amelyekhez a UI csatlakozik.

Egyszerű BLoC példa Dartban:

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

Itt a UI egy eseményt küld az incrementSink-be, a BLoC növeli a számlálót és elküldi az új értéket a counterStream-be, amelyhez a UI csatlakozik.