calcOverlap method
double?
calcOverlap({
- required GlobalKey<
State< nestedScrollViewKey,StatefulWidget> > - required BuildContext sliverContext,
Calculate the overlap for the body sliver.
Implementation
double? calcOverlap({
required GlobalKey nestedScrollViewKey,
required BuildContext sliverContext,
}) {
final nestedScrollViewCtx = nestedScrollViewKey.currentContext;
if (nestedScrollViewCtx == null) return null;
// If the sliver of ctx is headerSliver, just return null and use the
// default overlap.
if (!bodySliverContexts.contains(sliverContext)) return null;
// Get SliverFillRemaining
final remainingSliverContext = fetchRemainingSliverContext(
nestedScrollViewKey: nestedScrollViewKey,
);
if (remainingSliverContext == null || remainingSliverRenderObj == null) {
return null;
}
/// Calculate the offset of the sliver corresponding to sliverContext
/// relative to SliverFillRemaining.
final offset = ObserverUtils.localToGlobal(
context: sliverContext,
point: Offset.zero,
ancestor: remainingSliverContext,
);
if (offset == null) return null;
final remainingContextOverlap =
remainingSliverRenderObj!.constraints.overlap;
final sliverContextExtraOverlap =
(remainingContextOverlap - offset.dy).clamp(0, double.infinity);
var _obj = ObserverUtils.findRenderObject(sliverContext);
if (_obj is! RenderSliverMultiBoxAdaptor) return null;
return sliverContextExtraOverlap + _obj.constraints.overlap;
}