Dio es una biblioteca HTTP poderosa y flexible para Dart y Flutter. Proporciona una API fácil de usar para realizar solicitudes HTTP y manejar respuestas, similar a otras bibliotecas HTTP como axios en JavaScript. Dio es particularmente popular en la comunidad Flutter debido a sus características avanzadas, como la configuración de solicitudes, manejo de respuestas, interceptores, y soporte para cancelación de solicitudes, entre otras.

Añadir la Dependencia Dio
flutter pub add dio
Paso 3: Configurar y Usar Dio
Vamos a crear un archivo Dart para manejar las solicitudes HTTP usando Dio. Puedes crear una carpeta llamada services y dentro de ella, un archivo api_service.dart.
Estructura del Proyecto
my_project/ ├── lib/ │ ├── main.dart │ ├── services/ │ │ └── api_service.dart └── pubspec.yaml
Código en api_service.dart
import 'package:dio/dio.dart';
class ApiService {
final Dio _dio = Dio(
BaseOptions(
baseUrl: 'https://jsonplaceholder.typicode.com',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
},
),
);
ApiService() {
_dio.interceptors.add(InterceptorsWrapper(
onRequest: (options, handler) {
print('Request to: ${options.uri}');
return handler.next(options);
},
onResponse: (response, handler) {
print('Response from: ${response.requestOptions.uri}');
return handler.next(response);
},
onError: (DioError e, handler) {
print('Error: ${e.message}');
return handler.next(e);
},
));
}
Future<Response> getPost(int id) async {
return await _dio.get('/posts/$id');
}
Future<Response> createPost(Map<String, dynamic> data) async {
return await _dio.post('/posts', data: data);
}
}
Paso 4: Usar ApiService en tu Aplicación Flutter
Abre el archivo main.dart y usa el servicio API para realizar una solicitud.
Código en main.dart
import 'package:flutter/material.dart';
import 'services/api_service.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
final ApiService apiService = ApiService();
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Dio Example'),
),
body: FutureBuilder(
future: apiService.getPost(1),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(child: CircularProgressIndicator());
} else if (snapshot.hasError) {
return Center(child: Text('Error: ${snapshot.error}'));
} else {
final response = snapshot.data as Response;
return Center(child: Text(response.data.toString()));
}
},
),
),
);
}
}
Explicación de los Pasos
- Añadir Dependencia: Se añade
dioal archivopubspec.yamly se instala la dependencia. - Configurar
Dio: Se crea la claseApiServicepara configurarDioy añadir interceptores. Los interceptores permiten manejar las solicitudes, respuestas y errores de manera centralizada. - Realizar Solicitudes HTTP: Se definen métodos en
ApiServicepara realizar solicitudes HTTP, como obtener un post y crear un post. - Usar
ApiServiceen la Aplicación: Enmain.dart, se utilizaFutureBuilderpara realizar una solicitud HTTP y mostrar el resultado en la interfaz de usuario.

Ingeniero en Informática, Investigador, 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.