no painel de controle o código funciona mais na ui utilizando slint não aparece chamada do api
este e meu código.
use reqwest::Error;
use serde::Deserialize;
use tokio;
use slint::PlatformError;
slint::include_modules!();
#[tokio::main]
async fn main() -> Result<(), PlatformError> {
let ui = AppWindow::new()?;
let ui_handle = ui.as_weak();
ui.on_chama_cep({
let ui = ui_handle.clone();
move |cep| {
let ui_handle = ui_handle.clone();
let cep = cep.to_string();
println!("CEP recebido: {}", cep); // Adicione este print para verificar o CEP recebido
tokio::spawn(async move {
match chamacep(cep).await {
Ok(corpo) => {
if let Some(ui) = ui_handle.upgrade() {
let rua = corpo.rua.clone().unwrap_or_default();
let bairro = corpo.bairro.clone().unwrap_or_default();
let logradouro = corpo.logradouro.clone().unwrap_or_default();
let localidade = corpo.localidade.clone().unwrap_or_default();
let uf = corpo.uf.clone().unwrap_or_default();
let ddd = corpo.ddd.clone().unwrap_or_default();
println!("Atualizando UI com: Rua={}, Bairro={}, Logradouro={}, Localidade={}, UF={}, DDD={}",
rua, bairro, logradouro, localidade, uf, ddd);
ui.set_saida_rua(rua.into());
ui.set_saida_bairro(bairro.into());
ui.set_saida_logradouro(logradouro.into());
ui.set_saida_localidade(localidade.into());
ui.set_saida_uf(uf.into());
ui.set_saida_ddd(ddd.into());
println!("Dados atualizados na UI");
}
}
Err(err) => {
eprintln!("Erro ao chamar CEP: {:?}", err);
}
}
});
}
});
ui.run()
}
#[derive(Debug, Deserialize)]
struct Corpo {
rua: Option,
logradouro: Option,
bairro: Option,
localidade: Option,
uf: Option,
ddd: Option,
}
async fn chamacep(cep: String) -> Result<Corpo, Error> {
let url = format!("https://viacep.com.br/ws/{}/json/", cep);
println!("URL: {}", url);
let resp = reqwest::get(&url).await?.json::().await?;
println!("Resposta JSON: {:?}", resp);
Ok(resp)
}