pesquisarCidade static method
Pesquisa uma cidade pelo nome, código IBGE ou UF.
Retorna uma lista de cidades que correspondem ao critério de pesquisa.
O parâmetro nomeCidadeOuIBGE
pode ser o nome da cidade, o código IBGE da cidade
ou uma combinação de ambos. O parâmetro nomeEstadoOuUFOuIBGEouRegiao
é opcional e pode ser
utilizado para especificar o nome do estado, a UF, o código IBGE da UF ou a região. Quando especificado, a busca se limita apenas ao estado (ou região) informado.
Exemplo de uso:
var cidades = await pesquisarCidade("São Paulo");
Implementation
static Future<Iterable<Cidade>> pesquisarCidade(dynamic nomeCidadeOuIBGE, [dynamic nomeEstadoOuUFOuIBGEouRegiao, int minChars = 0, int levenshteinDistance = 0]) async {
try {
if (nomeCidadeOuIBGE is Cidade) {
return [nomeCidadeOuIBGE];
}
if (nomeEstadoOuUFOuIBGEouRegiao is Cidade) {
nomeEstadoOuUFOuIBGEouRegiao = nomeEstadoOuUFOuIBGEouRegiao.estado;
}
if (nomeEstadoOuUFOuIBGEouRegiao is Estado) {
if (nomeEstadoOuUFOuIBGEouRegiao.estadoReal) {
nomeEstadoOuUFOuIBGEouRegiao = nomeEstadoOuUFOuIBGEouRegiao.ibge;
} else {
nomeEstadoOuUFOuIBGEouRegiao = null;
}
}
var cids = (await cidades).toList(growable: true);
if (nomeEstadoOuUFOuIBGEouRegiao is Regiao) {
nomeEstadoOuUFOuIBGEouRegiao = null;
cids = (await (nomeCidadeOuIBGE as Regiao).cidades).toList();
}
if (nomeEstadoOuUFOuIBGEouRegiao is num) {
nomeEstadoOuUFOuIBGEouRegiao = nomeEstadoOuUFOuIBGEouRegiao.toString().first(2);
}
if (nomeCidadeOuIBGE is num) {
nomeCidadeOuIBGE = nomeCidadeOuIBGE.toString().first(2);
}
nomeCidadeOuIBGE = flatString(nomeCidadeOuIBGE);
if ("$nomeCidadeOuIBGE".flatContains(" - ")) {
var l = "$nomeCidadeOuIBGE".split(" - ").whereValid.toList();
nomeCidadeOuIBGE = l.first;
if (l.length > 1) {
nomeEstadoOuUFOuIBGEouRegiao ??= l[1];
}
}
Estado est = pegarEstado(nomeCidadeOuIBGE);
if (est.estadoReal == false && isValid(nomeEstadoOuUFOuIBGEouRegiao)) {
est = pegarEstado(nomeEstadoOuUFOuIBGEouRegiao);
cids.removeWhere((c) => c.estado.ibge != est.ibge);
}
return cids.search(
searchTerms: nomeCidadeOuIBGE,
searchOn: (x) => [x.nome, x.ibge],
minChars: minChars,
levenshteinDistance: levenshteinDistance,
);
} catch (e) {
return [];
}
}