Sparround

Provider və ChangeNotifier

Provider InheritedWidget-in üzərinə rahat API qoyan paketdir və uzun müddət Flutter-in rəsmi sənədində tövsiyə olunan seçim olub. Üç hissədən ibarətdir:

  • `ChangeNotifier` — vəziyyəti saxlayan sinif; dəyişəndə notifyListeners() çağırır
  • `ChangeNotifierProvider` — həmin obyekti ağaca yerləşdirir və ömrünü idarə edir (avtomatik dispose)
  • `Consumer` / `context.watch` / `context.read` — oxumaq üsulları

Ən vacib fərq: `watch` abunə olur (dəyişəndə rebuild), `read` olmur (bir dəfə oxuyur). Callback-lərdə — onPressed daxilində — həmişə read istifadə olunur.

ÜsulAbunə olur?Nə vaxt
`context.watch<T>()`Bəli`build` içində dəyəri göstərəndə
`context.read<T>()`XeyrCallback-də metod çağıranda (`onPressed`)
`Consumer<T>`Bəli, yalnız öz builder-iRebuild sahəsini kiçiltmək lazımdırsa
`Selector<T, R>`Bəli, yalnız seçilmiş hissəyəBöyük obyektin bir sahəsindən asılı olanda

Interview ipucu. İki səhv çox soruşulur. Birincisi: build metodunda context.read istifadə edib "niyə UI yenilənmir?" deyə təəccüblənmək — read abunə olmur. İkincisi: onPressed içində context.watch çağırmaq — bu, lazımsız abunə yaradır və Flutter xəbərdarlıq verir. Qayda sadədir: `build`-də watch, callback-də read.

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