pub struct Button<'a, Message, Renderer = Renderer>where
Renderer: Renderer,{ /* private fields */ }Expand description
A Material 3 button with Android-style bounded press ripples.
Implementations§
Source§impl<'a, Message, Renderer> Button<'a, Message, Renderer>
impl<'a, Message, Renderer> Button<'a, Message, Renderer>
Sourcepub fn new(content: impl Into<Element<'a, Message, Theme, Renderer>>) -> Self
pub fn new(content: impl Into<Element<'a, Message, Theme, Renderer>>) -> Self
Creates a new Button with the given content.
Sourcepub fn on_press(self, on_press: Message) -> Self
pub fn on_press(self, on_press: Message) -> Self
Sets the message produced when the Button is pressed.
Examples found in repository?
examples/quickstart/app.rs (line 79)
72 fn view(self, app: &App) -> material::Element<'_, Message> {
73 match self {
74 Self::Home => page::surface(
75 page::header("Home", "A small Material app"),
76 column![
77 material::text::headline_medium(app.count.to_string()),
78 button::button("Increment", button::ButtonVariant::Filled)
79 .on_press(Message::Increment),
80 button::button("Decrement", button::ButtonVariant::Outlined)
81 .on_press(Message::Decrement),
82 ]
83 .spacing(12),
84 )
85 .into(),
86 Self::Settings => page::surface(
87 page::header("Settings", "Pages are enum variants"),
88 material::text::body_large("Use the menu button in the rail"),
89 )
90 .into(),
91 }
92 }More examples
examples/showcase/pages/structure.rs (line 129)
96fn toolbars() -> material::Element<'static, Message> {
97 use material::widget::button::{self, FabSize, FabVariant};
98 use material::widget::toolbar;
99
100 let docked = toolbar::docked(toolbar::icon_actions([
101 ("arrow_back", Message::Decrement),
102 ("arrow_forward", Message::Increment),
103 ("add", Message::Increment),
104 ("tab", Message::Increment),
105 ("star", Message::Increment),
106 ("search", Message::Increment),
107 ]));
108
109 let docked_vibrant = toolbar::docked_vibrant([
110 toolbar::vibrant_icon_action("edit", Message::Increment),
111 toolbar::selected_vibrant_icon_action("check", Message::Increment),
112 toolbar::vibrant_icon_action("delete", Message::Decrement),
113 toolbar::vibrant_icon_action("more_vert", Message::MenuPressed),
114 ]);
115
116 let floating = toolbar::floating([
117 toolbar::selected_icon_action("format_bold", Message::Increment),
118 toolbar::icon_action("format_italic", Message::Increment),
119 toolbar::icon_action("format_underlined", Message::Increment),
120 toolbar::icon_action("format_color_text", Message::Increment),
121 ]);
122
123 let floating_vibrant = toolbar::floating_with_fab(
124 toolbar::floating_vibrant(toolbar::vibrant_icon_actions([
125 ("share", Message::Increment),
126 ("add", Message::Increment),
127 ("edit", Message::Increment),
128 ])),
129 button::fab("search", FabVariant::Primary, FabSize::Standard).on_press(Message::Increment),
130 );
131
132 let vertical = toolbar::vertical_floating([
133 toolbar::icon_action("undo", Message::Decrement),
134 toolbar::icon_action("redo", Message::Increment),
135 toolbar::selected_icon_action("palette", Message::Increment),
136 ]);
137
138 page::component_stack([
139 docked.into(),
140 docked_vibrant.into(),
141 page::row([floating.into(), vertical.into()]).into(),
142 floating_vibrant.into(),
143 ])
144 .into()
145}Sourcepub fn on_press_with(self, on_press: impl Fn() -> Message + 'a) -> Self
pub fn on_press_with(self, on_press: impl Fn() -> Message + 'a) -> Self
Sets the message produced when the Button is pressed using a closure.
Sourcepub fn on_press_maybe(self, on_press: Option<Message>) -> Self
pub fn on_press_maybe(self, on_press: Option<Message>) -> Self
Sets the message produced when the Button is pressed, if any.
Trait Implementations§
Source§impl<'a, Message, Renderer> From<Button<'a, Message, Renderer>> for Element<'a, Message, Theme, Renderer>
impl<'a, Message, Renderer> From<Button<'a, Message, Renderer>> for Element<'a, Message, Theme, Renderer>
Source§impl<Message, Renderer> Widget<Message, Theme, Renderer> for Button<'_, Message, Renderer>
impl<Message, Renderer> Widget<Message, Theme, Renderer> for Button<'_, Message, Renderer>
Source§fn operate(
&mut self,
tree: &mut Tree,
layout: Layout<'_>,
renderer: &Renderer,
operation: &mut dyn Operation,
)
fn operate( &mut self, tree: &mut Tree, layout: Layout<'_>, renderer: &Renderer, operation: &mut dyn Operation, )
Source§fn update(
&mut self,
tree: &mut Tree,
event: &Event,
layout: Layout<'_>,
cursor: Cursor,
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
viewport: &Rectangle,
)
fn update( &mut self, tree: &mut Tree, event: &Event, layout: Layout<'_>, cursor: Cursor, renderer: &Renderer, clipboard: &mut dyn Clipboard, shell: &mut Shell<'_, Message>, viewport: &Rectangle, )
Source§fn draw(
&self,
tree: &Tree,
renderer: &mut Renderer,
theme: &Theme,
_style: &Style,
layout: Layout<'_>,
cursor: Cursor,
viewport: &Rectangle,
)
fn draw( &self, tree: &Tree, renderer: &mut Renderer, theme: &Theme, _style: &Style, layout: Layout<'_>, cursor: Cursor, viewport: &Rectangle, )
Draws the
Widget using the associated Renderer.Source§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
Auto Trait Implementations§
impl<'a, Message, Renderer = Renderer<Renderer, Renderer>> !RefUnwindSafe for Button<'a, Message, Renderer>
impl<'a, Message, Renderer = Renderer<Renderer, Renderer>> !Send for Button<'a, Message, Renderer>
impl<'a, Message, Renderer = Renderer<Renderer, Renderer>> !Sync for Button<'a, Message, Renderer>
impl<'a, Message, Renderer = Renderer<Renderer, Renderer>> !UnwindSafe for Button<'a, Message, Renderer>
impl<'a, Message, Renderer> Freeze for Button<'a, Message, Renderer>
impl<'a, Message, Renderer> Unpin for Button<'a, Message, Renderer>
impl<'a, Message, Renderer> UnsafeUnpin for Button<'a, Message, Renderer>where
Element<'a, Message, Theme, Renderer>: UnsafeUnpin,
Option<OnPress<'a, Message>>: UnsafeUnpin,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<State, Message> IntoBoot<State, Message> for State
impl<State, Message> IntoBoot<State, Message> for State
Source§fn into_boot(self) -> (State, Task<Message>)
fn into_boot(self) -> (State, Task<Message>)
Turns some type into the initial state of some
Application.