Carlos Orjuela
Integrando el API:
Diego Armando Tejedor Cortes
epaa luse de lujo
Conectar tu app de Flutter a una API es uno de esos pasos que separan un prototipo de un producto real. Aquí aprendes cómo consumir una API en Flutter usando la librería HTTP, hacer una petición GET y transformar la respuesta JSON en datos listos para mostrar en pantalla, ideal si estás construyendo tu primera app con datos dinámicos.
¿Qué es una API y por qué la necesitas en Flutter?
Una API es una interfaz que permite que dos aplicaciones se comuniquen entre sí. En el caso de Flutter, te sirve para traer datos desde un servidor (real o simulado) y mostrarlos dentro de tu app, sin tener que escribir esa información a mano.
¿Qué hace la librería HTTP en Flutter? Te permite hacer peticiones como GET, POST, PUT o DELETE a una API y recibir su respuesta. Es el puente entre tu app y los datos.
En este flujo vas a usar un simulador llamado Mocoon que expone un endpoint local con un listado de recetas. La idea es pedirle esos datos y convertirlos en una lista que Flutter pueda leer.
¿Cómo instalar la librería HTTP en tu proyecto Flutter?
La instalación es directa y se hace desde el archivo de dependencias del proyecto [0:18].
pubspec.yaml.dependencies, agrega http con la versión que quieras instalar (la última en este caso).flutter pub get para instalar y actualizar todas las dependencias.Ese comando asegura que el paquete quede listo para importarse. Y aquí viene el detalle clave: cuando importes la librería en tu archivo, vas a usar un alias para no chocar con otras funciones del proyecto.
dart import 'package:http/http.dart' as http;
Ese as http es el apodo de la importación. Así, cada vez que llames a http.get, Flutter sabe exactamente de dónde viene esa función.
¿Cómo hacer una petición GET y convertir la respuesta a JSON?
El objetivo es traer un listado de recetas desde tu simulador local. Para eso necesitas una función asíncrona que espere la respuesta del servidor antes de continuar [1:05].
Construir la función fetchRecipes paso a paso
La función devuelve un Future<List> porque la respuesta no llega de inmediato y porque esperas una lista de elementos.
dart Future<List> fetchRecipes() async { final url = Uri.parse('http://localhost:PUERTO/recipes'); final response = await http.get(url); final data = json.decode(response.body); return data['recetas']; }
Fíjate en lo que pasa línea por línea:
Uri.parse toma el string de tu URL y lo convierte en un objeto Uri válido para la petición.await http.get(url) pausa la función hasta que el servidor responda.json.decode(response.body) convierte el body de la respuesta (que llega como texto) en una estructura de Dart que puedes recorrer.data['recetas'] accede al objeto principal del JSON, porque dentro de él viven los objetos individuales de cada receta.¿Por qué usar await en una función asíncrona? Porque las peticiones HTTP tardan.
awaitle dice a Dart que espere la respuesta antes de seguir ejecutando el resto del código.
Acceder al body y navegar el JSON
Un punto que suele confundir: la respuesta de una API trae varias partes (status, headers, body), pero los datos que te interesan están en response.body. Ese body llega como string, y por eso necesitas json.decode para transformarlo en algo manipulable.
En este caso, el JSON tiene un objeto gigante llamado recetas que contiene los objetos pequeños de cada receta. Por eso el return apunta a data['recetas'] y no a data completo.
¿Cómo verificar que tu API está respondiendo correctamente?
Antes de pintar nada en pantalla, conviene confirmar que los datos llegan bien. Hay dos pasos prácticos para hacerlo.
fetchRecipes cada vez que se construya la pantalla, para forzar la petición.Dentro de Network puedes filtrar las llamadas por fetch y vas a ver una entrada llamada recetas. Si haces clic en ella y entras a la pestaña de respuesta, ahí están todos los datos que tu app está recibiendo [4:30].
Ese es el momento de la verdad: si ves el JSON completo, tu integración está funcionando y solo te queda decidir cómo mostrar esa información al usuario.
Tipado de respuestas y siguientes pasos
Por ahora la función devuelve una List dinámica, lo que significa que Dart no sabe qué tipo de objetos viven dentro. Funciona, pero pierdes autocompletado y validaciones.
El siguiente paso natural es tipar esa respuesta creando una clase modelo (por ejemplo, Recipe) que represente cada objeto del JSON. Eso te va a dar seguridad de tipos, mejor mantenimiento y código mucho más legible cuando crezca el proyecto.
Ahora te toca a ti: crea tu propio JSON, levántalo en Mocoon o en el simulador que prefieras, y cuéntame en los comentarios cómo se ve tu respuesta en consola.
Imagina que construir una aplicación con Flutter es como cocinar un platillo en una cocina moderna. La cocina representa tu entorno de desarrollo, donde tienes todos los ingredientes (widgets) a tu disposición. Conectarte a una API es como abrir la nevera para obtener ingredientes adicionales. Cuando llamas a la API (haces un "get"), estás pidiendo esos ingredientes específicos. Al recibir la respuesta, es como si sacaras los ingredientes de la nevera y los mezclas en tu receta. Finalmente, al construir y presentar tu platillo, tus usuarios disfrutan de la comida (la app).
Carlos Orjuela
Integrando el API:
Diego Armando Tejedor Cortes
epaa luse de lujo
Constanza Josefa Carrasco Escalona
Estoy muy contenta con el resultado, tuve unos errores como este: Y en el DefaultTabController tienes length: 4, pero solo hay 1 tab y 1 widget en el TabBarView.
Solución:
Cambia el length del DefaultTabController a 1 para que coincida con la cantidad de tabs y widgets.
Estoy usando copilot AI para arreglar cosas así
Diego Martínez
Para agregar paquetes al pubspec.yaml, en especial http, el cual hacer referencia la maestra, ejecutar el siguiente comando:
flutter pub add http
Con eso ya hace referencia a la última versión o, si es de su necesidad, agregar la versión que requieran.
Yonatan Alesander Ordoñez Diego
Saludos: Para que lo veas en consola utilice el print():
Future<List<dynamic>> fetchRecipes() async {
final url = Uri.parse(
'https://static.platzi.com/media/public/uploads/recipes_5c04ed3a-72d2-497a-afb8-2d49c297101a.json',
);
final response = await http.get(url);
final data = jsonDecode(response.body);
print(data['recipes']);
return data['recipes'];
}
Constanza Josefa Carrasco Escalona
Para verificar las versiones actualizadas de la dependencia http en Dart, puedes visitar el sitio oficial de pub.dev donde encontrarás la información más reciente sobre la biblioteca, incluyendo todas las versiones disponibles, desglose de cambios y documentación.
Otra opción es utilizar la línea de comandos de Dart. Simplemente ejecuta dart pub outdated en tu proyecto para ver las dependencias y sus versiones actuales en comparación con las disponibles.
Mantente al tanto de las actualizaciones para asegurar que tu aplicación esté usando las versiones más eficientes y seguras.
Constanza Josefa Carrasco Escalona
El comando flutter pub get no agrega dependencias automáticamente desde cero. Debes primero especificar las dependencias que quieres usar en tu archivo pubspec.yaml, incluyendo http: ... si planeas usar la biblioteca HTTP. Este comando se encarga de instalar y actualizar las dependencias que ya has declarado en ese archivo. Asegúrate de tener tu archivo configurado correctamente antes de ejecutar el comando.
Angelina Jiménez
JUAN MONCADA
in mockoon: localhost:3002/recipes in flutter: http://localhost:3002/recipes/recipes
that way is how mockoon handle the endpont url.
your welcome