pub struct AppBarView<State: 'static> { /* private fields */ }Expand description
A declarative M3 fixed top app bar. See the module docs.
Implementations§
Source§impl<State: 'static> AppBarView<State>
impl<State: 'static> AppBarView<State>
Sourcepub fn actions<M>(self, actions: impl ViewSeq<State, M>) -> Self
pub fn actions<M>(self, actions: impl ViewSeq<State, M>) -> Self
Attach trailing action slots, in reading order (the last one sits closest to the trailing edge). Tint is each supplied view’s own responsibility.
Sourcepub fn title_view(self, title: impl View<State>) -> Self
pub fn title_view(self, title: impl View<State>) -> Self
Replace the title string with a caller view — upstream’s title widget
slot, which takes precedence over its titleText. The view is placed
but never styled, and (unlike a string title) labels itself for
accessibility.
Sourcepub fn center_title(self, center: bool) -> Self
pub fn center_title(self, center: bool) -> Self
Center the title within the space left between the leading slot and the
actions (centerTitle, default false).
Sourcepub fn corner_shift(self, enabled: bool) -> Self
pub fn corner_shift(self, enabled: bool) -> Self
Shift the row out from under a protruding window-control corner (default
true). Pass false for a bar that does not span the window’s top edge
(detail pane, sheet, dialog, below other content): layout cannot see the
bar’s window-space position and the corner value is never consumed, so
such a bar would otherwise over-shift.
Sourcepub fn density(self, density: AppBarDensity) -> Self
pub fn density(self, density: AppBarDensity) -> Self
Set the vertical density — see super’s metrics table.
Sourcepub fn shape_family(self, family: AppBarShapeFamily) -> Self
pub fn shape_family(self, family: AppBarShapeFamily) -> Self
Set the container’s corner shape family (default
AppBarShapeFamily::Square, upstream’s own M3EAppBar.top default).
Sourcepub fn toolbar_height(self, height: f64) -> Self
pub fn toolbar_height(self, height: f64) -> Self
Override the band height outright (toolbarHeight), bypassing the
density table — the seam that reaches upstream’s own 72dp band, among
anything else.
Sourcepub fn background(self, color: Color) -> Self
pub fn background(self, color: Color) -> Self
Override the container fill (backgroundColor), winning over
Self::container, the elevation surface role, the theme default and
its fallback alike.
Sourcepub fn container(self, role: AppBarContainer) -> Self
pub fn container(self, role: AppBarContainer) -> Self
Fill the container with a theme color role (default
AppBarContainer::Surface), resolved at paint time so it follows a
brightness flip or theme swap. An explicit role also wins over the
elevation surface role Self::elevation would otherwise pick, and a
string title takes the role’s foreground (see AppBarContainer).
Self::background still wins over it.
use frust_material::{AppBarContainer, app_bar};
// Flutter's counter-template bar: an inverse-primary fill, raised.
let bar = app_bar::<()>("Counter")
.container(AppBarContainer::InversePrimary)
.elevation(2);Sourcepub fn elevation(self, level: u8) -> Self
pub fn elevation(self, level: u8) -> Self
Raise the bar to M3 elevation level (0..=5, clamped; default 0),
resolved at paint time against the theme’s elevation table: a level
above 0 paints that level’s drop shadow beneath the container and, with
no Self::container/Self::background set, fills with the level’s
surface role (level 2 is surfaceContainer). See super’s module
docs for the paint order.
Sourcepub fn safe_area(self, enabled: bool) -> Self
pub fn safe_area(self, enabled: bool) -> Self
Whether the bar consumes the top, left and right window insets
itself (default true) — Flutter’s AppBar wrapping its toolbar in
SafeArea(bottom: false). It grows by
ctx.window_insets().padding().top, paints its fill (and shadow) edge
to edge through that band and across the full width, and lays its
slots out below the top inset and inside the left/right ones (a
landscape notch or home-indicator edge). A parent frust::safe_area
that already consumed an edge leaves nothing on it to consume, so it
never double-insets. Pass false for a bar that is not docked to the
window’s top edge (a preview, a pane, a sheet); it then consumes no
edge at all.
Sourcepub fn semantic_label(self, label: impl Into<String>) -> Self
pub fn semantic_label(self, label: impl Into<String>) -> Self
Label the bar’s accessibility container explicitly (semanticLabel).
Without one, a string title labels it and a caller view leaves it
unlabelled.
Trait Implementations§
Source§impl<State: 'static> View<State> for AppBarView<State>
impl<State: 'static> View<State> for AppBarView<State>
Source§type Element = AppBarWidget
type Element = AppBarWidget
Source§fn build(&self, ctx: &mut BuildCtx<'_>) -> AppBarWidget
fn build(&self, ctx: &mut BuildCtx<'_>) -> AppBarWidget
Source§fn rebuild(
&self,
prev: &Self,
element: &mut AppBarWidget,
ctx: &mut BuildCtx<'_>,
) -> ChangeFlags
fn rebuild( &self, prev: &Self, element: &mut AppBarWidget, 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 AppBarView<State>
impl<State> !Send for AppBarView<State>
impl<State> !Sync for AppBarView<State>
impl<State> !UnwindSafe for AppBarView<State>
impl<State> Freeze for AppBarView<State>
impl<State> Unpin for AppBarView<State>
impl<State> UnsafeUnpin for AppBarView<State>where
TitleSlot<State>: UnsafeUnpin,
Option<AnyView<State>>: UnsafeUnpin,
Vec<AnyView<State>>: 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
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).