Aleksei
Committed by David PHAM-VAN

Update cursors on zoom mode

@@ -245,7 +245,7 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom> @@ -245,7 +245,7 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom>
245 preview = index; 245 preview = index;
246 transformationController.value.setIdentity(); 246 transformationController.value.setIdentity();
247 if (kIsWeb) { 247 if (kIsWeb) {
248 - _mouseCursor = SystemMouseCursors.grab; 248 + _updateCursor(SystemMouseCursors.grab);
249 } 249 }
250 }); 250 });
251 _zoomChanged(); 251 _zoomChanged();
@@ -285,32 +285,24 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom> @@ -285,32 +285,24 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom>
285 285
286 Widget _zoomPreview() { 286 Widget _zoomPreview() {
287 final zoomPreview = GestureDetector( 287 final zoomPreview = GestureDetector(
288 - onTapDown: kIsWeb  
289 - ? (_) {  
290 - setState(() {  
291 - _mouseCursor = SystemMouseCursors.grabbing;  
292 - });  
293 - }  
294 - : null,  
295 - onTapUp: kIsWeb  
296 - ? (_) {  
297 - setState(() {  
298 - _mouseCursor = SystemMouseCursors.grab;  
299 - });  
300 - }  
301 - : null,  
302 onDoubleTap: () { 288 onDoubleTap: () {
303 setState(() { 289 setState(() {
304 preview = null; 290 preview = null;
305 if (kIsWeb) { 291 if (kIsWeb) {
306 - _mouseCursor = MouseCursor.defer; 292 + _updateCursor(MouseCursor.defer);
307 } 293 }
308 }); 294 });
309 _zoomChanged(); 295 _zoomChanged();
310 }, 296 },
  297 + onLongPressCancel:
  298 + kIsWeb ? () => _updateCursor(SystemMouseCursors.grab) : null,
  299 + onLongPressDown:
  300 + kIsWeb ? (_) => _updateCursor(SystemMouseCursors.grabbing) : null,
311 child: InteractiveViewer( 301 child: InteractiveViewer(
312 transformationController: transformationController, 302 transformationController: transformationController,
313 maxScale: 5, 303 maxScale: 5,
  304 + onInteractionEnd:
  305 + kIsWeb ? (_) => _updateCursor(SystemMouseCursors.grab) : null,
314 child: Center( 306 child: Center(
315 child: PdfPreviewPage( 307 child: PdfPreviewPage(
316 pageData: pages[preview!], 308 pageData: pages[preview!],
@@ -321,12 +313,23 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom> @@ -321,12 +313,23 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom>
321 ), 313 ),
322 ); 314 );
323 return kIsWeb 315 return kIsWeb
324 - ? MouseRegion(cursor: _mouseCursor, child: zoomPreview) 316 + ? MouseRegion(
  317 + cursor: _mouseCursor,
  318 + child: zoomPreview,
  319 + )
325 : zoomPreview; 320 : zoomPreview;
326 } 321 }
327 322
328 void _zoomChanged() => widget.onZoomChanged?.call(preview != null); 323 void _zoomChanged() => widget.onZoomChanged?.call(preview != null);
329 324
  325 + void _updateCursor(MouseCursor mouseCursor) {
  326 + if (mouseCursor != _mouseCursor) {
  327 + setState(() {
  328 + _mouseCursor = mouseCursor;
  329 + });
  330 + }
  331 + }
  332 +
330 @override 333 @override
331 Widget build(BuildContext context) { 334 Widget build(BuildContext context) {
332 Widget page; 335 Widget page;