Function zng::widget::node::with_widget_state
source · pub fn with_widget_state<U, I, T>(
child: U,
id: impl Into<StateId<T>>,
default: I,
value: impl IntoVar<T>,
) -> impl UiNode
Expand description
Helper for declaring properties that set the widget state.
The state ID is set in WIDGET
on init and is kept updated. On deinit it is set to the default
value.
§Examples
static_id! {
pub static ref FOO_ID: StateId<u32>;
}
#[property(CONTEXT)]
pub fn foo(child: impl UiNode, value: impl IntoVar<u32>) -> impl UiNode {
with_widget_state(child, *FOO_ID, || 0, value)
}
// after the property is used and the widget initializes:
/// Get the value from outside the widget.
fn get_foo_outer(widget: &mut impl UiNode) -> u32 {
widget.with_context(WidgetUpdateMode::Ignore, || WIDGET.get_state(*FOO_ID)).flatten().unwrap_or_default()
}
/// Get the value from inside the widget.
fn get_foo_inner() -> u32 {
WIDGET.get_state(*FOO_ID).unwrap_or_default()
}