AsyncSnapshot
- Flutter kursu
- Orta seviye
- Ders 22/99
- 4 dk
AsyncSnapshot bağlantı durumlarını öğrenirsin.
AsyncSnapshot
AsyncSnapshot, Future'ın o anki durumunu taşır. ConnectionState ile bağlantı aşamasını, data ile sonucu, error ile hatayı verir.
snapshot.connectionState
snapshot.data
snapshot.errorbuilder içinde bu bilgilere göre farklı widget'lar gösterilir.
ConnectionState değerleri
ConnectionState dört değer alır: none (henüz başlamadı), waiting (bekliyor), active (stream aktif), done (tamamlandı). FutureBuilder için en sık kullanılanlar waiting ve done'dur.
if (snapshot.connectionState == ConnectionState.done) {
return Text(snapshot.data!);
}done, sonucun hazır olduğunu belirtir.
Uygulama ConnectionState.done ile sonucu göster
veriGetir async metodu 100 ms bekleyip 'Tamamlandı' döndürsün. FutureBuilder<String> içinde snapshot.connectionState == ConnectionState.done ise sonucu, değilse 'bekle' metnini 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 'Tamamlandı';
}
void main() {
print('başladı');
runApp(MaterialApp(home: Ekrani()));
}
class Ekrani extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
// FutureBuilder ile durum kontrolü yap
child: Text('bekle'),
),
);
}
}Örnek çözüm
import 'package:flutter/material.dart';
Future<String> veriGetir() async {
await Future.delayed(Duration(milliseconds: 100));
return 'Tamamlandı';
}
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.done) {
return Text(snapshot.data!);
}
return Text('bekle');
},
),
),
);
}
}Beklenen çıktı
başladı
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 AsyncSnapshot'ın bağlantı durumunu hangi özellik verir?
- snapshot.error
- snapshot.builder
- snapshot.data
- snapshot.connectionState Doğru cevap
Açıklama: AsyncSnapshot'ın connectionState özelliği bağlantı aşamasını (none, waiting, active, done) verir.
2 ConnectionState kontrolü ekle
if (snapshot.connectionState == ConnectionState.____) {
return Text(snapshot.data!);
}
if (snapshot.connectionState == ConnectionState.done) {
return Text(snapshot.data!);
}
Açıklama: ConnectionState.done, Future tamamlandığında gerçekleşir; bu aşamada snapshot.data sonucu taşır.
3 AsyncSnapshot parçaları
| Kavram | Anlamı |
|---|---|
AsyncSnapshot |
Future'ın o anki durumunu taşır |
ConnectionState |
Bağlantı aşamasını verir |
data |
Future'ın sonucu |
error |
Future fırlatırsa hatası |