Provider ve StateProvider
- Flutter kursu
- Orta seviye
- Ders 12/99
- 4 dk
Provider ve StateProvider farkını öğrenirsin.
Provider ve StateProvider
Provider salt okunur bir değer üretir; değiştirilemez. StateProvider ise hem okunabilir hem yazılabilir bir state tutar; state özelliği ile güncellenir.
final isimP = Provider((ref) => 'Ayşe');
final sayacP = StateProvider((ref) => 0);
ref.read(sayacP).state++;StateProvider, basit state için idealdir.
StateProvider kullanımı
StateProvider ile basit bir state tanımlar ve ref.read(stateP).state ile güncellersin. state özelliği yeni değeri atayınca dinleyen widget'lar otomatik yeniden inşa edilir.
final seciliP = StateProvider<bool>((ref) => false);
ref.read(seciliP).state = true;Değişiklik anında tüm dinleyen widget'lara yansır.
Uygulama Provider ve StateProvider tanımla
isimP adında Provider<String> tanımla ve 'Ayşe' döndürsün. sayacP adında StateProvider<int> tanımla ve başlangıç değeri 0 olsun. main'de bir ProviderContainer oluştur, her ikisini oku ve print('isim: ${...} sayaç: ${...}') ile yazdır.
Başlangıç kodu
import 'package:flutter_riverpod/flutter_riverpod.dart';
// isimP: Provider<String> 'Ayşe'
// sayacP: StateProvider<int> 0
void main() {
final container = ProviderContainer();
// isimP ve sayacP'yi oku ve yazdır
}Örnek çözüm
import 'package:flutter_riverpod/flutter_riverpod.dart';
final isimP = Provider<String>((ref) => 'Ayşe');
final sayacP = StateProvider<int>((ref) => 0);
void main() {
final container = ProviderContainer();
final isim = container.read(isimP);
final sayac = container.read(sayacP);
print('isim: $isim sayaç: $sayac');
}Beklenen çıktı
isim: Ayşe sayaç: 0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Hangi provider hem okunabilir hem yazılabilir state tutar?
- StreamProvider
- Provider
- FutureProvider
- StateProvider Doğru cevap
Açıklama: StateProvider yazılabilir state tutar; state özelliği ile güncellenir. Provider yalnızca salt okunur değer üretir.
2 StateProvider'ı güncelle
final sayacP = StateProvider<int>((ref) => 0);
void artir(WidgetRef ref) {
ref.read(sayacP).____++;
}
final sayacP = StateProvider<int>((ref) => 0);
void artir(WidgetRef ref) {
ref.read(sayacP).state++;
}
Açıklama: StateProvider'ı güncellemek için ref.read(sayacP).state özelliği yeni değerle atanır; bu dinleyen widget'ları rebuild eder.
3 Provider ve StateProvider parçaları
| Kavram | Anlamı |
|---|---|
Provider |
Salt okunur değer üretir |
StateProvider |
Yazılabilir state tutar |
state |
StateProvider'ın güncelleme özelliği |
ref.read |
Provider'a erişim yöntemi |