Sparround

Riverpod

Riverpod Provider-in müəllifi tərəfindən yazılıb və məqsədi Provider-in dörd əsas problemini həll etməkdir:

  • Compile-time təhlükəsizlik — provider qlobal dəyişəndir, ağacda "tapılmama" xətası olmur
  • Context-siz oxuma — vəziyyətə widget ağacından kənarda da çatmaq olur
  • Tipdən asılı olmama — eyni tipdən istənilən qədər provider ola bilər
  • Kompozisiya — bir provider başqasını ref.watch ilə oxuya bilər və asılılıq avtomatik izlənir

Widget tərəfdə ConsumerWidget istifadə olunur və build metoduna əlavə WidgetRef ref parametri gəlir.

Provider növləri işin xarakterinə görə seçilir:

  • `Provider` — dəyişməyən dəyər və ya servis (məs. repository)
  • `StateProvider` — sadə dəyişən dəyər (filter, seçilmiş tab)
  • `FutureProvider` — bir dəfəlik async yükləmə; AsyncValue qaytarır
  • `StreamProvider` — davamlı axın
  • `NotifierProvider` / `AsyncNotifierProvider` — mürəkkəb vəziyyət və biznes məntiqi

AsyncValue xüsusilə faydalıdır: yüklənir/data/xəta üç halını bir tipdə birləşdirir və when() ilə üçünü də idarə etməyə məcbur edir — unudulmuş error state problemi aradan qalxır.

Interview ipucu. Riverpod-un ən güclü satış arqumenti AsyncValue-dur və bunu nümunə ilə göstərmək təsirlidir: Provider-də loading/error state-lərini əl ilə bool isLoadingString? error sahələri ilə idarə edirsən və biri unudulur; AsyncValue.when isə üç halı da tələb edir. "Compile-time təhlükəsizlik" ifadəsini işlədəndə də konkret ol: provider qlobal olduğu üçün ProviderNotFoundException kimi runtime xətası mümkün deyil.

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