Yüklenirken Dönen Simge
Coddy'nin Flutter Journey'sinin Veri ve Ağ bölümünün bir parçası. Ders 5 / 27.
Hareket etmeyen bir ekrana iki saniye boyunca bakmak uzun bir süredir. Dönen bir daire, uygulamanın çalıştığını kullanıcıya bildirir. Flutter'da bu, CircularProgressIndicator bileşenidir.
const CircularProgressIndicator()Çalışması için hiçbir şeye ihtiyacı yoktur: ekrana koy, dönmeye başlar. Görevi, yalnızca veriler yüklenirken görünmesini sağlamaktır. Durumundaki bir bool bunu yapar:
bool loading = false;
// await öncesinde: loading = true
// await sonrasında: loading = false
loading ? const CircularProgressIndicator() : Text(message)await etmeden önce bir setState içinde loading değerini true olarak ayarla; yanıtı gösteren setState içinde de yeniden false yap.
Görev
KolayLoading... metnini bir döndürücüyle değiştir:
- duruma
bool loading = false;ekle fetchişleminden öncetrue, mesaj geldiğinde tekrarfalseolarak ayarlaloadingdeğeri true iken mesajın yerine birCircularProgressIndicatorgöster
Kendin dene
import 'package:flutter/material.dart';
import 'api.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
debugShowCheckedModeBanner: false,
home: MessageScreen(),
);
}
}
class MessageScreen extends StatefulWidget {
const MessageScreen({super.key});
@override
State<MessageScreen> createState() => _MessageScreenState();
}
class _MessageScreenState extends State<MessageScreen> {
String message = 'No message yet';
Future<void> loadMessage() async {
setState(() {
message = 'Loading...';
});
final text = await fetch('/message');
setState(() {
message = text;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(message, style: const TextStyle(fontSize: 24)),
const SizedBox(height: 24),
ElevatedButton(onPressed: loadMessage, child: const Text('Load message')),
],
),
),
);
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Veri ve Ağ bölümündeki tüm dersler
2Yükleme Ekranları
Yüklenirken Dönen SimgeFutureBuilder ile TanışıninitState içinde Bir Kez Veri GetirmeBir Düğmeyle Verileri Yeniden YüklemeYenilemek için Aşağı Çekme3Çağrılar Başarısız Olduğunda
try ile Hataları YakalamaHata Fırlatmafinally ile TemizlemeFutureBuilder Hata DurumuYeniden Dene DüğmesiKendi başına pratik yap: Online Flutter derleyicisi