-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Closed
Labels
a: desktopRunning on desktopRunning on desktopf: gesturesflutter/packages/flutter/gestures repository.flutter/packages/flutter/gestures repository.found in release: 3.3Found to occur in 3.3Found to occur in 3.3found in release: 3.7Found to occur in 3.7Found to occur in 3.7frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work on
Description
While using the onPointerPanZoomUpdate instead of the onPointerSignal event for trackpad zooming the fling effect is not working.
Steps to Reproduce
Run a below-shared code snippet as mentioned, while performing mouse wheel zooming in the trackpad using the onPointerSignal event it gives scrollDelta value after some time lifting the finger up on the trackpad but in onPointerPanZoomUpdate it is not working as same.
- Run a sample in windows or macOS with the latest flutter SDK version (the fling effect is not working in onPointerPanZoomUpdate)
Code sample
import 'package: flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:vector_math/vector_math_64.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(),
home: const ZoomableWidget(),
);
}
}
class ZoomableWidget extends StatefulWidget {
const ZoomableWidget({Key? key}) : super(key: key);
@override
_ZoomableWidgetState createState() => _ZoomableWidgetState();
}
class _ZoomableWidgetState extends State<ZoomableWidget> {
double _scale = 1.0;
double _oldScale = 1.0;
Matrix4? transform = Matrix4.diagonal3(
Vector3(1.0.clamp(1.0, 5.0), 1.0.clamp(1.0, 5.0), 1.0.clamp(1.0, 5.0)));
@override
Widget build(BuildContext context) {
return Listener(
onPointerSignal: (PointerSignalEvent event) {
if (event is PointerScrollEvent) {
setState(() {
_scale = _oldScale + (event.scrollDelta.dy / 180);
print(_scale);
_oldScale = _scale;
});
}
},
child: Transform(
transform: //transform!,
Matrix4.diagonal3(Vector3(_scale.clamp(1.0, 5.0),
_scale.clamp(1.0, 5.0), _scale.clamp(1.0, 5.0))),
alignment: FractionalOffset.center,
child: const Image(image: AssetImage('images/owel.jpg')),
),
);
}
}- Sample with onPointerSignal event where filing effect is working.
Code sample
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:vector_math/vector_math_64.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(),
home: const ZoomableWidget(),
);
}
}
class ZoomableWidget extends StatefulWidget {
const ZoomableWidget({Key? key}) : super(key: key);
@override
_ZoomableWidgetState createState() => _ZoomableWidgetState();
}
class _ZoomableWidgetState extends State<ZoomableWidget> {
double _scale = 1.0;
double _oldScale = 1.0;
Matrix4? transform = Matrix4.diagonal3(
Vector3(1.0.clamp(1.0, 5.0), 1.0.clamp(1.0, 5.0), 1.0.clamp(1.0, 5.0)));
@override
Widget build(BuildContext context) {
return Listener(
onPointerPanZoomStart: (event) {
print('start');
},
onPointerPanZoomUpdate: (PointerPanZoomUpdateEvent event) {
event.position;
setState(() {
_scale = _oldScale + (event.panDelta.dy / 180);
print(_scale);
_oldScale = _scale;
});
},
onPointerPanZoomEnd: (event) {
print('end');
},
child: Transform(
transform: //transform!,
Matrix4.diagonal3(Vector3(_scale.clamp(1.0, 5.0),
_scale.clamp(1.0, 5.0), _scale.clamp(1.0, 5.0))),
alignment: FractionalOffset.center,
child: const Image(image: AssetImage('images/owel.jpg')),
),
);
}
}
Expected results:
This is an onPointerSignal event and the expected output

Metadata
Metadata
Assignees
Labels
a: desktopRunning on desktopRunning on desktopf: gesturesflutter/packages/flutter/gestures repository.flutter/packages/flutter/gestures repository.found in release: 3.3Found to occur in 3.3Found to occur in 3.3found in release: 3.7Found to occur in 3.7Found to occur in 3.7frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work on
