Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions lib/scroll_to_index.dart
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ abstract class AutoScrollController implements ScrollController {
{double initialScrollOffset = 0.0,
bool keepScrollOffset = true,
double? suggestedRowHeight,
bool clampToMaxScrollExtent = true,
ViewportBoundaryGetter viewportBoundaryGetter =
defaultViewportBoundaryGetter,
Axis? axis,
Expand All @@ -39,6 +40,7 @@ abstract class AutoScrollController implements ScrollController {
initialScrollOffset: initialScrollOffset,
keepScrollOffset: keepScrollOffset,
suggestedRowHeight: suggestedRowHeight,
clampToMaxScrollExtent: clampToMaxScrollExtent,
viewportBoundaryGetter: viewportBoundaryGetter,
beginGetter: axis == Axis.horizontal ? (r) => r.left : (r) => r.top,
endGetter: axis == Axis.horizontal ? (r) => r.right : (r) => r.bottom,
Expand Down Expand Up @@ -94,6 +96,8 @@ class SimpleAutoScrollController extends ScrollController
@override
final double? suggestedRowHeight;
@override
final bool clampToMaxScrollExtent;
@override
final ViewportBoundaryGetter viewportBoundaryGetter;
@override
final AxisValueGetter beginGetter;
Expand All @@ -104,6 +108,7 @@ class SimpleAutoScrollController extends ScrollController
{double initialScrollOffset = 0.0,
bool keepScrollOffset = true,
this.suggestedRowHeight,
this.clampToMaxScrollExtent = true,
this.viewportBoundaryGetter = defaultViewportBoundaryGetter,
required this.beginGetter,
required this.endGetter,
Expand All @@ -122,6 +127,8 @@ class PageAutoScrollController extends PageController
@override
final double? suggestedRowHeight;
@override
final bool clampToMaxScrollExtent;
@override
final ViewportBoundaryGetter viewportBoundaryGetter;
@override
final AxisValueGetter beginGetter = (r) => r.left;
Expand All @@ -133,6 +140,7 @@ class PageAutoScrollController extends PageController
bool keepPage = true,
double viewportFraction = 1.0,
this.suggestedRowHeight,
this.clampToMaxScrollExtent = true,
this.viewportBoundaryGetter = defaultViewportBoundaryGetter,
AutoScrollController? copyTagsFrom,
String? debugLabel})
Expand All @@ -151,6 +159,7 @@ mixin AutoScrollControllerMixin on ScrollController
@override
final Map<int, AutoScrollTagState> tagMap = <int, AutoScrollTagState>{};
double? get suggestedRowHeight;
bool get clampToMaxScrollExtent;
ViewportBoundaryGetter get viewportBoundaryGetter;
AxisValueGetter get beginGetter;
AxisValueGetter get endGetter;
Expand Down Expand Up @@ -440,8 +449,9 @@ mixin AutoScrollControllerMixin on ScrollController
// physics are set to clamp. To prevent this, we limit the
// offset to not overshoot the extent in either direction.
targetOffset = targetOffset.clamp(
position.minScrollExtent, position.maxScrollExtent);

position.minScrollExtent,
clampToMaxScrollExtent ? position.maxScrollExtent : double.maxFinite,
);
await move(targetOffset);
} else {
final begin = _directionalOffsetToRevealInViewport(index, 0);
Expand Down