observeSwitchShrinkWrap method

dynamic observeSwitchShrinkWrap()

Implementation

observeSwitchShrinkWrap() {
  ambiguate(WidgetsBinding.instance)?.addPostFrameCallback((_) {
    final ctx = observerController.fetchSliverContext();
    if (ctx == null) return;
    final obj = ObserverUtils.findRenderObject(ctx);
    if (obj is! RenderSliver) return;
    final constraints = ObserverUtils.sliverConstraints(obj);
    if (constraints == null) return;
    final viewportMainAxisExtent = constraints.viewportMainAxisExtent;
    final scrollExtent = obj.geometry?.scrollExtent ?? 0;
    if (viewportMainAxisExtent >= scrollExtent) {
      if (innerIsShrinkWrap) return;
      innerIsShrinkWrap = true;
      observerController.reattach();
      toRebuildScrollViewCallback?.call();
    } else {
      if (!innerIsShrinkWrap) return;
      innerIsShrinkWrap = false;
      observerController.reattach();
      toRebuildScrollViewCallback?.call();
    }
  });
}