Sparround

BLoC və Cubit

BLoC (Business Logic Component) vəziyyəti axın (stream) modeli ilə idarə edir: giriş hadisə (event), çıxış vəziyyət (state). UI yalnız hadisə göndərir və vəziyyətə qulaq asır — biznes məntiqi tamamilə ayrılır.

Paketdə iki səviyyə var:

  • `Cubit` — sadələşdirilmiş forma: event yoxdur, birbaşa metodlar var (increment()), metod isə emit(newState) çağırır
  • `Bloc` — tam forma: hər dəyişiklik bir event kimi gəlir və on<Event> handler-i vəziyyət yayır

Əksər hallarda Cubit kifayətdir. Bloc hadisə tarixçəsi, event-lərin ardıcıllığının idarəsi (məsələn debounce) və audit vacib olanda haqqını ödəyir.

MeyarCubitBloc
Boilerplate həcmiAz — yalnız metodlarÇox — event sinifləri + handler-lər
Hadisə tarixçəsiYoxdurVar — hər event izlənə bilir
Event axınına nəzarət (debounce, throttle)Əl iləDaxili dəstək (`transformer`)
Nə vaxt seçməkSadə və orta mürəkkəblikdə vəziyyətAudit, mürəkkəb axın, böyük komanda

Interview ipucu. BLoC sualında ən çox gözlənilən şey niyə onu seçdiyini izah etməkdir. Güclü arqumentlər: biznes məntiqi UI-dan tam ayrılır və Flutter olmadan test edilə bilir; vəziyyət dəyişmələri izlənəbiləndir (BlocObserver bütün keçidləri loglayır); böyük komandada struktur məcburi olduğu üçün kod eyni cür yazılır. Zəif arqument: "populyardır". Çatışmazlığı da qeyd et — boilerplate real xərcdir.

📚 Mənbələr və sənədlər