onScroll method

void onScroll(
  1. ScrollNotification notification
)

Implementation

void onScroll(ScrollNotification notification) {
  _contexts.forEach((WidgetModel item) {
    final RenderObject? renderObject = item.context!.findRenderObject();

    if (renderObject == null || !renderObject.attached) {
      return;
    }

    final RenderAbstractViewport viewport =
        RenderAbstractViewport.of(renderObject)!;
    final double vpHeight = notification.metrics.viewportDimension;
    final RevealedOffset vpOffset =
        viewport.getOffsetToReveal(renderObject, 0.0);
    final Size size = renderObject.semanticBounds.size;
    final double deltaTop = vpOffset.offset - notification.metrics.pixels;
    final double deltaBottom = deltaTop + size.height;
    bool myViewport = false;
    myViewport = scalePosition!(deltaTop, deltaBottom, vpHeight);

    if (myViewport) {
      if (!_currentScalePositionId.contains(item.id)) {
        _currentScalePositionId.add(item.id);
        notifyListeners();
      }
    } else {
      if (_currentScalePositionId.contains(item.id)) {
        _currentScalePositionId.remove(item.id);
        notifyListeners();
      }
    }
  });
}