Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

Añadir una llamada POST en Flutter (dart)

Tiempo de lectura: 2 minutos

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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
dependencies:
http: ^0.13.4
dependencies: http: ^0.13.4
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…):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import 'package:http/http.dart' as http;
import 'package:http/http.dart' as http;
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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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}');
}
}
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}'); } }
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í:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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;
}
}
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; } }
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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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'),
),
),
);
}
}
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'), ), ), ); } }
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.

3

Deja un comentario