Exemplo de Requisição http com pacote DIO
- #Flutter
Instalação do Pacote Dio:
Certifique-se de adicionar o pacote Dio ao seu arquivo pubspec.yaml
e execute flutter pub get
para instalá-lo. Você pode adicionar o Dio da seguinte forma:
yaml
Copy code
dependencies: dio: ^4.0.0
Importando Dio:
No arquivo Dart onde você deseja usar o Dio, importe-o da seguinte maneira:
dart
Copy code
import 'package:dio/dio.dart';
Configuração do Dio:
Antes de usar o Dio, você precisa configurá-lo com a base URL do seu servidor ou API. Por exemplo:
dart
Copy code
Dio dio = Dio(BaseOptions(baseUrl: 'https://sua-api.com'));
Operação de Leitura (Read):
dart
Copy code
import 'package:dio/dio.dart';
// Configurar o Dio com a base URL da API
Dio dio = Dio(BaseOptions(baseUrl: 'https://sua-api.com'));
// Método para buscar todas as tarefas
Future<List<Task>> fetchTasks() async {
try {
final response = await dio.get('/tasks');
if (response.statusCode == 200) {
final List<dynamic> data = response.data;
List<Task> tasks = data.map((json) => Task.fromJson(json)).toList();
return tasks; } else { throw Exception('Erro na solicitação GET')
}
}
catch (e) { throw Exception('Erro de rede: $e');
}
}
Operação de Criação (Create):
dart
Copy code
// Método para criar uma nova tarefa
Future<Task> createTask(Task newTask) async {
try {
final response = await dio.post('/tasks', data: newTask.toJson());
if (response.statusCode == 201) {
return Task.fromJson(response.data);
} else {
throw Exception('Erro na solicitação POST');
}
} catch (e) {
throw Exception('Erro de rede: $e');
}
}
Operação de Atualização (Update):
dart
Copy code
// Método para atualizar uma tarefa existente
Future<Task> updateTask(Task updatedTask) async {
try {
final response = await dio.put('/tasks/${updatedTask.id}',
data: updatedTask.toJson()); if (response.statusCode == 200) {
return Task.fromJson(response.data);
} else {
throw Exception('Erro na solicitação PUT');
}
} catch (e) {
throw Exception('Erro de rede: $e');
}
}
Operação de Exclusão (Delete):
dart
Copy code
// Método para excluir uma tarefa
Future<void> deleteTask(int taskId) async {
try {
final response = await dio.delete('/tasks/$taskId');
if (response.statusCode == 204) {
// Recurso excluído com sucesso, não há dados para retornar
} else {
throw Exception('Erro na solicitação DELETE');
}
}
catch (e) {
throw Exception('Erro de rede: $e');
}
}
Espero que Esse conteúdo ajude vocês de alguma forma.