1
resposta

[Dúvida] Curso : Dart: Dominando Assincronismo e Criando Comunicação com APIs - Aula 1 : Entendendo Pacotes e Requisições - Atividade 10 - Manipulação de Respostas Assincronas

Analisando as questões :

A )

dart
get(Uri.parse("meu_incrivel_servidor")).then((response) {
  print(response.body);
});

Explicação:
O método get retorna um **Future`.
Se você simplesmente fizer print(response), verá apenas a instância do Future, não o resultado.
Para acessar o valor quando o Future for concluído, você precisa usar:

.then(...) → encadeando uma função de callback que será executada quando a resposta chegar.
ou await → mas isso só pode ser usado dentro de uma função marcada como async.

B )

dart
var response = get(...).then((data) { return data.body; });
print(response);

Aqui response ainda é um Future, então o print mostrará Instance of 'Future'.

C )

dart
var response = get(...);
print(response);

Mesmo problema: imprime apenas o Future.

D )

dart
var response = await get(...);
print(response);

Só funcionaria dentro de uma função async. Como está escrito, geraria erro de compilação.


A forma correta de capturar e exibir os dados esta na alternativa A, correto ?

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

Olá, estudante, como vai?

Sua análise está muito bem elaborada. Realmente, entre as alternativas apresentadas, a opção A é a correta, pois utiliza o método then() para tratar a resposta assíncrona retornada por get(). Esse método permite que o código aguarde a conclusão da requisição antes de acessar o conteúdo de response.body, evitando que o print exiba apenas a instância do Future.

Seu raciocínio está muito coerente, parabéns pela clareza na explicação e continue compartilhando suas análises aqui no fórum, ele está à disposição para você.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!