Sparround

Müqayisə və seçimin əsaslandırılması

Müsahibədə "hansı state management?" sualının məqsədi library adı deyil — qərar prosesini görməkdir. Güclü cavabın strukturu:

1. Kontekst soruş (komanda, məhsulun ömrü, async payı, audit tələbi). 2. Kriteriyaları adlandır. 3. Qərarı ver və rədd edilən alternativin səbəbini göstər. 4. Riski adlandır və onu necə azaltdığını de. 5. Rəsmi mövqeyə istinad et: Flutter komandası vahid tövsiyə vermir — seçim tətbiqin mürəkkəbliyi, komandanın seçimləri və həll edilməli problemlərdən asılıdır.

SualProviderRiverpod 3BLoC / Cubit
Öyrənmə əyrisiAşağıOrta (yeni mental model)Orta-yüksək (event/state disiplini)
Async stateƏl ilə bayraqlar`AsyncValue` hazırState modelində status/sealed
Səhv provider oxumaqRuntime xətasıKompilyasiya səviyyəsində görünürRuntime xətası
Test: asılılığı əvəz etməkAğacı əl ilə qurmaq`overrides` — bir sətir`bloc_test`, `MockBloc`, `whenListen`
State ardıcıllığının testiƏl ilə listener`container.listen``blocTest(expect: ...)` — ən hazır forma
Audit / event jurnalıƏl iləObserver-lər`BlocObserver` + `onTransition`
Debounce / concurrency idarəsiƏl iləƏl ilə (və ya `select`/`autoDispose` ilə dolayı)`EventTransformer` + `bloc_concurrency`
DI üçün rəsmi tövsiyəRəsmi case study bunu seçirProvider qrafı DI rolunu da oynayır`RepositoryProvider` (daxildə provider)

Müsahibədə diqqət çəkən bir fakt: flutter_bloc BlocProvider, MultiBlocProviderRepositoryProvider-i package:provider ilə həyata keçirir və onun context.read/watch/select extension-larını yenidən export edir. Deməli "Provider yoxsa BLoC?" sualı mexanizm sualı deyil — disiplin və konvensiya sualıdır. Bu cavab müqayisəni səthi müstəvidən çıxarır.

Hazır arqument dəstləri (müsahibədə birbaşa istifadə üçün):

  • Niyə Riverpod? — Async state hazır gəlir (AsyncValue), asılılıqlar overrides ilə testdə bir sətirdə əvəz olunur, provider-lər kompilyasiya səviyyəsində yoxlanılır, autoDispose yaddaşı özü təmizləyir. Qiyməti: yeni mental model, codegen build vaxtı.
  • Niyə BLoC? — Rəsmi sənədin iki bəndi: traceability (onTransition state → event → state) və advanced event transformations (debounce, droppable). Audit tələb olunan axınlarda və böyük komandada disiplin üstünlüyü. Qiyməti: boilerplate.
  • Niyə Provider? — Ən aşağı öyrənmə əyrisi, rəsmi arxitektura case study-sinin DI seçimi, Flutter sənədində rəsmi nümunə. Kiçik və orta tətbiqdə kifayətdir. Qiyməti: async state əl ilə, runtime xətaları.
  • Niyə qarışıq? — Ödəniş axını BLoC (audit), qalan hissə Riverpod (async). Şərt: sərhəd sənədləşdirilir və bir ekranda qarışdırılmır.

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