pub trait Widget<Message, Theme, Renderer>where
    Renderer: Renderer,{
    // Required methods
    fn size(&self) -> Size<Length>;
    fn layout(
        &mut self,
        tree: &mut Tree,
        renderer: &Renderer,
        limits: &Limits,
    ) -> Node;
    fn draw(
        &self,
        tree: &Tree,
        renderer: &mut Renderer,
        theme: &Theme,
        style: &Style,
        layout: Layout<'_>,
        cursor: Cursor,
        viewport: &Rectangle,
    );
    // Provided methods
    fn size_hint(&self) -> Size<Length> { ... }
    fn tag(&self) -> Tag { ... }
    fn state(&self) -> State { ... }
    fn children(&self) -> Vec<Tree> { ... }
    fn diff(&self, tree: &mut Tree) { ... }
    fn operate(
        &mut self,
        _state: &mut Tree,
        _layout: Layout<'_>,
        _renderer: &Renderer,
        _operation: &mut dyn Operation,
    ) { ... }
    fn update(
        &mut self,
        _state: &mut Tree,
        _event: &Event,
        _layout: Layout<'_>,
        _cursor: Cursor,
        _renderer: &Renderer,
        _clipboard: &mut dyn Clipboard,
        _shell: &mut Shell<'_, Message>,
        _viewport: &Rectangle,
    ) { ... }
    fn mouse_interaction(
        &self,
        _state: &Tree,
        _layout: Layout<'_>,
        _cursor: Cursor,
        _viewport: &Rectangle,
        _renderer: &Renderer,
    ) -> Interaction { ... }
    fn overlay<'a>(
        &'a mut self,
        _state: &'a mut Tree,
        _layout: Layout<'a>,
        _renderer: &Renderer,
        _viewport: &Rectangle,
        _translation: Vector,
    ) -> Option<Element<'a, Message, Theme, 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.
§Examples
The repository has some examples showcasing how to implement a custom widget:
- bezier_tool, a Paint-like tool for drawing Bézier curves using- lyon.
- 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 the- Mesh2Dprimitive in- iced_wgpu.
Required Methods§
Sourcefn layout(
    &mut self,
    tree: &mut Tree,
    renderer: &Renderer,
    limits: &Limits,
) -> Node
 
fn layout( &mut self, tree: &mut Tree, renderer: &Renderer, limits: &Limits, ) -> Node
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§
Sourcefn operate(
    &mut self,
    _state: &mut Tree,
    _layout: Layout<'_>,
    _renderer: &Renderer,
    _operation: &mut dyn Operation,
)
 
fn operate( &mut self, _state: &mut Tree, _layout: Layout<'_>, _renderer: &Renderer, _operation: &mut dyn Operation, )
Sourcefn update(
    &mut self,
    _state: &mut Tree,
    _event: &Event,
    _layout: Layout<'_>,
    _cursor: Cursor,
    _renderer: &Renderer,
    _clipboard: &mut dyn Clipboard,
    _shell: &mut Shell<'_, Message>,
    _viewport: &Rectangle,
)
 
fn update( &mut self, _state: &mut Tree, _event: &Event, _layout: Layout<'_>, _cursor: Cursor, _renderer: &Renderer, _clipboard: &mut dyn Clipboard, _shell: &mut Shell<'_, Message>, _viewport: &Rectangle, )
Processes a runtime Event.
By default, it does nothing.
Sourcefn mouse_interaction(
    &self,
    _state: &Tree,
    _layout: Layout<'_>,
    _cursor: Cursor,
    _viewport: &Rectangle,
    _renderer: &Renderer,
) -> Interaction
 
fn mouse_interaction( &self, _state: &Tree, _layout: Layout<'_>, _cursor: Cursor, _viewport: &Rectangle, _renderer: &Renderer, ) -> Interaction
Returns the current mouse::Interaction of the Widget.
By default, it returns mouse::Interaction::Idle.