3.10. Conceitos básicos de Dart: Programação assíncrona

Página 28

A programação assíncrona é um conceito fundamental no Dart, especialmente quando se trata de criar aplicativos com Flutter. Antes de mergulhar em detalhes, vamos entender o que é a programação assíncrona e por que é tão importante.

Normalmente, os programas são executados de forma síncrona, o que significa que cada instrução é executada uma após a outra. No entanto, alguns processos podem levar mais tempo para serem concluídos, como solicitações de rede, leitura de arquivos, etc. Durante esse tempo, o programa é forçado a esperar, o que pode levar a uma experiência de usuário ruim, especialmente em aplicativos móveis onde a fluidez e a responsividade são cruciais.

A programação assíncrona resolve esse problema permitindo que o programa continue executando outras tarefas enquanto espera que a operação demorada seja concluída. Isso é feito por meio de 'Future' e 'async / await', dois conceitos-chave na programação assíncrona do Dart.

Future

No Dart, um 'Future' representa um valor potencial ou um erro que estará disponível em algum momento no futuro. É semelhante à 'Promise' em JavaScript. Quando você inicia uma operação assíncrona, ela retorna um 'Future'. Esse 'Future' será 'concluído' quando a operação for concluída ou 'rejeitado' se ocorrer um erro.

Para lidar com o resultado de um 'Future', você pode usar o método 'then()' para especificar o que deve ser feito quando o 'Future' for concluído com sucesso, e o método 'catchError()' para lidar com qualquer erro. Além disso, você pode encadear várias chamadas 'then()' e 'catchError()', pois cada uma delas retorna um novo 'Future'.

Async / Await

Embora 'Future' e seus métodos 'then()' e 'catchError()' sejam poderosos, eles podem levar a um código bastante aninhado e difícil de ler. É aqui que 'async' e 'await' entram em cena.

A palavra-chave 'async' é usada para declarar uma função assíncrona. Dentro de uma função 'async', você pode usar a palavra-chave 'await' antes de uma expressão para pausar a execução da função até que a expressão seja concluída. A expressão geralmente é uma chamada para uma função que retorna um 'Future'.

O uso de 'async' e 'await' resulta em um código mais limpo e fácil de entender, pois permite que você escreva código assíncrono como se fosse síncrono.

Exemplo

Suponha que você tenha uma função 'fetchData()' que retorna um 'Future'. Aqui está como você pode usar 'Future', 'async' e 'await' para lidar com isso:

Future<String> fetchData() {
  // Simula uma operação de rede que leva 2 segundos
  return Future.delayed(Duration(seconds: 2), () => 'Hello, World!');
}

void main() async {
  print('Fetching data...');
  String data = await fetchData();
  print('Data: $data');
}

Quando você executa este código, ele imprime 'Fetching data...', aguarda 2 segundos e então imprime 'Data: Hello, World!'. Durante esses 2 segundos, o programa não fica bloqueado, permitindo que outras tarefas sejam executadas.

Em resumo, a programação assíncrona é um conceito crucial no Dart que permite escrever aplicativos responsivos e fluidos. Ao usar 'Future' e 'async / await', você pode executar operações demoradas, como solicitações de rede, sem bloquear o programa, proporcionando uma melhor experiência ao usuário.

Agora responda o exercício sobre o conteúdo:

O que a programação assíncrona permite em Dart e por que é importante?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Próxima página do Ebook Gratuito:

293.11. Conceitos básicos de Dart: Conceitos básicos de Flutter

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto