Sobes.tech
Junior — Middle

Kas saaksite selgitada BLoC mustri tööpõhimõtet rakenduse oleku haldamisel?

sobes.tech AI

Vastus AI-lt

BLoC (Business Logic Component) muster Flutteris kasutatakse rakenduse oleku haldamiseks, eraldades äriloogika kasutajaliidesest.

Peamine idee on kasutada vooge (Streams) sündmuste ja olekute edastamiseks:

  • Sündmused (Events): kasutaja tegevused või välised sündmused saadetakse BLoC-ile.
  • Töötlemine: BLoC võtab sündmused vastu, täidab äriloogika ja loob uue oleku.
  • Olekud (States): uuendatud andmed saadetakse tagasi voolu kaudu, millele UI on tellitud.

See võimaldab koodi muuta modulaarsemaks, testitavamaks ja hooldatavamaks.

Lihtsustatud BLoC näide:

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

Kasutajaliides tellib stateStream-ile ja saadab sündmusi eventSink-i kaudu, BLoC uuendab olekut ja teavitab UI-d.