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.