Contenido del curso
Widgets en Flutter
Manejo de Recursos y Formularios
Navegación y APIs
Gestión de Estados
- 15

ListView.builder con FutureBuilder en Flutter
08:49 min - 16

Estados de carga y errores en Flutter
07:03 min - 17

Creación de modelos de datos en Flutter con Dart
09:43 min - 18

Uso de Provider para Gestión de Estado en Flutter
14:06 min - 19

"Gestión de Favoritos en Aplicaciones con Stateful Widgets"
30:46 min - 20

Detalles de Recetas en Flutter: Implementación y Visualización
05:08 min
Experiencia de Usuario
Publicación de Apps
Petición GET a una API en Flutter
Resumen
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].
- Abre tu archivo
pubspec.yaml. - Dentro de
dependencies, agregahttpcon la versión que quieras instalar (la última en este caso). - Corre el comando
flutter pub getpara 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.parsetoma 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.
- Enciende tu servidor desde la aplicación de Mocoon en la parte superior.
- Llama a
fetchRecipescada vez que se construya la pantalla, para forzar la petición. - Despliega la app en Google Chrome y abre la pestaña Inspect > Network.
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.