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.
| Üsul | Abunə olur? | Nə vaxt |
|---|---|---|
| `context.watch<T>()` | Bəli | `build` içində dəyəri göstərəndə |
| `context.read<T>()` | Xeyr | Callback-də metod çağıranda (`onPressed`) |
| `Consumer<T>` | Bəli, yalnız öz builder-i | Rebuild 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
- provider paketirəsmipub.dev
README-də `watch`/`read`/`select` fərqi və tipik səhvlər sadalanıb.
- Sadə app state idarəsirəsmidocs.flutter.dev
- State management variantlarırəsmidocs.flutter.dev