pub fn app_bar_scroll_provider() -> AppBarScrollProviderBuilderExpand description
§app_bar_scroll_provider
Coordinate a top app bar and scrollable page content for navigation and feeds.
§Usage
Wrap both the app bar and its scrolling content, such as a complete scaffold.
§Parameters
state— optional external height and overlap state.behavior— pinned, immediately expanding, or expand-at-start behavior.enabled— whether scroll input updates the bar.snap— settle an intermediate height after scrolling ends; defaults to true.scroll_controller— optional content controller to synchronize overlap after programmatic scrolling.child— app bar and scrolling page content in the shared scroll scope.
§Examples
use tessera_components::{
app_bar::{AppBarScrollState, TopAppBarVariant, app_bar_scroll_provider, top_app_bar},
column::column,
modifier::ModifierExt as _,
scaffold::scaffold,
scrollable::ScrollableController,
text::text,
};
use tessera_ui::{Modifier, remember, tessera};
#[tessera]
fn screen() {
let state = remember(AppBarScrollState::default);
let scroll = remember(ScrollableController::new);
app_bar_scroll_provider()
.state(state)
.scroll_controller(scroll)
.child(move || {
scaffold()
.top_bar(move || {
top_app_bar()
.scroll_state(state)
.variant(TopAppBarVariant::MediumFlexible)
.title("Inbox");
})
.content(move || {
column()
.modifier(Modifier::new().vertical_scroll(scroll))
.children(|| {
text("Messages");
});
});
});
assert_eq!(state.with(AppBarScrollState::collapsed_fraction), 0.0);
}