use iced::{Alignment, Element, Sandbox, Settings}; use iced_virtual::{Button, Column, Text, Virtual}; pub fn main() -> iced::Result { Counter::run(Settings::default()) } struct Counter { value: i32, state: iced_virtual::State, } #[derive(Debug, Clone, Copy)] enum Message { IncrementPressed, DecrementPressed, } impl Sandbox for Counter { type Message = Message; fn new() -> Self { Self { value: 0, state: iced_virtual::State::new(), } } fn title(&self) -> String { String::from("Counter - Iced") } fn update(&mut self, message: Message) { match message { Message::IncrementPressed => { self.value += 1; } Message::DecrementPressed => { self.value -= 1; } } } fn view(&mut self) -> Element { let content = Column::new() .padding(20) .align_items(Alignment::Center) .push( Button::new(Text::new("Increment")) .on_press(Message::IncrementPressed), ) .push(Text::new(self.value.to_string()).size(50)) .push( Button::new(Text::new("Decrement")) .on_press(Message::DecrementPressed), ); Virtual::new(&mut self.state, iced_virtual::Element::new(content)) .into() } }