scrollByPixels method
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;
}