Hola, hoy vamos a aprender cómo podemos realizar una llamada POST con Flutter usando Dart.
Con esta llamada podremos realizar llamadas remotas a nuestros recursos del servidor Back usando un api REST.
Utilizaremos el paquete http
para realizar la llamada de red.
Paso 1: Agregar dependencias
En el archivo pubspec.yaml
, asegúrate de tener la siguiente dependencia:
dependencies: http: ^0.13.4
Luego, ejecuta flutter pub get
para descargar la dependencia.
Paso 2: Importar el paquete http
En el archivo donde deseas realizar la llamada a la API, importa el paquete http
(en mi caso he creado una ruta util/network/ y he creado un archivo llamado user.dart, dónde añadiré todas las llamadas que tienen que ver con los usuarios, login, registro etc…):
import 'package:http/http.dart' as http;
Paso 3: Crear la función de llamada a la API
Crea una función que realizará la llamada a la API. En este ejemplo, utilizaremos el método POST para enviar datos al servidor:
Future<void> postData() async { final url = 'https://api.example.com/endpoint'; // Reemplaza con la URL correcta de tu API final body = { 'key1': 'value1', 'key2': 'value2', }; final headers = { 'Content-Type': 'application/json', }; final jsonBody = jsonEncode(body); final response = await http.post(Uri.parse(url), headers: headers, body: jsonBody); if (response.statusCode == 200) { // Lógica cuando la respuesta es exitosa print('Respuesta exitosa: ${response.body}'); } else { // Lógica cuando hay un error en la solicitud print('Error en la solicitud: ${response.statusCode}'); } }
Asegúrate de reemplazar la URL con la dirección correcta de tu API. Además, personaliza el cuerpo de la solicitud según tus necesidades.
Queda así:
import 'package:http/http.dart' as http; //Clase para realizar las peticiones de usuario class UserUtil { Future<void> postData(data1, data2) async { final url = 'https://api.example.com/endpoint'; // Reemplaza con la URL correcta de tu API final body = { 'key1': 'value1', 'key2': 'value2', }; final headers = { 'Content-Type': 'application/json', }; final jsonBody = jsonEncode(body); final response = await http.post(Uri.parse(url), headers: headers, body: jsonBody); return response; } }
Paso 4: Llamar a la función desde tu pantalla (screen)
En tu pantalla donde deseas realizar la llamada a la API, puedes invocar la función postData()
en respuesta a un evento, como presionar un botón:
import 'package:flutter/material.dart'; import 'package:<nombre_nuestro_package_proyecto>/util/network/user.dart'; class MyScreen extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Ejemplo de llamada API'), ), body: Center( child: ElevatedButton( onPressed: () { final response = await UserUtil.postData("value_1", "value_2"); if (response.statusCode == 200) { // Lógica cuando la respuesta es exitosa print('Respuesta exitosa: ${response.body}'); } else { // Lógica cuando hay un error en la solicitud print('Error en la solicitud: ${response.statusCode}'); } }, child: Text('Realizar llamada a la API'), ), ), ); } }
Hemos importado import ‘package:/util/network/user.dart’;
Y luego llamamos a la función dentro de la clase UserUtil: await UserUtil.postData(«value_1», «value_2»);
Y nos llega la respuesta dentro de la variable response.
¡Y eso es todo! Ahora tienes un ejemplo básico de cómo realizar una llamada a una API REST utilizando el método POST en Flutter utilizando el paquete http
. Puedes personalizar y ampliar este código según tus necesidades específicas. Recuerda manejar los errores y las respuestas de manera adecuada para una mejor experiencia de usuario.
Ingeniero en Informática, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.