pub trait Widget<Message, Renderer> {
fn width(&self) -> Length;
fn height(&self) -> Length;
fn layout(&self, renderer: &Renderer, limits: &Limits) -> Node;
fn draw(
&self,
state: &Tree,
renderer: &mut Renderer,
style: &Style,
layout: Layout<'_>,
cursor_position: Point,
viewport: &Rectangle
);
fn tag(&self) -> Tag { ... }
fn state(&self) -> State { ... }
fn children(&self) -> Vec<Tree> { ... }
fn diff(&self, _tree: &mut Tree) { ... }
fn on_event(
&mut self,
_state: &mut Tree,
_event: Event,
_layout: Layout<'_>,
_cursor_position: Point,
_renderer: &Renderer,
_clipboard: &mut dyn Clipboard,
_shell: &mut Shell<'_, Message>
) -> Status { ... }
fn mouse_interaction(
&self,
_state: &Tree,
_layout: Layout<'_>,
_cursor_position: Point,
_viewport: &Rectangle,
_renderer: &Renderer
) -> Interaction { ... }
fn overlay<'a>(
&'a self,
_state: &'a mut Tree,
_layout: Layout<'_>,
_renderer: &Renderer
) -> Option<Element<'a, Message, Renderer>> { ... }
}
Expand description
A component that displays information and allows interaction.
If you want to build your own widgets, you will need to implement this trait.
Required Methods
Returns the layout::Node
of the Widget
.
This layout::Node
is used by the runtime to compute the Layout
of the
user interface.
Provided Methods
Processes a runtime Event
.
By default, it does nothing.
fn mouse_interaction(
&self,
_state: &Tree,
_layout: Layout<'_>,
_cursor_position: Point,
_viewport: &Rectangle,
_renderer: &Renderer
) -> Interaction
fn mouse_interaction(
&self,
_state: &Tree,
_layout: Layout<'_>,
_cursor_position: Point,
_viewport: &Rectangle,
_renderer: &Renderer
) -> Interaction
Returns the current [mouse::Interaction
] of the Widget
.
By default, it returns [mouse::Interaction::Idle
].