search_cep 套件透過簡化與 via_cep API 的通訊,快速取得巴西郵遞區號(CEP)及其對應位置的詳細資訊。它提供一個易於使用的介面,可取得街道、鄰里、城市及州等資料,非常適合需要在巴西進行地理定位或地址驗證的應用程式。此套件支援 Android、iOS、Web、macOS、Windows 及 Linux 等多個平台,確保在 Flutter 專案中具備廣泛的相容性。
適用情境
按郵遞區號查詢地址
巴西地理定位整合
使用 CEP 數據進行表單驗證
自動填入位址
即時位置資料取得
主要特色
簡單的 API 結合
支援所有主要平台
快速回應時間
完整的 CEP 詳細資訊
無效 CEP 的錯誤處理
適合對象
針對巴西的 Flutter 應用
需要地址自動補全的應用
基於位置的服務
電商平台
政府或物流系統
使用建議
需要互聯網連接
依賴外部 via_cep API
可能套用速率限制
資料準確性依賴於第三方來源
不包含離線快取
原始 README
以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。
Pacote criado para ser uma abstração e facilitar o uso da API via_cep ou da API Postmon. Ambas APIs fornecem pesquisa de localidade por CEP. Pelos testes que fiz a API do Postmon retorna dados mais atualizados,
já a API via_cep retorna dados mais completos. O pacote foi criado de maneira que o usuário tem a possibilidade de escolher
quais das duas opções de API achar melhor.
O pacote fornece uma classe para cada API com um métodos estático para fazer a busca de um CEP, onde o usuário manda uma String com o CEP e recebe várias informações daquele CEP.
A API via_cep fornece uma consulta adicional de pesquisa por localidades
onde o usuário passa uma UF, uma cidade e um logradouro e a API retorna uma lista de CEP's dentro daquela área. Neste último caso
o resultado será ordenado pela proximidade do nome do logradouro e possui limite máximo de 50 (cinquenta) CEPs.
Desta forma, quanto mais específico os parâmentros de entrada maior será a precisão do resultado.
💪 Totalmente testado
📝 Bem documentado
💼 Pronto para produção
⛏️Como Usar
via_cep
O exemplo básico de uso consiste em passar uma String sem formatação com o CEP e o pacote vai retornar um objeto
intitulado ViaCepInfo com as informações retornadas pela API.
voidmain() async {
final viaCepSearchCep = ViaCepSearchCep();
final infoCepJSON = await viaCepSearchCep.searchInfoByCep(cep: '01001000');
print(infoCepJSON);
}
O print do exemplo acima vai ser um objeto no formato indicado abaixo:
ViaCepInfo{cep: 01001-000, logradouro: Praça da Sé, complemento: lado ímpar, bairro: Sé, localidade: São Paulo, uf: SP, unidade: , ibge: 3550308, gia: 1004hasError: false}
Um exemplo que pode acontecer é o cep passado pelo usuário ser uma String válida mas pode ser que ele não exista, como
no exemplo abaixo:
voidmain() async {
final viaCepSearchCep = ViaCepSearchCep();
final infoCepJSON = await viaCepSearchCep.searchInfoByCep(cep: '99999999');
print(infoCepJSON);
}
Neste caso o objeto ViaCepInfo vai vir com todos os campos de valores nulos e um objeto [ViaCepSearchCepError] populado
indicando qual erro ocorreu e com um enum de tipo de erro ocorrido. Além disso o campo hasError do mesmo objeto virá com o
valor true, indicando que algum erro ocorreu.
ViaCepInfo{cep: null, logradouro: null, complemento: null, bairro: null, localidade: null, uf: null, unidade: null, ibge: null, gia: null, SearchCepError{errorMessage: CEP com formato válido, porém inexistente na base de dados, errorType: ErrorType.nonExistentCep} , hasError: true}
No caso da String com cep passada não ser válida o objeto ViaCepInfoCep retornado vai ser equivalente a esse:
O exemplo básico de uso consiste em passar uma String sem formatação com o CEP e o pacote vai retornar um objeto
intitulado PostmonCepInfo com as informações retornadas pela API.
voidmain() async {
final postmonSearchCep = PostmonSearchCep();
final infoCepJSON = await postmonSearchCep.searchInfoByCep(cep: '01001000');
print(infoCepJSON);
}
O print do exemplo acima vai ser um objeto no formato indicado abaixo:
PostmonCepInfo{bairro: Sé, cidade: São Paulo, logradouro: Praça da Sé, estadoInfo: EstadoInfo{areaKm2: 248.221,996, codigoIbge: 35, nome: São Paulo}, cep: 01001000, cidadeInfo: CidadeInfo{areaKm2: 1521,11, codigoIbge: 3550308}, estado: SP, hasError: false, postmonSearchCepError: null}
Um exemplo que pode acontecer é o cep passado pelo usuário ser uma String válida mas pode ser que ele não exista, como
no exemplo abaixo:
voidmain() async {
final postmonSearchCep = PostmonSearchCep();
final infoCepJSON = await postmonSearchCep.searchInfoByCep(cep: '99999999');
print(infoCepJSON);
}
Neste caso o objeto PostmonCepInfo vai vir com todos os campos de valores nulos e um objeto [PostmonSearchCepError] populado
indicando qual erro ocorreu Além disso o campo hasError do mesmo objeto virá com o valor true, indicando que algum erro ocorreu.
Para mais informações sobre a API e para ajudar a mantê-la atualizada via_cep.
API Postmon
Para mais informações sobre a API e para ajudar a mantê-la atualizada Postmon.
Breaking Changes
1.0.4 - 2.0.0: A versão 2.0.0 passa a separar os métodos para permitir compatibilidade com a API do Postmon. Ficando a cargo do usuário escolher qual API utilizar.
2.0.0 - 3.0.0: A versão 3 do pacote retira os métodos estáticos e os torna métodos de instâncias. Essa mudança visa tornar o código mais testável e mais estável.
Todo
[x] Criar testes
[x] Tornar o código mais testável
[x] Adicionar uma abordagem mais funcional com o dartz
Sugestões, Melhorias e Bugs
Para sugerir melhorias ou para apontar algum bug issue tracker.