state management

This commit is contained in:
2025-06-27 15:51:22 -05:00
parent 3adfff41fb
commit 627ab80338
2 changed files with 80 additions and 21 deletions
+11 -6
View File
@@ -18,20 +18,24 @@ fn main() {
}
fn app(states: Arc<StateManager>) {
states.begin();
let mut screen = Screen::new();
let mut extensions = ExtensionManager::new();
let mut events = EventManager::new();
extensions.add(KeyPressExtension);
extensions.add(TickRate(255));
let my_state = states.use_state(20);
let my_state = states.use_state(String::new());
screen
.draw(Rect(0xffffff))
.component(Transform::center().dimensions(30, 3));
screen
.draw(format!("Type quit to quit {}", my_state.get()))
.draw(format!(
"Type exit to exit\nMy-State: {}",
my_state.get().trim()
))
.component(Transform::new().bottom().margin(0, -1));
screen
@@ -41,10 +45,11 @@ fn app(states: Arc<StateManager>) {
events.on(
move |events, event: Box<InputKeyPress>| match event.1.code {
crossterm::event::KeyCode::Enter => {
my_state.set(my_state.get() + 10);
// if event.0 == "quit" {
// events.dispatch(Close);
// }
my_state.set(my_state.get() + &format!("{}\n", event.0));
if event.0 == "exit" {
events.dispatch(Close);
}
my_state.update();
}
_ => {}
},