Wskaźnik ładowania
Część sekcji Dane i sieć ścieżki Flutter w Coddy. Lekcja 5 z 27.
Dwie sekundy to długo, gdy patrzysz na nieruchomy ekran. Obracające się kółko informuje użytkownika, że aplikacja nad tym pracuje. W Flutterze jest to CircularProgressIndicator.
const CircularProgressIndicator()Nie wymaga niczego, aby działać: umieść je na ekranie, a zacznie się obracać. Jego zadaniem jest wyświetlanie się tylko wtedy, gdy dane są w drodze. Służy do tego bool w Twoim stanie:
bool loading = false;
// przed await: loading = true
// po await: loading = false
loading ? const CircularProgressIndicator() : Text(message)Ustaw loading na true w setState przed użyciem await, a następnie z powrotem na false w setState, które wyświetla odpowiedź.
Wyzwanie
ŁatwyZastąp tekst Loading... wskaźnikiem ładowania:
- dodaj
bool loading = false;do stanu - ustaw go na
trueprzed wywołaniemfetch, a po otrzymaniu wiadomości z powrotem nafalse - gdy
loadingma wartość true, wyświetlCircularProgressIndicatorzamiast wiadomości
Spróbuj swoich sił
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')),
],
),
),
);
}
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Dane i sieć
2Ekrany ładowania
Wskaźnik ładowaniaPoznaj FutureBuilderPobierz raz w initStateWczytaj dane ponownie przyciskiemPociągnij, aby odświeżyć3Gdy wywołania kończą się niepowodzeniem
Przechwytywanie błędów za pomocą tryZgłaszanie błęduSprzątanie za pomocą finallyStan błędu w FutureBuilderPrzycisk „Spróbuj ponownie”Poćwicz samodzielnie: Kompilator Flutter online