onScroll method
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();
}
}
});
}