scrollByPixels method

  1. @override
Future<bool> scrollByPixels(
  1. double pixels
)
override

Coarse-step pixel approximation.

Implementation

@override
Future<bool> scrollByPixels(double pixels) async {
  final mag = pixels.abs();
  if (mag < 1) return false;
  final startNode = _resolveNode();
  if (startNode == null) return false;
  final startPos = _scrollPositionFromData(startNode.getSemanticsData());
  final pageHint = _estimatePageStep(startNode);
  if (pageHint != null && mag < pageHint * 0.7) {
    return false;
  }
  final forward = pixels > 0;
  var anyAdvanced = false;
  for (var stepsRemaining = 4; stepsRemaining > 0; stepsRemaining--) {
    final advanced = forward ? await stepForward() : await stepBackward();
    if (!advanced) break;
    anyAdvanced = true;
    if (startPos == null) continue;
    final snap = captureSnapshot();
    if (snap == null) continue;
    final post = positionFromSnapshot(snap);
    if (post != null && (post - startPos).abs() + 1 >= mag) break;
  }
  return anyAdvanced;
}