El paquete dio
es una biblioteca poderosa en Flutter para realizar solicitudes HTTP de manera sencilla y eficiente. Ofrece características avanzadas como interceptores, manejo de errores, tiempo de espera, cancelación de solicitudes, y soporte para múltiples tipos de respuesta.
dio
y por qué usarlo?
dio
es una herramienta flexible y moderna para interactuar con APIs REST en Flutter. Facilita la comunicación con servidores remotos, permitiendo realizar operaciones como enviar datos, recibir respuestas y manejar errores de red.
dio
:
dio
en Flutter
1. Añadir la dependencia al proyecto:
En el archivo pubspec.yaml
, incluye:
dependencies:
dio: ^5.0.0
2. Importar el paquete:
En tu archivo Dart:
import 'package:dio/dio.dart';
3. Inicializar una instancia de Dio:
Crea un objeto Dio
para realizar las solicitudes:
Dio dio = Dio();
dio
Método | Descripción | Ejemplo de uso |
---|---|---|
get
|
Realiza una solicitud GET. |
dio.get('https://api.example.com/users');
|
post
|
Realiza una solicitud POST. |
dio.post('https://api.example.com/login', data: {...});
|
put
|
Realiza una solicitud PUT. |
dio.put('https://api.example.com/users/1', data: {...});
|
delete
|
Realiza una solicitud DELETE. |
dio.delete('https://api.example.com/users/1');
|
download
|
Descarga un archivo. |
dio.download(url, savePath);
|
void obtenerUsuarios() async {
try {
Response response = await dio.get('https://jsonplaceholder.typicode.com/users');
print(response.data);
} catch (e) {
print('Error: $e');
}
}
void enviarDatos() async {
try {
Response response = await dio.post(
'https://jsonplaceholder.typicode.com/posts',
data: {
'title': 'Flutter',
'body': 'Esto es un ejemplo',
'userId': 1,
},
);
print(response.data);
} catch (e) {
print('Error: $e');
}
}
void subirArchivo() async {
FormData formData = FormData.fromMap({
'file': await MultipartFile.fromFile('./archivo.jpg', filename: 'archivo.jpg'),
});
try {
Response response = await dio.post(
'https://api.example.com/upload',
data: formData,
);
print(response.data);
} catch (e) {
print('Error: $e');
}
}
void configurarInterceptors() {
dio.interceptors.add(
InterceptorsWrapper(
onRequest: (options, handler) {
print('Solicitud: ${options.uri}');
return handler.next(options);
},
onResponse: (response, handler) {
print('Respuesta: ${response.statusCode}');
return handler.next(response);
},
onError: (DioError e, handler) {
print('Error: ${e.message}');
return handler.next(e);
},
),
);
}
Jorge García
Fullstack developer