setThumbDragActive method

void setThumbDragActive(
  1. bool active
)

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',
    );
  }
}