O que flutter-handling-http-and-json faz?
Executa requisições HTTP e lida com serialização JSON em um aplicativo Flutter. Use ao integrar com APIs REST ou analisar dados estruturados de fontes externas.
Visão Geral
Esta skill fornece as melhores práticas para realizar requisições HTTP e processar JSON em Flutter. Ela cobre:
- Utilização do pacote
httppara requisições HTTP. - Desserialização de JSON para objetos Dart.
- Serialização de objetos Dart para JSON.
- Tratamento de erros e códigos de status HTTP.
- Gerenciamento de requisições assíncronas.
Pré-requisitos
- Pacote
httpadicionado ao arquivopubspec.yaml - Conhecimento básico de async/await em Dart
Utilização
Importações
import 'dart:convert';
import 'package:http/http.dart' as http;
Realizando uma Requisição GET
Future<Map<String, dynamic>> fetchData(String url) async {
final response = await http.get(Uri.parse(url));
if (response.statusCode == 200) {
return jsonDecode(response.body);
} else {
throw Exception('Falha ao carregar dados: ${response.statusCode}');
}
}
Realizando uma Requisição POST
Future<Map<String, dynamic>> postData(String url, Map<String, dynamic> data) async {
final response = await http.post(
Uri.parse(url),
headers: {'Content-Type': 'application/json'},
body: jsonEncode(data),
);
if (response.statusCode == 200 || response.statusCode == 201) {
return jsonDecode(response.body);
} else {
throw Exception('Falha ao enviar dados: ${response.statusCode}');
}
}
Criando Modelos para Dados JSON
class Usuario {
final int id;
final String nome;
final String email;
Usuario({required this.id, required this.nome, required this.email});
factory Usuario.fromJson(Map<String, dynamic> json) {
return Usuario(
id: json['id'],
nome: json['nome'],
email: json['email'],
);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'nome': nome,
'email': email,
};
}
}
Tratamento de Erros
Sempre envolva as requisições de rede em blocos try-catch para lidar com possíveis exceções:
try {
final dados = await fetchData('https://api.exemplo.com/dados');
print(dados);
} catch (e) {
print('Erro: $e');
}
Considerações Finais
- Sempre valide a resposta HTTP antes de processar o JSON.
- Use
jsonDecodeejsonEncodepara conversão de JSON. - Crie classes de modelo para representar dados estruturados.
- Gerencie requisições assíncronas com async/await para evitar bloquear a interface do usuário.