Make Scrollable's free scroll initial velocity matches that of iOS (#60501)

diff --git a/dev/benchmarks/microbenchmarks/README.md b/dev/benchmarks/microbenchmarks/README.md
index eda8bae..82f0ecb 100644
--- a/dev/benchmarks/microbenchmarks/README.md
+++ b/dev/benchmarks/microbenchmarks/README.md
@@ -5,7 +5,7 @@
 these:
 
 ```
-flutter run --release lib/gestures/velocity_tracker_data.dart
+flutter run --release lib/gestures/velocity_tracker_bench.dart
 flutter run --release lib/gestures/gesture_detector_bench.dart
 flutter run --release lib/stocks/animation_bench.dart
 flutter run --release lib/stocks/build_bench.dart
diff --git a/dev/benchmarks/microbenchmarks/lib/gestures/velocity_tracker_bench.dart b/dev/benchmarks/microbenchmarks/lib/gestures/velocity_tracker_bench.dart
index cfd1546..b4b7e06 100644
--- a/dev/benchmarks/microbenchmarks/lib/gestures/velocity_tracker_bench.dart
+++ b/dev/benchmarks/microbenchmarks/lib/gestures/velocity_tracker_bench.dart
@@ -11,26 +11,31 @@
 
 void main() {
   assert(false, "Don't run benchmarks in checked mode! Use 'flutter run --release'.");
-  final VelocityTracker tracker = VelocityTracker();
-  final Stopwatch watch = Stopwatch();
-  print('Velocity tracker benchmark...');
-  watch.start();
-  for (int i = 0; i < _kNumIters; i += 1) {
-    for (final PointerEvent event in velocityEventData) {
-      if (event is PointerDownEvent || event is PointerMoveEvent)
-        tracker.addPosition(event.timeStamp, event.position);
-      if (event is PointerUpEvent)
-        tracker.getVelocity();
-    }
-  }
-  watch.stop();
-
   final BenchmarkResultPrinter printer = BenchmarkResultPrinter();
-  printer.addResult(
-    description: 'Velocity tracker',
-    value: watch.elapsedMicroseconds / _kNumIters,
-    unit: 'µs per iteration',
-    name: 'velocity_tracker_iteration',
-  );
+  final List<VelocityTracker> trackers = <VelocityTracker>[VelocityTracker(), IOSScrollViewFlingVelocityTracker()];
+  final Stopwatch watch = Stopwatch();
+
+  for (final VelocityTracker tracker in trackers) {
+    final String trackerType = tracker.runtimeType.toString();
+    print('$trackerType benchmark...');
+    watch.reset();
+    watch.start();
+    for (int i = 0; i < _kNumIters; i += 1) {
+      for (final PointerEvent event in velocityEventData) {
+        if (event is PointerDownEvent || event is PointerMoveEvent)
+          tracker.addPosition(event.timeStamp, event.position);
+        if (event is PointerUpEvent)
+          tracker.getVelocity();
+      }
+    }
+    watch.stop();
+    printer.addResult(
+      description: 'Velocity tracker: $trackerType',
+      value: watch.elapsedMicroseconds / _kNumIters,
+      unit: 'µs per iteration',
+      name: 'velocity_tracker_iteration_$trackerType',
+    );
+  }
+
   printer.printToStdout();
 }