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 { ... }
}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§
Sourcefn 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, )
Sourcefn 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.
Sourcefn 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.
Sourcefn 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.