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.
| Meyar | Cubit | Bloc |
|---|---|---|
| Boilerplate həcmi | Az — yalnız metodlar | Çox — event sinifləri + handler-lər |
| Hadisə tarixçəsi | Yoxdur | Var — 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ək | Sadə və orta mürəkkəblikdə vəziyyət | Audit, 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
- flutter_bloc paketirəsmipub.dev
- BLoC kitabxanasının sənədləribloclibrary.dev
Cubit və Bloc arasındakı seçim və test yazma bölmələri burada.
- State management variantlarırəsmidocs.flutter.dev