Um indicador giratório durante o carregamento
Parte da seção Dados e rede do Journey de Flutter da Coddy. Lição 5 de 27.
Dois segundos é muito tempo para ficar olhando para uma tela que não se move. Um círculo girando mostra à pessoa que o app está trabalhando nisso. No Flutter, ele é CircularProgressIndicator.
const CircularProgressIndicator()Ele não precisa de nada para funcionar: coloque-o na tela e ele vai girar. A função dele é ser exibido apenas enquanto os dados estão a caminho. Um bool no seu estado faz isso:
bool loading = false;
// antes do await: loading = true
// depois do await: loading = false
loading ? const CircularProgressIndicator() : Text(message)Defina loading como true em um setState antes de usar await e depois volte para false no setState que mostra a resposta.
Desafio
FácilSubstitua o texto Loading... por um indicador de carregamento:
- adicione
bool loading = false;ao estado - defina-o como
trueantes defetche volte a defini-lo comofalsequando a mensagem chegar - enquanto
loadingfortrue, mostre umCircularProgressIndicatorno lugar da mensagem
Experimente você mesmo
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')),
],
),
),
);
}
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Dados e rede
2Telas de carregamento
Um indicador giratório durante o carregamentoConheça o FutureBuilderBusque uma vez no initStateRecarregue os dados com um botãoPuxe para atualizarPratique por conta própria: Compilador de Flutter online