AsyncValue
- Flutter kursu
- İleri seviye
- Ders 3/69
- 4 dk
AsyncValue ile async state modellemeyi öğrenirsin.
AsyncValue nedir?
AsyncValue, asenktron işlemlerin üç olası durumunu (data, loading, error) tek bir nesnede modelleyen sınıftır. AsyncValue.data(value), AsyncValue.loading() ve AsyncValue.error(err, stack) şeklinde oluşturulur. Bu sayede async state'i tek bir türle ifade edebilirsin.
final value = AsyncValue<int>.data(42);
value.when(
data: (n) => print('Veri: $n'),
loading: () => print('Yükleniyor'),
error: (e, s) => print('Hata: $e'),
);when metodu
when metodu üç callback alır: data, loading ve error. Hangi durumdaysa onun callback'ini çağırır. Bu, if-else ile durum kontrol etmekten daha güvenlidir çünkü tüm durumları işlemeyi zorlar ve kodu okunur hale getirir.
snapshot.when(
data: (user) => Text(user.name),
loading: () => CircularProgressIndicator(),
error: (e, s) => Text('Hata: $e'),
);Uygulama AsyncValue.when kullan
AsyncValue<int>.data(42) ile bir değer oluştur. when metoduyla data durumunda print(n), loading'de 'Yükleniyor', error'da 'Hata' yazdır.
Başlangıç kodu
import 'package:flutter_riverpod/flutter_riverpod.dart';
void main() {
// AsyncValue ile 42 değerini oluştur
// when ile üç durumu işle
}Örnek çözüm
import 'package:flutter_riverpod/flutter_riverpod.dart';
void main() {
final value = AsyncValue<int>.data(42);
value.when(
data: (n) => print(n),
loading: () => print('Yükleniyor'),
error: (e, s) => print('Hata'),
);
}Beklenen çıktı
42
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 AsyncValue'nin hangi metodu üç durumu da işlemeyi zorunlu kılar?
- maybeWhen
- fold
- map
- when Doğru cevap
Açıklama: when metodu data, loading ve error callback'lerini alır; üçünü de belirtmek beklenir.
2 AsyncValue data durumu
final value = AsyncValue<int>.____(42);
final value = AsyncValue<int>.data(42);
Açıklama: data yapıcı metodu, başarılı sonucu tutan AsyncValue üretir.
3 AsyncValue durumları
| Kavram | Anlamı |
|---|---|
AsyncValue.data |
Veri durumu |
AsyncValue.loading |
Yükleme durumu |
AsyncValue.error |
Hata durumu |
when |
Üç durumu işler |