API ReferenceNavigation & Scrolling
Animated Lists & Grids
Insert and remove rows with retained animations.
AnimatedListController (alias AnimatedGridController,
SliverAnimatedGridController) shares insertion/removal state; AnimatedItem
snapshots carry stable ids across shifts.
use incular::prelude::*;
fn main() {
let controller = AnimatedListController::new(3);
let now = std::time::Instant::now();
controller.insert(0, now);
controller.remove_at(1, now);
println!(
"items: {}, animating: {}",
controller.item_count(),
controller.tick(now)
);
}use incular::prelude::*;
fn main() {
let controller = AnimatedListController::new(3);
let app = Application::new(move |_cx| {
Container::builder()
.padding(EdgeInsets::all(24.0))
.alignment(Alignment::CENTER)
.child(
AnimatedList::new(3, |i| Text::new(format!("row {i}")))
.controller(controller.clone()),
)
.build()
.into()
})
.expect("valid application");
incular::run(app).expect("run application");
}AnimatedItem { id, index, value, phase } with is_incoming() /
is_outgoing() / is_stable(); phases: Stable / Incoming / Outgoing.
AnimatedItemBuilder / AnimatedRemovedItemBuilder are Rc<dyn Fn…>
aliases.
Related: SliverList,
SliverGrid.