use std::time::Duration; iris::state_prelude!(DefaultRsc); fn main() { DefaultApp::::run(); } #[derive(DefaultUiState)] struct State { ui_state: DefaultUiState, } impl DefaultAppState for State { fn new(ui_state: DefaultUiState, rsc: &mut DefaultRsc, _: Proxy) -> Self { let rect = rect(Color::RED).add(rsc); rect.on(CursorSense::click(), move |_, rsc| { rsc.tasks.spawn(async move |ctx| { tokio::time::sleep(Duration::from_secs(1)).await; ctx.update(move |_, rsc| { let rect = rect(rsc); if rect.color == Color::RED { rect.color = Color::GREEN; } else { rect.color = Color::RED; } }); }); }) .set_root(rsc); Self { ui_state } } }