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,
};