diff options
| author | 2022-03-23 17:11:14 +0700 | |
|---|---|---|
| committer | 2022-03-23 17:11:14 +0700 | |
| commit | 0eef527fa5b04be74141c75b076677473320e321 (patch) | |
| tree | 5062a9ce2c370632de87a01471526da1176e0a60 /examples/pure/counter/src | |
| parent | 4aece6b77617f4a37af8208d8ddb1618bf9052d3 (diff) | |
| parent | ef4c79ea23e86fec9a8ad0fb27463296c14400e5 (diff) | |
| download | iced-0eef527fa5b04be74141c75b076677473320e321.tar.gz iced-0eef527fa5b04be74141c75b076677473320e321.tar.bz2 iced-0eef527fa5b04be74141c75b076677473320e321.zip | |
Merge pull request #1284 from iced-rs/virtual-widgets
Stateless widgets
Diffstat (limited to 'examples/pure/counter/src')
| -rw-r--r-- | examples/pure/counter/src/main.rs | 49 | 
1 files changed, 49 insertions, 0 deletions
| diff --git a/examples/pure/counter/src/main.rs b/examples/pure/counter/src/main.rs new file mode 100644 index 00000000..726009df --- /dev/null +++ b/examples/pure/counter/src/main.rs @@ -0,0 +1,49 @@ +use iced::pure::{button, column, text, Element, Sandbox}; +use iced::{Alignment, Settings}; + +pub fn main() -> iced::Result { +    Counter::run(Settings::default()) +} + +struct Counter { +    value: i32, +} + +#[derive(Debug, Clone, Copy)] +enum Message { +    IncrementPressed, +    DecrementPressed, +} + +impl Sandbox for Counter { +    type Message = Message; + +    fn new() -> Self { +        Self { value: 0 } +    } + +    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(&self) -> Element<Message> { +        column() +            .padding(20) +            .align_items(Alignment::Center) +            .push(button("Increment").on_press(Message::IncrementPressed)) +            .push(text(self.value.to_string()).size(50)) +            .push(button("Decrement").on_press(Message::DecrementPressed)) +            .into() +    } +} | 
