API ReferenceNavigation & Scrolling
Wheel Views
Cylindrical picker viewport with projection matrices.
ListWheelViewport is fixed-extent wheel state; ListWheelScrollView wraps
it Flutter-style; FixedExtentScrollController adds item ops over an ordinary
controller.
use incular::prelude::*;
fn main() {
let mut viewport = ListWheelViewport::new(
ScrollController::new(),
48.0,
WheelChildDelegate::builder(Some(10), |i| Some(format!("item {i}"))),
);
viewport.set_projection(WheelProjection::new(2.0, 0.003, 0.0, 1.0));
viewport.jump_to_item(2);
println!("selected: {:?}", viewport.selected_item());
}WheelChildDelegate: Children(Vec) / Builder { child_count, builder }.
WheelProjection { diameter_ratio, perspective, off_axis_fraction, squeeze }
with transform_for(...). WheelMatrix 4×4: identity, multiply,
translation, rotation_x/y, scale, cylindrical_projection,
project_point, inverse. ChangeReportingBehavior: OnScrollUpdate
(default) / OnScrollEnd. WheelChildLayout / WheelLayout carry angles,
transforms, opacity, and visibility per row.
Related: PageView,
ScrollController.