CodeBlanks Logo Icon CodeBlanks

Provider ve StateProvider

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

main.dart
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

main.dart
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

Soru
final sayacP = StateProvider<int>((ref) => 0);

void artir(WidgetRef ref) {
  ref.read(sayacP).____++;
}
Cevap
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

Orta seviye bölümündeki tüm dersler