pesquisarEstado static method

Iterable<Estado> pesquisarEstado(
  1. dynamic nomeOuUFOuIBGE
)

Pesquisa um estado pelo nome, UF ou código IBGE.

Retorna uma lista de estados que correspondem ao critério de pesquisa. O critério de pesquisa pode ser o nome do estado, a UF (Unidade Federativa) ou o código IBGE do estado. Se a primeira busca não retornar nenhum estado, a função tenta buscar pelo nome de uma cidade.

Parâmetros:

  • nomeOuUFOuIBGE: O critério de pesquisa (nome, UF ou código IBGE).

Retorna: Uma lista de objetos do tipo Estado que correspondem ao critério de pesquisa. Se nenhum estado for encontrado, retorna uma lista vazia.

Exemplo:

var estadosEncontrados = await pesquisarEstado('São Paulo');
print(estadosEncontrados);

Implementation

static Iterable<Estado> pesquisarEstado(dynamic nomeOuUFOuIBGE) {
  try {
    if (nomeOuUFOuIBGE is Cidade) {
      return [nomeOuUFOuIBGE.estado];
    }

    if (nomeOuUFOuIBGE is Estado) {
      return [nomeOuUFOuIBGE];
    }

    nomeOuUFOuIBGE = "$nomeOuUFOuIBGE".toLowerCase().trim();

    var l = estados.where((e) => e.nome.flatContains(nomeOuUFOuIBGE) || e.uf.flatEqual(nomeOuUFOuIBGE) || e.ibge.toString() == nomeOuUFOuIBGE.toString().onlyNumbers.first(2));
    return l.orderBy((x) {
      return [
        x.nome.getLevenshtein(nomeOuUFOuIBGE, false),
        x.uf.getLevenshtein(nomeOuUFOuIBGE, false),
        x.ibge.toString().getLevenshtein(nomeOuUFOuIBGE, false),
      ].min;
    }).thenBy((x) => x.nome);
  } catch (e) {
    return [];
  }
}