cep_fetcher 1.0.0
cep_fetcher: ^1.0.0 copied to clipboard
Pacote Dart simples para obter dados de endereço no Brasil a partir de um CEP usando múltiplas APIs.
cep_fetcher #
Funcionalidades #
- Obtém dados de endereço (logradouro, bairro, cidade, estado) a partir de um CEP, utilizando múltiplas APIs:
- Tenta usar a próxima API automaticamente caso uma falhe.
- Cache interno em memória para evitar requisições repetidas para o mesmo CEP durante a execução.
- Tratamento de erros via exceções específicas, com mensagens claras para facilitar o diagnóstico.
Como Usar #
Importe o pacote e chame a função fetchCepData
:
import 'package:cep_fetcher/cep_fetcher.dart';
void getAddress() async {
const inputCep = '01001000';
try {
final result = await fetchCepData(inputCep, timeout: Duration(seconds: 3));
print('✔️ CEP encontrado:');
print(' ${result!.address}, ${result.city} - ${result.state}');
} catch (e) {
print('❌ Erro ao buscar CEP: $e');
}
}
Parâmetros Disponíveis #
A função fetchCepData
aceita os seguintes parâmetros opcionais:
timeout
:Duration
- Define o tempo máximo para cada requisição de API. o intervalo permitido é de 1 a 10 segundos. O valor padrão éDuration(seconds: 3)
.bypassCache
:bool
- Setrue
, ignora o cache interno e força uma nova consulta às APIs mesmo que o CEP já tenha sido resolvido anteriormente. Útil em cenários onde os dados podem ter sido atualizados. O valor padrão éfalse
;
Se necessário, o cache pode ser limpo manualmente utilizando a função clearCepCache()
Modelo de CEP #
class Cep {
final String cep;
final String address;
final String district;
final String city;
final String state;
const Cep({
required this.cep,
required this.address,
required this.district,
required this.city,
required this.state,
});
Map<String, dynamic> toJson() => {
'cep': cep,
'address': address,
'district': district,
'city': city,
'state': state,
};
}
Provedores de API #
Ordem de fallback (tentativas):
- ViaCep (
viacep.com.br
) - AwesomeAPI (
cep.awesomeapi.com.br
) - OpenCEP (
opencep.com
)
Tratamento de Erros #
A função fetchCepData
pode lançar exceções específicas para facilitar o tratamento de erros:
InvalidCepFormatException
– O CEP fornecido não contém 8 dígitos válidos após remoção de formatação.TimeoutOutOfRangeException
– O valor fornecido paratimeout
está fora do intervalo permitido (1 a 10 segundos).CepNotFoundException
– Nenhuma das APIs públicas conseguiu retornar dados para o CEP informado.
Todas essas exceções herdam de CepFetcherException
, permitindo capturas genéricas ou específicas conforme desejado.
Exemplo Completo #
import 'package:cep_fetcher/cep_fetcher.dart';
void main() async {
const inputCep = '01001000';
try {
final result = await fetchCepData(inputCep, timeout: Duration(seconds: 3));
print('✔️ CEP encontrado:');
print(' ${result!.address}, ${result.city} - ${result.state}');
} catch (e) {
print('❌ Erro ao buscar CEP: $e');
}
}
Histórico de versões #
Consulte o CHANGELOG para detalhes sobre as versões anteriores.
Aviso Legal #
Este pacote utiliza APIs públicas de terceiros (ViaCEP, AwesomeAPI e OpenCEP) para obtenção de dados de endereço a partir de um CEP. O desenvolvedor desta biblioteca não tem afiliação com os serviços mencionados, tampouco garante a disponibilidade, exatidão ou continuidade de funcionamento dessas APIs.
O uso deste pacote é de responsabilidade do desenvolvedor que o integra em sua aplicação. Certifique-se de revisar os Termos de Uso de cada provedor de API antes de utilizar este pacote em ambientes de produção.
Licença #
Este projeto está licenciado sob a Licença MIT.
Contato #
Criado por Lucas Vinícius Marques, entre em contato via LinkedIn