receiveOffset method

dynamic receiveOffset(
  1. double offset
)

Implementation

receiveOffset(double offset) {
  bool upward = offset > _lastOffset;
  _lastOffset = offset;

  if (offset < 0) {
    if (_isCompleted && _isInProcess) return;

    if (_isInProcess == false && _isUserAction) {
      _isInProcess = true;
    }

    if (_headerState == XBRefreshState.loading ||
        _headerState == XBRefreshState.complete) {
      return;
    }

    double fitOffset = 0 - offset;
    if (fitOffset <= 0) {
      return;
    }
    double top = -widget.headerLoadingOffset + fitOffset;
    if (top > 0) {
      top = 0;
    }
    setState(() {
      _headerTopPadding = top;
    });

    if (upward) {
      if (_isUserAction) {
        _headerUserActionRun(fitOffset);
      } else {
        setState(() {
          _headerState = XBRefreshState.before;
        });
      }
    } else {
      if (_isUserAction) {
        _headerUserActionRun(fitOffset);
      }
    }
  } else {
    _endProcessIfPossible();
  }
}