Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6175937

Browse files
authored
Update scroll paging logic in Scrollbar (#121481)
Update scroll paging logic in Scrollbar
1 parent 06952ba commit 6175937

File tree

1 file changed

+16
-31
lines changed

1 file changed

+16
-31
lines changed

packages/flutter/lib/src/widgets/scrollbar.dart

Lines changed: 16 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1825,47 +1825,32 @@ class RawScrollbarState<T extends RawScrollbar> extends State<T> with TickerProv
18251825
return;
18261826
}
18271827

1828-
double scrollIncrement;
1829-
// Is an increment calculator available?
1830-
final ScrollIncrementCalculator? calculator = Scrollable.maybeOf(
1831-
_cachedController!.position.context.notificationContext!,
1832-
)?.widget.incrementCalculator;
1833-
if (calculator != null) {
1834-
scrollIncrement = calculator(
1835-
ScrollIncrementDetails(
1836-
type: ScrollIncrementType.page,
1837-
metrics: _cachedController!.position,
1838-
),
1839-
);
1840-
} else {
1841-
// Default page increment
1842-
scrollIncrement = 0.8 * _cachedController!.position.viewportDimension;
1843-
}
1828+
// Determines the scroll direction.
1829+
final AxisDirection scrollDirection;
18441830

1845-
// Adjust scrollIncrement for direction
1846-
switch (_cachedController!.position.axisDirection) {
1831+
switch (position.axisDirection) {
18471832
case AxisDirection.up:
1848-
if (details.localPosition.dy > scrollbarPainter._thumbOffset) {
1849-
scrollIncrement = -scrollIncrement;
1850-
}
1851-
break;
18521833
case AxisDirection.down:
1853-
if (details.localPosition.dy < scrollbarPainter._thumbOffset) {
1854-
scrollIncrement = -scrollIncrement;
1855-
}
1856-
break;
1857-
case AxisDirection.right:
1858-
if (details.localPosition.dx < scrollbarPainter._thumbOffset) {
1859-
scrollIncrement = -scrollIncrement;
1834+
if (details.localPosition.dy > scrollbarPainter._thumbOffset) {
1835+
scrollDirection = AxisDirection.down;
1836+
} else {
1837+
scrollDirection = AxisDirection.up;
18601838
}
18611839
break;
18621840
case AxisDirection.left:
1841+
case AxisDirection.right:
18631842
if (details.localPosition.dx > scrollbarPainter._thumbOffset) {
1864-
scrollIncrement = -scrollIncrement;
1843+
scrollDirection = AxisDirection.right;
1844+
} else {
1845+
scrollDirection = AxisDirection.left;
18651846
}
1866-
break;
18671847
}
18681848

1849+
final ScrollableState? state = Scrollable.maybeOf(position.context.notificationContext!);
1850+
final ScrollIntent intent = ScrollIntent(direction: scrollDirection, type: ScrollIncrementType.page);
1851+
assert(state != null);
1852+
final double scrollIncrement = ScrollAction.getDirectionalIncrement(state!, intent);
1853+
18691854
_cachedController!.position.moveTo(
18701855
_cachedController!.position.pixels + scrollIncrement,
18711856
duration: const Duration(milliseconds: 100),

0 commit comments

Comments
 (0)