1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
use iced::{button, Align, Button, Column, Element, Sandbox, Settings, Text}; pub fn main() { Counter::run(Settings::default()) } #[derive(Default)] struct Counter { value: i32, increment_button: button::State, decrement_button: button::State, } #[derive(Debug, Clone, Copy)] enum Message { IncrementPressed, DecrementPressed, } impl Sandbox for Counter { type Message = Message; fn new() -> Self { Self::default() } 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<Message> { Column::new() .padding(20) .align_items(Align::Center) .push( Button::new(&mut self.increment_button, Text::new("Increment")) .on_press(Message::IncrementPressed), ) .push(Text::new(self.value.to_string()).size(50)) .push( Button::new(&mut self.decrement_button, Text::new("Decrement")) .on_press(Message::DecrementPressed), ) .into() } }