Sobes.tech
Junior — Middle

შეგიძლიათ ახსნათ BLoC ნიმუშის ფუნქციონირების მექანიზმი პროგრამის მდგომარეობის მართვაში?

sobes.tech AI

პასუხი AI-სგან

Flutter-ში BLoC (Business Logic Component) მოდელი გამოიყენება აპლიკაციის მდგომარეობის მართვისთვის, ბიზნეს ლოგიკის გამოყოფით UI-დან.

ძირითადი იდეაა გამოიყენოს ნაკადები (Streams) მოვლენებისა და მდგომარეობების გადასაცემად:

  • ღონისძიებები (Events): მომხმარებლის მოქმედებები ან გარე მოვლენები გადაეცემა BLoC-ს.
  • მუშაობა: BLoC იღებს მოვლენებს, ახორციელებს ბიზნეს ლოგიკას და ქმნის ახალ მდგომარეობას.
  • მდგომარეობები (States): განახლებული მონაცემები გადაეცემა უკან ნაკადის მეშვეობით, რომელზეც UI-ი აბონირებულია.

ეს კოდს უფრო მოდულურს, ტესტირებადი და შენარჩუნებადი ხდის.

სადავიწროებული BLoC-ის მაგალითი:

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 აბონირებულია stateStream-ზე და აგზავნის მოვლენებს eventSink-ზე, BLoC განაახლებს მდგომარეობას და აცნობებს UI-ს.