1
resposta

Minha solução livro de receitas

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

Future<void> main() async {
  await fetchRecipes();
}

Future<void> fetchRecipes() async {
  String url = "https://gist.githubusercontent.com/pssmaia51/a176bd7ce9dec36f42be7e141d2f24d2/raw/526b68162611275eddaad46b5f1f42b4559b9ea4/recipes.json";
  Uri uri = Uri.parse(url);

  try {
    var response = await http.get(uri);

    if (response.statusCode == 200) {
      print("Dados recebidos com sucesso!\n");

      var data = jsonDecode(response.body);

      // Aqui o JSON é uma lista, então fazemos o cast direto:
      if (data is List) {
        for (var recipe in data) {
          print("Receita: ${recipe["nome"]}");
          print("Ingredientes:");

          if (recipe["ingredientes"] != null) {
            for (var ingredient in recipe["ingredientes"]) {
              print(" - $ingredient");
            }
          }

          print("\nModo de preparo:");
          print("${recipe["preparação"]}\n");
          print("**************************************************************************************************************************\n");
        }
      } else {
        print("Estrutura inesperada no JSON.");
      }
    } else {
      print("Erro: código de status ${response.statusCode}");
    }
  } catch (e) {
    print("Ocorreu um erro: $e");
  }
}
1 resposta

Olá, Paulo, como vai?

Seu código está muito bem estruturado e cumpre perfeitamente os requisitos do exercício. A função fetchRecipes faz a requisição HTTP corretamente, trata o retorno de forma assíncrona e ainda realiza o parsing do JSON com clareza. Também foi uma boa prática incluir o tratamento de exceções com try/catch, o que torna o código mais robusto em caso de falhas na conexão ou problemas na URL.

Parabéns pelo trabalho. Continue compartilhando suas soluções no fórum, ele está à disposição sempre que precisar.

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