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();
}