API ReferenceNavigation & Scrolling
Two-Dimensional Scrolling
Independent row and column scrolling with lazy delegates.
TwoDimensionalScrollable owns two independent scroll positions plus gesture
policy; TwoDimensionalViewport owns row/column state with lazy extents.
use incular::prelude::*;
fn main() {
let delegate =
TwoDimensionalChildDelegate::new(10, 5, |vicinity: ChildVicinity| {
Some(format!("{}:{}", vicinity.x_index, vicinity.y_index))
});
let mut scrollable = TwoDimensionalScrollable::with_new_controllers();
scrollable.set_main_axis(Axis::Vertical);
scrollable.set_diagonal_drag_behavior(DiagonalDragBehavior::Free);
println!("rows: {}", delegate.row_count());
}CacheExtentStyle: Pixels (default) / Viewport.
DiagonalDragBehavior: None (default, lock dominant) / Free / Weighted.
Layouts: TwoDimensionalChildLayout, TwoDimensionalViewportLayout
(child(), ranges, cache rect), TwoDimensionalConstraints
(as_box_constraints(), constrain(), biggest()).
Related: ScrollController,
CustomScrollView.