FutureProvider
- Flutter kursu
- İleri seviye
- Ders 4/69
- 4 dk
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
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
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
final userProvider = ____<String>((ref) async {
return 'Ayşe';
});
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 |