pub struct BottomSheetView<State: 'static> { /* private fields */ }Expand description
A declarative modal M3 bottom sheet wrapping a single content child. See the module docs.
Implementations§
Source§impl<State: 'static> BottomSheetView<State>
impl<State: 'static> BottomSheetView<State>
Sourcepub fn on_dismiss<F: Fn(&mut State) + 'static>(self, on_dismiss: F) -> Self
pub fn on_dismiss<F: Fn(&mut State) + 'static>(self, on_dismiss: F) -> Self
Set the dismiss callback — invoked with &mut State on a scrim tap or a
handle drag release decided closed. show_bottom_sheet wires this to
controller.pop() automatically.
Sourcepub fn dismissable(self, dismissable: bool) -> Self
pub fn dismissable(self, dismissable: bool) -> Self
Whether this sheet can be dismissed by the user at all — the scrim
tap, the handle drag, Escape, and an Android back press (default
true; see the module docs). false disables all four; only
an explicit close control the app wires through its own content still
dismisses it.
Sourcepub fn dismiss_handle(self, dismiss: ModalDismiss) -> Self
pub fn dismiss_handle(self, dismiss: ModalDismiss) -> Self
Install the app-triggered staged-dismiss handle: the sheet’s own
content can then close it through the very spring exit the scrim tap,
the handle drag, Escape, and an Android back press all take —
instead of popping the navigator directly, which would drop the page
out from under the sheet mid-slide. Reuses
crate::overlay::modal::ModalDismiss — the same handle type
crate::side_sheet::SideSheetView::dismiss_handle installs — so an
app mixing sheet families never juggles two handle types. See the
module docs’ app-initiated dismiss section.
Mint the handle outside show_bottom_sheet’s page builder and
clone it in — the builder re-runs on every navigator rebuild.
let dismiss = ModalDismiss::new();
let select = dismiss.clone();
show_bottom_sheet(
&nav,
move || {
bottom_sheet(menu_panel(rows(), move |state: &mut State, sel| {
on_select(state, sel);
select.dismiss();
}))
.dismiss_handle(dismiss.clone())
},
|state: &mut State, result: PopResult| { /* ... */ },
);Trait Implementations§
Source§impl<State: 'static> View<State> for BottomSheetView<State>
impl<State: 'static> View<State> for BottomSheetView<State>
Source§type Element = BottomSheetWidget
type Element = BottomSheetWidget
Source§fn build(&self, ctx: &mut BuildCtx<'_>) -> BottomSheetWidget
fn build(&self, ctx: &mut BuildCtx<'_>) -> BottomSheetWidget
Source§fn rebuild(
&self,
prev: &Self,
element: &mut BottomSheetWidget,
ctx: &mut BuildCtx<'_>,
) -> ChangeFlags
fn rebuild( &self, prev: &Self, element: &mut BottomSheetWidget, ctx: &mut BuildCtx<'_>, ) -> ChangeFlags
prev (the previous view of the same type) against the live
element, mutating it in place and reporting what changed.Auto Trait Implementations§
impl<State> !RefUnwindSafe for BottomSheetView<State>
impl<State> !Send for BottomSheetView<State>
impl<State> !Sync for BottomSheetView<State>
impl<State> !UnwindSafe for BottomSheetView<State>
impl<State> Freeze for BottomSheetView<State>
impl<State> Unpin for BottomSheetView<State>
impl<State> UnsafeUnpin for BottomSheetView<State>
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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>
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>
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)
&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)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.impl<T> ErasedDestructor for Twhere
T: 'static,
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> ⓘ
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> StorageAccess<T> for T
impl<T> StorageAccess<T> for T
Source§fn as_borrowed(&self) -> &T
fn as_borrowed(&self) -> &T
Source§fn into_taken(self) -> T
fn into_taken(self) -> T
Source§impl<State, V> ViewSeq<State, One> for Vwhere
State: 'static,
V: View<State>,
impl<State, V> ViewSeq<State, One> for Vwhere
State: 'static,
V: View<State>,
Source§fn extend_views(self, out: &mut Vec<AnyView<State>>)
fn extend_views(self, out: &mut Vec<AnyView<State>>)
out — erasing each
with AnyView::new (a no-op for an element already an AnyView).