API e rede
Chamar um servidor sem congelar a interface nem ignorar as falhas
API e rede
Até aqui, todos os nossos dados estavam escritos no código. Um aplicativo real consulta um servidor, e essa simples mudança traz uma dificuldade de outra natureza: a rede é lenta e falível. Uma requisição leva de trinta milissegundos a trinta segundos. Ela pode falhar porque o celular está em um túnel, porque o servidor está reiniciando, porque o certificado expirou ou porque o usuário fechou a tela nesse meio-tempo.
A interface do Flutter é executada em uma única thread. Tudo o que bloqueia essa thread bloqueia a exibição: sem animação, sem rolagem, sem reação ao toque. Após alguns segundos, o sistema operacional propõe encerrar o aplicativo. Isso significa que uma chamada de rede nunca pode ser síncrona e que o código precisa tratar explicitamente três estados em vez de um só: carregamento, sucesso, falha. O terceiro é o que se esquece, e é o que rende avaliações ruins nas lojas de aplicativos.
Esta lição monta uma camada de rede completa e honesta: um modelo de dados serializável, um serviço isolado, a conversão dos erros em mensagens compreensíveis e a exibição dos três estados. Começaremos de propósito pela versão que congela o aplicativo, porque entender por que ela congela vale mais do que recitar async.
Comentários
Os comentários são alimentados pelo GitHub Discussions
Conecte-se com o GitHub para participar da discussão