1
resposta

Minha solução Capturar pacote

import 'package:http/http.dart';
import 'dart:convert';

void main() {
  requestData();
}

void requestData() {
  String url =
      "https://gist.githubusercontent.com/pssmaia51/02a235e4e9fc752050c70e0eaaf565a0/raw/f91efb94dbf485e743641b9d865b797742fa5d48/accounts.json";

  Future<Response> futureResponse = get(Uri.parse(url));

  // Exibe o futuro (ainda não resolvido)
  print("Requisição enviada... aguardando resposta...\n");

  // Quando o futuro for concluído, processamos os dados
  futureResponse.then((Response response) {
    print("Resposta recebida!\n");
    print("Código HTTP: ${response.statusCode}\n");

    if (response.statusCode == 200) {
      // Decodifica o JSON
      List<dynamic> listAccounts = jsonDecode(response.body);

      // Procura pela conta de Ricarth
      Map<String, dynamic> mapRicarth =
          listAccounts.firstWhere((element) => element["name"] == "Ricarth");

      // Exibe saldo da Carla
      print("Conta encontrada!");
      print("Nome: ${mapRicarth["name"]}");
      print("Sobrenome: ${mapRicarth["lastName"]}");
      print("Saldo: R\$ ${mapRicarth["balance"]}");
    } else {
      print("Erro na requisição. Código: ${response.statusCode}");
    }
  }).catchError((error) {
    print("Ocorreu um erro: $error");
  });
}

converti response.body em JSON e listei o cliente de forma mais estruturada para melhor visualização

1 resposta

Olá, Paulo, como vai?

Seu código está muito bem organizado e demonstra um bom entendimento sobre requisições assíncronas em Dart. O uso do Future<Response> com o encadeamento de then e catchError está correto, e a estrutura para decodificar o JSON e filtrar o resultado também está adequada para o propósito.

Continue compartilhando seus códigos no fórum. Estamos à disposição para acompanhar sua evolução e trocar ideias.

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