custom_state/
custom_state.rs1use 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 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}