Unverified Commit 61759375 authored by Tomohiko Tanihata's avatar Tomohiko Tanihata Committed by GitHub

Update scroll paging logic in Scrollbar (#121481)

Update scroll paging logic in Scrollbar
parent 06952ba2
...@@ -1825,47 +1825,32 @@ class RawScrollbarState<T extends RawScrollbar> extends State<T> with TickerProv ...@@ -1825,47 +1825,32 @@ class RawScrollbarState<T extends RawScrollbar> extends State<T> with TickerProv
return; return;
} }
double scrollIncrement; // Determines the scroll direction.
// Is an increment calculator available? final AxisDirection scrollDirection;
final ScrollIncrementCalculator? calculator = Scrollable.maybeOf(
_cachedController!.position.context.notificationContext!,
)?.widget.incrementCalculator;
if (calculator != null) {
scrollIncrement = calculator(
ScrollIncrementDetails(
type: ScrollIncrementType.page,
metrics: _cachedController!.position,
),
);
} else {
// Default page increment
scrollIncrement = 0.8 * _cachedController!.position.viewportDimension;
}
// Adjust scrollIncrement for direction switch (position.axisDirection) {
switch (_cachedController!.position.axisDirection) {
case AxisDirection.up: case AxisDirection.up:
if (details.localPosition.dy > scrollbarPainter._thumbOffset) {
scrollIncrement = -scrollIncrement;
}
break;
case AxisDirection.down: case AxisDirection.down:
if (details.localPosition.dy < scrollbarPainter._thumbOffset) { if (details.localPosition.dy > scrollbarPainter._thumbOffset) {
scrollIncrement = -scrollIncrement; scrollDirection = AxisDirection.down;
} } else {
break; scrollDirection = AxisDirection.up;
case AxisDirection.right:
if (details.localPosition.dx < scrollbarPainter._thumbOffset) {
scrollIncrement = -scrollIncrement;
} }
break; break;
case AxisDirection.left: case AxisDirection.left:
case AxisDirection.right:
if (details.localPosition.dx > scrollbarPainter._thumbOffset) { if (details.localPosition.dx > scrollbarPainter._thumbOffset) {
scrollIncrement = -scrollIncrement; scrollDirection = AxisDirection.right;
} else {
scrollDirection = AxisDirection.left;
} }
break;
} }
final ScrollableState? state = Scrollable.maybeOf(position.context.notificationContext!);
final ScrollIntent intent = ScrollIntent(direction: scrollDirection, type: ScrollIncrementType.page);
assert(state != null);
final double scrollIncrement = ScrollAction.getDirectionalIncrement(state!, intent);
_cachedController!.position.moveTo( _cachedController!.position.moveTo(
_cachedController!.position.pixels + scrollIncrement, _cachedController!.position.pixels + scrollIncrement,
duration: const Duration(milliseconds: 100), duration: const Duration(milliseconds: 100),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment