track method
bool
track(
- Element element, {
- OnElementEvent? onEnterViewport,
- OnElementEvent? onLeaveViewport,
- bool periodicTracking = false,
Tracks element if it's visible in viewport.
Useful to track when an element is visible for the 1st time, usually due scrolling.
element The element to track
onEnterViewport Callback to call when element shows up in viewport.
onLeaveViewport Callback to call when element leaves viewport.
periodicTracking If true this tracking will continue after first event.
Implementation
bool track(Element element,
{OnElementEvent? onEnterViewport,
OnElementEvent? onLeaveViewport,
bool periodicTracking = false}) {
if ((onEnterViewport == null && onLeaveViewport == null)) {
return false;
}
var initValue = _trackElementValue
.track<bool>(element, (elem) => isInViewport(elem), (elem, show) {
if (show!) {
_trackElementValue.setProperty(element, 'viewport', true);
if (onEnterViewport != null) onEnterViewport(element);
return periodicTracking || onLeaveViewport != null;
} else {
var alreadyViewed =
_trackElementValue.getProperty(element, 'viewport') ?? false;
if (onLeaveViewport != null) onLeaveViewport(element);
return !(alreadyViewed as bool) || periodicTracking;
}
});
return initValue == true;
}