API ReferenceNavigation & Scrolling
Sliver Adapters
Box adapters, padding, viewports, and layout builders for slivers.
use incular::prelude::*;
fn main() {
let app = Application::new(|_cx| {
CustomScrollView::new(vec![
Box::new(SliverToBoxAdapter::new(Text::new("Header")))
as Box<dyn Sliver>,
]).into()
})
.expect("valid application");
incular::run(app).expect("run application");
}| Adapter | Purpose |
|---|---|
SliverToBoxAdapter | Embed one box child as a sliver |
SliverPadding | Inset a sliver |
SliverFillRemaining | Fill leftover viewport space |
SliverLayoutBuilder | Build from sliver constraints |
Viewport / ShrinkWrappingViewport | Viewport hosts |
Scrollable / NestedScrollView | Scroll coordination |
ListBody | Non-lazy sliver column |
NestedScrollView::new(header_slivers, body) coordinates headers with a body;
ListBody::new(children) lays out a non-lazy sliver column.
CustomScrollView composes slivers with shared scroll state:
use incular::prelude::*;
fn main() {
let app = Application::new(|_cx| {
Container::builder()
.padding(EdgeInsets::all(24.0))
.alignment(Alignment::CENTER)
.child(
CustomScrollView::new(vec![
Box::new(SliverToBoxAdapter::new(Text::new("Header")))
as Box<dyn Sliver>,
Box::new(SliverList::builder(50, |i| {
Text::new(format!("row {i}"))
})) as Box<dyn Sliver>,
])
.cache_extent(256.0),
)
.build()
.into()
})
.expect("valid application");
incular::run(app).expect("run application");
}Related: SliverList,
Sliver Headers.