Sobes.tech
Junior — Middle

Vai jūs varat izskaidrot BLoC modeļa darbības mehānismu lietojumprogrammas stāvokļa pārvaldībā?

sobes.tech AI

Atbilde no AI

BLoC (Business Logic Component) modelis Flutter tiek izmantots, lai pārvaldītu lietotnes stāvokli, atdalot biznesa loģiku no UI.

Galvenā ideja ir izmantot straumes (Streams) notikumu un stāvokļu nodošanai:

  • Notikumi (Events): lietotāja darbības vai ārēji notikumi tiek nosūtīti uz BLoC.
  • Apstrāde: BLoC saņem notikumus, izpilda biznesa loģiku un veido jaunu stāvokli.
  • Stāvokļi (States): atjauninātie dati tiek nosūtīti atpakaļ caur straumi, uz kuru ir abonējis UI.

Tas ļauj kodu padarīt modulārāku, testējamu un uzturamu.

Vienkāršots BLoC piemērs:

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 abonējas uz stateStream un sūta notikumus uz eventSink, BLoC atjauno stāvokli un informē UI.