CodeBlanks Logo Icon CodeBlanks

FutureProvider

FutureProvider ile async veriyi sağlamayı öğrenirsin.

FutureProvider nedir?

FutureProvider, bir Future döndüren fonksiyonu saran ve sonucu otomatik olarak AsyncValue olarak sağlayan provider'dır. Future tamamlandığında AsyncValue.data'ya, hata verdiğinde AsyncValue.error'a, beklerken AsyncValue.loading'e geçer. El ile durum yönetimi yapmazsın.

final userProvider = FutureProvider<String>((ref) async {
  await Future.delayed(Duration(seconds: 1));
  return 'Ayşe';
});

FutureProvider'ı izlemek

ref.watch(futureProvider) bir AsyncValue<T> döndürür; doğrudan T vermez. when metodu ile loading, data ve error durumlarını ayrı widget'lara çevirirsin. Bu kalıp API çağrısı yapan ekranlarda standarttır.

final asyncValue = ref.watch(userProvider);
return asyncValue.when(
  data: (name) => Text(name),
  loading: () => CircularProgressIndicator(),
  error: (e, s) => Text('Hata: $e'),
);

Uygulama FutureProvider tanımla ve oku

userProvider adında bir FutureProvider<String> tanımla; oluşturucu fonksiyon async olarak 'Ayşe' döndürsün. main içinde ProviderContainer ile userProvider.future'ı bekle ve yazdır.

Başlangıç kodu

main.dart
import 'package:flutter_riverpod/flutter_riverpod.dart';

// userProvider adında FutureProvider tanımla
// oluşturucu fonksiyon async, 'Ayşe' döndürsün

void main() async {
  // ProviderContainer ile userProvider.future'ı bekle ve yazdır
}

Örnek çözüm

main.dart
import 'package:flutter_riverpod/flutter_riverpod.dart';

final userProvider = FutureProvider<String>((ref) async {
  return 'Ayşe';
});

void main() async {
  final container = ProviderContainer();
  final value = await container.read(userProvider.future);
  print(value);
}

Beklenen çıktı

Ayşe

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 FutureProvider'ın oluşturucu fonksiyonu ne döndürmelidir?

  • Widget
  • AsyncValue<T>
  • Future<T> Doğru cevap
  • Stream<T>

Açıklama: FutureProvider async fonksiyonu Future<T> döndürür; Riverpod sonucu AsyncValue'ya sarmayı kendi yapar.

2 FutureProvider tanımla

Soru
final userProvider = ____<String>((ref) async {
  return 'Ayşe';
});
Cevap
final userProvider = FutureProvider<String>((ref) async {
  return 'Ayşe';
});

Açıklama: FutureProvider, Future döndüren fonksiyonları sarmak için kullanılan provider'dır.

3 FutureProvider parçaları

Kavram Anlamı
FutureProvider Future sonucunu sağlar
ref.watch(provider) AsyncValue döndürür
async (ref) => Oluşturucu fonksiyon
when Durumları işler

İleri seviye bölümündeki tüm dersler