Reqwest com slint

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)
}

(Portuguese translation of the English version below)

Olá e bem-vindo a este fórum. Este é um fórum de língua inglesa. Por favor, escreva as suas perguntas e respostas em inglês. Se necessário, utilize um tradutor (utilizei o deepl.com para traduzir esta resposta, uma vez que não falo português). Além disso, pode formatar o seu código de acordo com as directrizes que pode encontrar aqui: Forum Code Formatting and Syntax Highlighting


(English version)

Hi and welcome to this Forum. This is an English-speaking forum, please compose your questions and answers in English. If needed, please use a translator (I used deepl.com to translate this answer as I don't speak Portuguese myself). Also, could you please format your code according to the guideline you can find here: Forum Code Formatting and Syntax Highlighting

1 Like

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.