setThumbDragActive method
Marks whether an attached scrollbar thumb drag is active.
Implementation
void setThumbDragActive(bool active) {
if (_thumbDragActive == active) return;
_thumbDragActive = active;
if (!active && _deferredContentExtent != null) {
assert(
_deferredContentExtent! >= _contentExtent,
'setThumbDragActive: deferred content extent $_deferredContentExtent '
'< current content extent $_contentExtent',
);
final target = math.max(_contentExtent, _deferredContentExtent!);
_deferredContentExtent = null;
_contentFrozen = true;
if (target != _contentExtent) {
final beforeContent = _contentExtent;
final beforeOffset = _offset;
_contentExtent = target;
if (autoScrollToBottom && _contentExtent > _viewportExtent) {
autoScrollToBottom = false;
_offset = maxOffset;
}
final clamped = _clampOffset();
_traceScroll(
'widget_scroll.metrics.deferred '
'content=$beforeContent->$_contentExtent '
'offset=$beforeOffset->$_offset max=$maxOffset '
'clamped=$clamped',
);
}
assert(
_contentExtent >= 0,
'setThumbDragActive: content extent must be non-negative',
);
}
}