search_cep 1.0.4

  • Readme
  • Changelog
  • Example
  • Installing
  • 88

Pacote criado para ser uma abstração e facilitar o uso da API https://viacep.com.br/. A API via_cep é totalmente gratuita e possui alto desempenho, sendo possível consultar diversos Códigos de Endereçamento Postal (CEP) do Brasil. Utilize o serviço a vontade e se possível ajude a mantê-lo atualizado.

O pacote fornece uma classe com métodos estáticos para fazer os dois tipos de pesquisas disponibilizados pela API que são: pesquisa por cep, onde o usuário manda uma String com o CEP e recebe várias informações daquele CEP, ou 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.

Como Usar #

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 CepInfo com as informações retornadas pela API.

void main() async {
  final infoCepJSON = await SearchCep.searchInfoByCep(cep: '01001000');
  print(infoCepJSON);
}

O print do exemplo acima vai ser um objeto no formato indicado abaixo:

CepInfo{cep: 01001-000, logradouro: Praça da Sé, complemento: lado ímpar, bairro: Sé, localidade: São Paulo, uf: SP, unidade: , ibge: 3550308, gia: 1004 hasError: 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:

void main() async {
  final infoCepJSON = await SearchCep.searchInfoByCep(cep: '99999999');
  print(infoCepJSON);
}

Neste caso o objeto CepInfo vai vir com todos os campos de valores nulos e um objeto [SearchCepError] 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.

CepInfo{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 InfoCep retornado vai ser equivalente a esse:

CepInfo{cep: null, logradouro: null, complemento: null, bairro: null, localidade: null, uf: null, unidade: null, ibge: null, gia: null, SearchCepError{errorMessage: CEP com formato inválido, errorType: ErrorType.nonExistentCep} , hasError: true}

Outra forma de pesquisa suportada pela API é a pesquisa por localidades. Um exemplo de pesquisa desta é mostrado abaixo:

void main() async {
  final cepsJSON = await SearchCep.searchForCeps(uf: 'RS', cidade: 'Porto Alegre', logradouro: 'Domingos', returnType: ReturnType.json);
  print(cepsJSON);
}

E o retorno do método vai ser uma lista com vários objetos (no máximo 50) InfoCep.

[CepInfo{cep: 91420-270, logradouro: Rua São Domingos, complemento: , bairro: Bom Jesus, localidade: Porto Alegre, uf: RS, unidade: , ibge: 4314902, gia: , errorMessage: null, error: false}, CepInfo{cep: 91040-000, logradouro: Rua Domingos Rubbo, complemento: , bairro: Cristo Redentor, localidade: Porto Alegre, uf: RS, unidade: , ibge: 4314902, gia: , errorMessage: null, error: false}, CepInfo{cep: 91040-320, logradouro: Rua Domingos Martins, complemento: , bairro: Cristo Redentor, localidade: Porto Alegre, uf: RS, unidade: , ibge: 4314902, gia: , errorMessage: null, error: false}, CepInfo{cep: 91910-450, logradouro: Rua Domingos da Silva, complemento: , bairro: Camaquã, localidade: Porto Alegre, uf: RS, unidade: , ibge: 4314902, gia: , errorMessage: null, error: false}, CepInfo{cep: 91120-090, logradouro: Rua Domingos de Abreu, complemento: , bairro: Sarandi, localidade: Porto Alegre, uf: RS, unidade: , ibge: 4314902, gia: , errorMessage: null, error: false}, CepInfo{cep: 91360-040, logradouro: Rua Domingos Seguézio, complemento: , bairro: Vila Ipiranga, localidade: Porto Alegre, uf: RS, unidade: , ibge: 4314902, gia: , errorMessage: null, error: false}, CepInfo{cep: 91790-072, logradouro: Rua Domingos José Poli, complemento: , bairro: Restinga, localidade: Porto Alegre, uf: RS, unidade: , ibge: 4314902, gia: , errorMessage: null, error: false}, CepInfo{cep: 91160-080, logradouro: Rua Luiz Domingos Ramos, complemento: , bairro: Santa Rosa de Lima, localidade: Porto Alegre, uf: RS, unidade: , ibge: 4314902, gia: , errorMessage: null, error: false}, CepInfo{cep: 90650-090, logradouro: Rua Domingos Crescêncio, complemento: , bairro: Santana, localidade: Porto Alegre, uf: RS, unidade: , ibge: 4314902, gia: , errorMessage: null, error: false}, CepInfo{cep: 91910-420, logradouro: Rua José Domingos Varella, complemento: , bairro: Cavalhada, localidade: Porto Alegre, uf: RS, unidade: , ibge: 4314902, gia: , errorMessage: null, error: false}, CepInfo{cep: 91790-101, logradouro: Rua Domingos Manoel Mincarone, complemento: , bairro: Restinga, localidade: Porto Alegre, uf: RS, unidade: , ibge: 4314902, gia: , errorMessage: null, error: false}, CepInfo{cep: 91120-480, logradouro: Rua Domingos Antônio Santoro, complemento: , bairro: Sarandi, localidade: Porto Alegre, uf: RS, unidade: , ibge: 4314902, gia: , errorMessage: null, error: false}, CepInfo{cep: 91261-304, logradouro: Rua Domingos Mullet Rodrigues, complemento: , bairro: Mário Quintana, localidade: Porto Alegre, uf: RS, unidade: , ibge: 4314902, gia: , errorMessage: null, error: false}, CepInfo{cep: 90420-200, logradouro: Rua Domingos José de Almeida, complemento: , bairro: Rio Branco, localidade: Porto Alegre, uf: RS, unidade: , ibge: 4314902, gia: , errorMessage: null, error: false}, CepInfo{cep: 91540-650, logradouro: Acesso Olavo Domingos de Oliveira, complemento: , bairro: Jardim Carvalho, localidade: Porto Alegre, uf: RS, unidade: , ibge: 4314902, gia: , errorMessage: null, error: false}, CepInfo{cep: 91740-650, logradouro: Praça Domingos Fernandes de Souza, complemento: , bairro: Cavalhada, localidade: Porto Alegre, uf: RS, unidade: , ibge: 4314902, gia: , errorMessage: null, error: false}]

API via_cep #

Para mais informações sobre a API e para ajudar a mantê-la atualizada via_cep.

Todo #

  • [ ] Criar testes

Sugestões, Melhorias e Bugs #

Para sugerir melhorias ou para apontar algum bug issue tracker.

1.0.4 #

1.0.3 #

  • Atualizando README

1.0.2 #

  • Adicionando objeto de erro na classe [CepInfo]
  • Exportando as classes [CepInfo] e [SearchCepError]

1.0.1 #

  • Formatando o código com flutter format e melhorando a descrição do package

[1.0.0] #

  • Primeira release totalmente integrada com a API via_cep

example/example.dart

import 'package:search_cep/search_cep.dart';

void main() async {
  final infoCepJSON = await SearchCep.searchInfoByCep(cep: '01001000');
  final infoCepJSON2 = await SearchCep.searchInfoByCep(cep: '99999999');
  final infoCepJSON3 = await SearchCep.searchInfoByCep(cep: '12345');
  final infoCepJSON4 = await SearchCep.searchInfoByCep(cep: '30000000');

  final infoCepXML = await SearchCep.searchInfoByCep(
      cep: '01001000', returnType: ReturnType.xml);
  final infoCepXML2 = await SearchCep.searchInfoByCep(
      cep: '99999999', returnType: ReturnType.xml);

  final infoCepPiped = await SearchCep.searchInfoByCep(
      cep: '01001000', returnType: ReturnType.piped);
  final infoCepPiped2 = await SearchCep.searchInfoByCep(
      cep: '99999999', returnType: ReturnType.piped);

  final infoCepQuerty = await SearchCep.searchInfoByCep(
      cep: '01001000', returnType: ReturnType.querty);
  final infoCepQuerty2 = await SearchCep.searchInfoByCep(
      cep: '99999999', returnType: ReturnType.querty);

  final cepsJSON = await SearchCep.searchForCeps(
      uf: 'RS',
      cidade: 'Porto Alegre',
      logradouro: 'Domingos',
      returnType: ReturnType.json);
  final cepsXML = await SearchCep.searchForCeps(
      uf: 'RS',
      cidade: 'Porto Alegre',
      logradouro: 'Domingos',
      returnType: ReturnType.xml);

  print(infoCepJSON);
  print(infoCepJSON2.searchCepError);
  print(infoCepJSON3.searchCepError);
  print(infoCepJSON4);

  print(infoCepXML);
  print(infoCepXML2.searchCepError);
  print(infoCepPiped);
  print(infoCepPiped2.searchCepError);
  print(infoCepQuerty);
  print(infoCepQuerty2.searchCepError);
  print(cepsJSON);
  print(cepsXML);
}

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  search_cep: ^1.0.4

2. Install it

You can install packages from the command line:

with Flutter:


$ flutter pub get

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:search_cep/search_cep.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
76
Health:
Code health derived from static analysis. [more]
100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
100
Overall:
Weighted score of the above. [more]
88
Learn more about scoring.

We analyzed this package on Apr 3, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.7.1
  • pana: 0.13.6
  • Flutter: 1.12.13+hotfix.8

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.1.0 <3.0.0
flutter 0.0.0
http ^0.12.0+2 0.12.0+4
xml2json ^4.1.0 4.2.0
Transitive dependencies
async 2.4.1
charcode 1.1.3
collection 1.14.11 1.14.12
convert 2.1.1
http_parser 3.1.4
meta 1.1.8
path 1.6.4
pedantic 1.9.0
petitparser 3.0.2
sky_engine 0.0.99
source_span 1.7.0
string_scanner 1.0.5
term_glyph 1.1.0
typed_data 1.1.6
vector_math 2.0.8
xml 3.7.0 4.1.0
Dev dependencies
flutter_test