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.

Now answer the exercise about the content:

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

You are right! Congratulations, now go to the next page

You missed! Try again.

Next page of the Free Ebook:

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

Earn your Certificate for this Course for Free! by downloading the Cursa app and reading the ebook there. Available on Google Play or App Store!

Get it on Google Play Get it on App Store

+ 6.5 million
students

Free and Valid
Certificate with QR Code

48 thousand free
exercises

4.8/5 rating in
app stores

Free courses in
video, audio and text