pub struct Toast<Msg: Clone> {
pub id: WidgetId,
pub message: String,
pub duration: Duration,
pub on_dismiss: Option<Msg>,
pub bg: Option<Color>,
pub fg: Option<Color>,
}Expand description
Builder for a transient bottom-anchored notification overlay.
Toast does not own its own timer — the application is responsible
for clearing the toast (typically by storing its message in an
Option and resetting it via a delayed message).
Fields§
§id: WidgetIdStable id for the overlay. Used to derive the OverlayId so
the same toast persists across frames when the message stays the
same.
message: StringBody text rendered inside the pill.
duration: DurationDisplay duration. The runtime does not consume this — it is
returned through Toast::duration_value so the app’s timer
scheduler can read it back.
on_dismiss: Option<Msg>Optional message fired when the user taps anywhere outside the pill. Convenient for “tap anywhere to dismiss” behaviour.
bg: Option<Color>Optional override for the pill background colour.
fg: Option<Color>Optional override for the body text colour.
Implementations§
Source§impl<Msg: Clone + 'static> Toast<Msg>
impl<Msg: Clone + 'static> Toast<Msg>
Sourcepub fn new(message: impl Into<String>) -> Self
pub fn new(message: impl Into<String>) -> Self
Create a toast with the given message text. The default id is
"toast/default"; override with Self::id when more than one
toast variant might coexist.
Sourcepub fn duration(self, secs: f32) -> Self
pub fn duration(self, secs: f32) -> Self
Set the display duration. The toast itself does not auto-hide;
this value is stored so the application’s timer scheduler can
read it back via Self::duration_value.
Sourcepub fn duration_value(&self) -> Duration
pub fn duration_value(&self) -> Duration
Read back the configured duration. Lets the app delegate timer setup to a helper that does not need to know how the toast was configured.
Sourcepub fn on_dismiss(self, msg: Msg) -> Self
pub fn on_dismiss(self, msg: Msg) -> Self
Set the dismiss message fired on a tap outside the pill.
Sourcepub fn background(self, c: Color) -> Self
pub fn background(self, c: Color) -> Self
Override the pill background colour.
Sourcepub fn view(self) -> Element<Msg>
pub fn view(self) -> Element<Msg>
Build an Element that paints the toast pill bottom-anchored
inside its parent rect. The intended pattern is to push it on
top of the main view via a Stack:
fn view( &self ) -> Element<Msg>
{
let body = column().push( … );
let mut s = stack().push( body );
if self.toast_until.is_some()
{
s = s.push( toast( "Saved" ).view() );
}
s.into()
}Works on every compositor — no wlr-layer-shell needed —
because the pill is just a regular widget tree drawn on top of
the existing canvas. Use Self::overlay only when you
specifically need the toast to render above other windows
(notification-style), which requires wlr-layer-shell.
Sourcepub fn overlay(self) -> OverlaySpec<Msg>
pub fn overlay(self) -> OverlaySpec<Msg>
Build the OverlaySpec the application returns from
App::overlays. The overlay is anchored
to the bottom edge of the screen with a small breathing margin.
Requires the compositor to advertise wlr-layer-shell. For a
portable variant that works everywhere — at the cost of being
confined to the application’s surface — use Self::view.
Auto Trait Implementations§
impl<Msg> Freeze for Toast<Msg>where
Msg: Freeze,
impl<Msg> RefUnwindSafe for Toast<Msg>where
Msg: RefUnwindSafe,
impl<Msg> Send for Toast<Msg>where
Msg: Send,
impl<Msg> Sync for Toast<Msg>where
Msg: Sync,
impl<Msg> Unpin for Toast<Msg>where
Msg: Unpin,
impl<Msg> UnwindSafe for Toast<Msg>where
Msg: UnwindSafe,
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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more