Trait Widget
pub trait Widget<Message, Theme, Renderer>: Meta {
// Required methods
fn size(&self) -> Size<Length>;
fn layout(&mut self, tree: &mut Tree, renderer: &Renderer, limits: &Limits);
fn draw(
&self,
tree: &Tree,
renderer: &mut Renderer,
theme: &Theme,
style: &Style,
layout: Layout,
cursor: Cursor,
viewport: &Rectangle,
);
// Provided methods
fn tag(&self) -> Tag { ... }
fn state(&self) -> State { ... }
fn diff(&mut self, tree: &mut Tree) { ... }
fn operate(
&mut self,
_tree: &mut Tree,
_layout: Layout,
_viewport: &Rectangle,
_renderer: &Renderer,
_operation: &mut dyn Operation,
) { ... }
fn update(
&mut self,
_tree: &mut Tree,
_event: &Event,
_layout: Layout,
_cursor: Cursor,
_renderer: &Renderer,
_shell: &mut Shell<'_, Message>,
_viewport: &Rectangle,
) { ... }
fn mouse_interaction(
&self,
_tree: &Tree,
_layout: Layout,
_cursor: Cursor,
_viewport: &Rectangle,
_renderer: &Renderer,
) -> Interaction { ... }
fn overlay<'a>(
&'a mut self,
_tree: &'a mut Tree,
_layout: Layout,
_renderer: &Renderer,
_viewport: &Rectangle,
_translation: Vector,
_window: Size,
) -> Vec<Element<'a, Message, Theme, Renderer>> { ... }
fn _map<F, B>(self, f: F) -> Map<Self, F, Message>
where Self: Sized,
F: Fn(Message) -> B { ... }
fn _boxed<'a>(self) -> Element<'a, Message, Theme, Renderer>
where Self: Sized + 'a { ... }
}Available on crate feature
advanced only.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.
§Examples
The repository has some examples showcasing how to implement a custom widget:
custom_widget, a demonstration of how to build a custom widget that draws a circle.geometry, a custom widget showcasing how to draw geometry with theMesh2Dprimitive iniced_wgpu.
Required Methods§
Provided Methods§
fn operate(
&mut self,
_tree: &mut Tree,
_layout: Layout,
_viewport: &Rectangle,
_renderer: &Renderer,
_operation: &mut dyn Operation,
)
fn operate( &mut self, _tree: &mut Tree, _layout: Layout, _viewport: &Rectangle, _renderer: &Renderer, _operation: &mut dyn Operation, )
fn update(
&mut self,
_tree: &mut Tree,
_event: &Event,
_layout: Layout,
_cursor: Cursor,
_renderer: &Renderer,
_shell: &mut Shell<'_, Message>,
_viewport: &Rectangle,
)
fn update( &mut self, _tree: &mut Tree, _event: &Event, _layout: Layout, _cursor: Cursor, _renderer: &Renderer, _shell: &mut Shell<'_, Message>, _viewport: &Rectangle, )
Processes a runtime Event.
By default, it does nothing.
fn mouse_interaction(
&self,
_tree: &Tree,
_layout: Layout,
_cursor: Cursor,
_viewport: &Rectangle,
_renderer: &Renderer,
) -> Interaction
fn mouse_interaction( &self, _tree: &Tree, _layout: Layout, _cursor: Cursor, _viewport: &Rectangle, _renderer: &Renderer, ) -> Interaction
Returns the current mouse::Interaction of the Widget.
By default, it returns mouse::Interaction::None.
fn overlay<'a>(
&'a mut self,
_tree: &'a mut Tree,
_layout: Layout,
_renderer: &Renderer,
_viewport: &Rectangle,
_translation: Vector,
_window: Size,
) -> Vec<Element<'a, Message, Theme, Renderer>>
fn overlay<'a>( &'a mut self, _tree: &'a mut Tree, _layout: Layout, _renderer: &Renderer, _viewport: &Rectangle, _translation: Vector, _window: Size, ) -> Vec<Element<'a, Message, Theme, Renderer>>
Returns the overlays of the Widget.