pegarCidade static method
- dynamic nomeCidadeOuIBGE, [
- dynamic nomeEstadoOuUFOuIBGEouRegiao
Retorna a cidade correspondente ao nome da cidade ou ao código IBGE da cidade.
A função pegarCidade
recebe o nome da cidade ou o código IBGE da cidade como parâmetro e retorna a cidade correspondente.
Parâmetros:
nomeCidadeOuIBGE
: O nome da cidade ou o código IBGE da cidade.nomeOuUFOuIBGE
(opcional): O nome do estado ou o código IBGE do estado. Quando especificado, limita a busca da cidade apenas ao estado informado.
Retorna:
- Um objeto do tipo
Cidade
correspondente à cidade encontrada. null
se nenhuma cidade for encontrada.
Implementation
static Future<Cidade?> pegarCidade(dynamic nomeCidadeOuIBGE, [dynamic nomeEstadoOuUFOuIBGEouRegiao]) async {
if (nomeCidadeOuIBGE is Cidade) {
return nomeCidadeOuIBGE;
}
var cids = (await cidades).toList();
if (nomeEstadoOuUFOuIBGEouRegiao is Cidade) {
nomeEstadoOuUFOuIBGEouRegiao = nomeEstadoOuUFOuIBGEouRegiao.estado;
}
if (nomeEstadoOuUFOuIBGEouRegiao is Estado) {
nomeEstadoOuUFOuIBGEouRegiao = nomeEstadoOuUFOuIBGEouRegiao.ibge;
}
if (nomeEstadoOuUFOuIBGEouRegiao is Regiao) {
nomeEstadoOuUFOuIBGEouRegiao = null;
cids = (await (nomeCidadeOuIBGE as Regiao).cidades).toList();
}
if (nomeEstadoOuUFOuIBGEouRegiao is num || nomeEstadoOuUFOuIBGEouRegiao is int || nomeEstadoOuUFOuIBGEouRegiao is double) {
nomeEstadoOuUFOuIBGEouRegiao = nomeEstadoOuUFOuIBGEouRegiao.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.singleWhereOrNull((x) => x.nome.flatEqual(nomeCidadeOuIBGE) || x.ibge.toString() == nomeCidadeOuIBGE.toString());
}