ensureVisibleContextOffset static method
Future<void>
ensureVisibleContextOffset(
- BuildContext context, {
- double alignment = 0.0,
- Duration duration = Duration.zero,
- Curve curve = Curves.ease,
- ScrollPositionAlignmentPolicy alignmentPolicy = ScrollPositionAlignmentPolicy.explicit,
- double offset = 0.0,
a copy of the regular ensureVisible
but with an offset parameter
for more hand precision scrolling.
Implementation
static Future<void> ensureVisibleContextOffset(
BuildContext context, {
double alignment = 0.0,
Duration duration = Duration.zero,
Curve curve = Curves.ease,
ScrollPositionAlignmentPolicy alignmentPolicy =
ScrollPositionAlignmentPolicy.explicit,
double offset = 0.0,
}) {
final List<Future<void>> futures = <Future<void>>[];
RenderObject? targetRenderObject;
ScrollableState? scrollable = Scrollable.of(context);
while (scrollable != null) {
futures.add(scrollable.position.ensureVisibleOffset(
context.findRenderObject()!,
alignment: alignment,
duration: duration,
curve: curve,
alignmentPolicy: alignmentPolicy,
targetRenderObject: targetRenderObject,
offset: offset,
));
targetRenderObject = targetRenderObject ?? context.findRenderObject();
context = scrollable.context;
scrollable = Scrollable.of(context);
}
if (futures.isEmpty || duration == Duration.zero)
return Future<void>.value();
if (futures.length == 1) return futures.single;
return Future.wait<void>(futures).then<void>((List<void> _) => null);
}