TrackpadListener functional in Photo Gallery (for testing). Will apply elsewhere.

This commit is contained in:
Alex Garneau
2025-03-18 10:28:06 -06:00
parent 6e0d4e2d92
commit 7d83cdde1e
2 changed files with 27 additions and 24 deletions

View File

@ -1,11 +1,11 @@
import 'package:flutter/gestures.dart'; import 'package:flutter/gestures.dart';
import 'package:wonders/common_libs.dart'; import 'package:wonders/common_libs.dart';
class TrackpadReader extends StatefulWidget { class TrackpadListener extends StatefulWidget {
static const int swipeSensitivity = 15; static const int swipeSensitivity = 15;
static const int scrollSensitivity = 100; static const int scrollSensitivity = 100;
const TrackpadReader({ const TrackpadListener({
super.key, super.key,
required this.child, required this.child,
this.swipeUp, this.swipeUp,
@ -29,30 +29,21 @@ class TrackpadReader extends StatefulWidget {
final void Function()? scrollRight; final void Function()? scrollRight;
@override @override
State<TrackpadReader> createState() => _TrackpadReaderState(); State<TrackpadListener> createState() => _TrackpadListenerState();
} }
class _TrackpadReaderState extends State<TrackpadReader> { class _TrackpadListenerState extends State<TrackpadListener> {
void _handleTrackpadEvent(PointerSignalEvent event) { void _handleTrackpadEvent(PointerSignalEvent event) {
GestureBinding.instance.pointerSignalResolver.register(event, (PointerSignalEvent event) { GestureBinding.instance.pointerSignalResolver.register(event, (PointerSignalEvent event) {
if (event is PointerScrollEvent && event.kind == PointerDeviceKind.trackpad) { if (event is PointerScrollEvent && event.kind == PointerDeviceKind.trackpad) {
debugPrint(' - TrackpadReader: ${event}'); if (event.scrollDelta.dy > TrackpadListener.swipeSensitivity) {
debugPrint(' - TrackpadReader A: ${event.scrollDelta}');
debugPrint(' - TrackpadReader B: ${event.platformData}');
debugPrint(' - TrackpadReader C: ${event.buttons}');
debugPrint(' - TrackpadReader D: ${event.delta}');
debugPrint(' - TrackpadReader E: ${event.device}');
debugPrint(' - TrackpadReader F: ${event.kind}');
debugPrint(' - TrackpadReader G: ${event.timeStamp}');
debugPrint(' - TrackpadReader H: ${event.size}');
if (event.scrollDelta.dy > TrackpadReader.swipeSensitivity) {
widget.swipeUp?.call();
} else if (event.scrollDelta.dy < TrackpadReader.swipeSensitivity) {
widget.swipeDown?.call(); widget.swipeDown?.call();
} else if (event.scrollDelta.dy < -TrackpadListener.swipeSensitivity) {
widget.swipeUp?.call();
} }
if (event.scrollDelta.dx > TrackpadReader.swipeSensitivity) { if (event.scrollDelta.dx > TrackpadListener.swipeSensitivity) {
widget.swipeLeft?.call(); widget.swipeLeft?.call();
} else if (event.scrollDelta.dx < TrackpadReader.swipeSensitivity) { } else if (event.scrollDelta.dx < -TrackpadListener.swipeSensitivity) {
widget.swipeRight?.call(); widget.swipeRight?.call();
} }
} }

View File

@ -5,7 +5,7 @@ import 'package:wonders/common_libs.dart';
import 'package:wonders/logic/data/unsplash_photo_data.dart'; import 'package:wonders/logic/data/unsplash_photo_data.dart';
import 'package:wonders/ui/common/controls/app_loading_indicator.dart'; import 'package:wonders/ui/common/controls/app_loading_indicator.dart';
import 'package:wonders/ui/common/controls/eight_way_swipe_detector.dart'; import 'package:wonders/ui/common/controls/eight_way_swipe_detector.dart';
import 'package:wonders/ui/common/controls/trackpad_reader.dart'; import 'package:wonders/ui/common/controls/trackpad_listener.dart';
import 'package:wonders/ui/common/fullscreen_keyboard_listener.dart'; import 'package:wonders/ui/common/fullscreen_keyboard_listener.dart';
import 'package:wonders/ui/common/hidden_collectible.dart'; import 'package:wonders/ui/common/hidden_collectible.dart';
import 'package:wonders/ui/common/ignore_pointer.dart'; import 'package:wonders/ui/common/ignore_pointer.dart';
@ -170,11 +170,23 @@ class _PhotoGalleryState extends State<PhotoGallery> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return TrackpadReader( return TrackpadListener(
swipeLeft: () => _handleSwipe(Offset(-1, 0)), swipeLeft: () {
swipeRight: () => _handleSwipe(Offset(1, 0)), debugPrint('LEFT!');
swipeDown: () => _handleSwipe(Offset(0, -1)), _handleSwipe(Offset(-1, 0));
swipeUp: () => _handleSwipe(Offset(0, 1)), },
swipeRight: () {
debugPrint('RIGHT!');
_handleSwipe(Offset(1, 0));
},
swipeDown: () {
debugPrint('DOWN!');
_handleSwipe(Offset(0, -1));
},
swipeUp: () {
debugPrint('UP!');
_handleSwipe(Offset(0, 1));
},
child: FullscreenKeyboardListener( child: FullscreenKeyboardListener(
onKeyDown: _handleKeyDown, onKeyDown: _handleKeyDown,
child: ValueListenableBuilder<List<String>>( child: ValueListenableBuilder<List<String>>(