-
yakagami authored
This PR adds the ability to get the `sourceTimeStamp` from `ScaleUpdateDetails` in a `GestureScaleUpdateCallback` like so: ```dart onScaleUpdate: (ScaleUpdateDetails details){ print(details.sourceTimeStamp); } ``` `sourceTimeStamp` is necessary when tracking velocity eg. ```dart VelocityTracker tracker = VelocityTracker.withKind(PointerDeviceKind.touch); ///... onScaleUpdate: (ScaleUpdateDetails details){ tracker.addPosition(details.sourceTimeStamp!, details.focalPoint); } ``` The docs say: >Having both a pan gesture recognizer and a scale gesture recognizer is redundant; scale is a superset of pan. Just use the scale gesture recognizer. Currently this is not entirely accurate, and should be fixed, as noted in https://github.com/flutter/flutter/issues/43833#issuecomment-548133779. This PR does not add `sourceTimeStamp` to `ScaleStartDetails` because it is more involved. Specifically, `ScaleStartDetails` can be created in `acceptGesture` which does not have access to the `PointerEvent` to get the `event.timeStamp` (https://github.com/flutter/flutter/blob/54fa25543243e3bf31af6af0c1fef6adabc1d5c1/packages/flutter/lib/src/gestures/scale.dart#L730C5-L730C5). fixes https://github.com/flutter/flutter/issues/135873. See also https://github.com/flutter/flutter/issues/43833 which added delta and https://github.com/flutter/flutter/issues/49025 which added `numPointers` to `ScaleUpdateDetails` for the reason given above. `sourceTimeStamp` should probably be added to `ScaleStartDetails` as well because it exists in `DragStartDetails` and therefore in `onPanStart`. I am not sure how to add tests for this, any input about this PR would be appreciated. - [] All existing and new tests are passing.