custom_state/
custom_state.rs

1use std::error::Error;
2
3use ratatui::widgets::Paragraph;
4use widgetui::*;
5
6#[derive(State)]
7pub struct CustomState {
8    state: i32,
9}
10
11pub struct CustomChunk;
12
13pub fn handle_state(
14    mut frame: ResMut<WidgetFrame>,
15    mut custom_state: ResMut<CustomState>,
16    mut events: ResMut<Events>,
17    mut chunks: ResMut<Chunks>,
18) -> WidgetResult {
19    // Register A Test Chunk
20    chunks.register_chunk::<CustomChunk>(frame.size());
21    let chunk = chunks.get_chunk::<CustomChunk>()?;
22
23    custom_state.state += 1;
24
25    if custom_state.state >= 50 {
26        events.register_exit();
27    }
28
29    frame.render_widget(
30        Paragraph::new(format!("Custom State: {}", custom_state.state)),
31        chunk,
32    );
33
34    Ok(())
35}
36
37fn main() -> Result<(), Box<dyn Error>> {
38    Ok(App::new(100)?
39        .states(CustomState { state: 0 })
40        .widgets(handle_state)
41        .handle_panics()
42        .run()?)
43}