Sobes.tech
Junior — Middle

Ilova arxitekturasida BLoC naqshoni nima anglatishini tushuntirib bera olasizmi?

sobes.tech AI

AIdan javob

Flutter ilovalarining arxitekturasida BLoC (Business Logic Component) modeli biznes mantiqini va UI ni ajratish uchun mo'ljallangan. U ilovaning holatini boshqarishga yordam beradi, kodni yanada modulli va test qilish osonroq qiladi.

BLoC ning asosiy g'oyalari:

  • Ma'lumot oqimlari (Streams): BLoC UI dan voqealarni uzatish va holatlarni qaytarish uchun oqimlardan foydalanadi.
  • Kirish voqealari (Events): UI BLoC ga voqealarni yuboradi, masalan, tugmani bosish.
  • Chiqish holatlari (States): BLoC voqealarni qayta ishlaydi va yangi holatlarni chiqaradi, ular UI tomonidan kuzatiladi.

Dart tilida oddiy BLoC misoli:

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

Bu yerda UI incrementSink ga voqea yuboradi, BLoC hisoblagichni oshiradi va yangi qiymatni counterStream oqimiga yuboradi, UI esa unga ulanishi mumkin.