loading ve error
- Flutter kursu
- Orta seviye
- Ders 23/99
- 4 dk
ConnectionState.waiting ve hasError ile durum yönetimini öğrenirsin.
loading ve error
FutureBuilder'da iki durum yaygındır: ConnectionState.waiting iken yükleniyor göstergesi, snapshot.hasError iken hata mesajı gösterilir.
if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator();
} else if (snapshot.hasError) {
return Text('Hata: ${snapshot.error}');
}Bu iki kontrol ile kullanıcı deneyimi düzeltilir.
hasError ile hata yönetimi
snapshot.hasError, Future bir hata fırlattığında true olur. Bu durumda snapshot.error ile hatayı gösterirsin.
if (snapshot.hasError) {
return Text('Hata: ${snapshot.error}');
}Hata yakalanmazsa uygulama çökebilir.
Uygulama Yükleniyor, hata ve veri durumlarını yönet
veriGetir async metodu 100 ms bekleyip 'Hazır' döndürsün. FutureBuilder<String> içinde: waiting iken CircularProgressIndicator, hasError iken Text('hata'), değilse Text(snapshot.data!) göster. main içinde print('başladı') çağır.
Başlangıç kodu
import 'package:flutter/material.dart';
Future<String> veriGetir() async {
await Future.delayed(Duration(milliseconds: 100));
return 'Hazır';
}
void main() {
print('başladı');
runApp(MaterialApp(home: Ekrani()));
}
class Ekrani extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
// FutureBuilder: waiting, hasError, data durumlarını yönet
child: Text('bekle'),
),
);
}
}Örnek çözüm
import 'package:flutter/material.dart';
Future<String> veriGetir() async {
await Future.delayed(Duration(milliseconds: 100));
return 'Hazır';
}
void main() {
print('başladı');
runApp(MaterialApp(home: Ekrani()));
}
class Ekrani extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: FutureBuilder<String>(
future: veriGetir(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator();
} else if (snapshot.hasError) {
return Text('hata');
}
return Text(snapshot.data!);
},
),
),
);
}
}Beklenen çıktı
başladı
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 FutureBuilder'da yükleniyor durumunda hangi gösterge kullanılır?
- Scaffold
- Text
- CircularProgressIndicator Doğru cevap
- AppBar
Açıklama: ConnectionState.waiting durumunda CircularProgressIndicator gibi bir yükleniyor göstergesi gösterilir.
2 Yükleniyor göstergesini ekle
if (snapshot.connectionState == ConnectionState.waiting) {
return ____();
}
if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator();
}
Açıklama: ConnectionState.waiting iken CircularProgressIndicator döndürülür; bu, yükleniyor durumunu görselleştirir.
3 loading ve error parçaları
| Kavram | Anlamı |
|---|---|
ConnectionState.waiting |
Yükleniyor aşaması |
hasError |
Future hata fırlattığında true |
CircularProgressIndicator |
Yükleniyor göstergesi |
snapshot.error |
Fırlatılan hata |