scrollOffsetOf method
Returns the scroll offset within the viewport for the given
scrollOffsetWithinChild
within the given child
.
The returned value is an estimate that assumes the slivers within the viewport do not change the layout extent in response to changes in their scroll offset.
Implementation
@override
double scrollOffsetOf(RenderSliver child, double scrollOffsetWithinChild) {
assert(
child.parent == this,
'The "child" argument must be a child of this RenderViewport.',
);
final growthDirection = child.constraints.growthDirection;
switch (growthDirection) {
case GrowthDirection.forward:
var scrollOffsetToChild = 0.0;
var current = center;
while (current != child) {
scrollOffsetToChild += current!.geometry!.scrollExtent;
current = childAfter(current);
}
return scrollOffsetToChild + scrollOffsetWithinChild;
case GrowthDirection.reverse:
var scrollOffsetToChild = 0.0;
var current = childBefore(center!);
while (current != child) {
scrollOffsetToChild -= current!.geometry!.scrollExtent;
current = childBefore(current);
}
return scrollOffsetToChild - scrollOffsetWithinChild;
}
}