use iced::{ text::HorizontalAlignment, text_input, Align, Application, Color, Column, Element, Justify, Length, Text, TextInput, }; pub fn main() { Todos::default().run() } #[derive(Default)] struct Todos { input: text_input::State, input_value: String, } #[derive(Debug, Clone)] pub enum Message { InputChanged(String), CreateTask, } impl Application for Todos { type Message = Message; fn update(&mut self, message: Message) { match message { Message::InputChanged(value) => { self.input_value = value; } Message::CreateTask => {} } } fn view(&mut self) -> Element<Message> { let title = Text::new("todos") .size(100) .color(GRAY) .horizontal_alignment(HorizontalAlignment::Center); let input = TextInput::new( &mut self.input, "What needs to be done?", &self.input_value, Message::InputChanged, ) .padding(15) .size(30) .on_submit(Message::CreateTask); Column::new() .max_width(Length::Units(800)) .height(Length::Fill) .align_self(Align::Center) .justify_content(Justify::Center) .spacing(20) .padding(20) .push(title) .push(input) .into() } } // Colors const GRAY: Color = Color { r: 0.5, g: 0.5, b: 0.5, a: 1.0, };