mirror of
https://github.com/venera-app/venera.git
synced 2025-09-27 07:47:24 +00:00
Improved page switching via keyboard. Close #293
This commit is contained in:
@@ -298,6 +298,8 @@ class _GalleryModeState extends State<_GalleryMode>
|
|||||||
photoViewController.animateScale?.call(target);
|
photoViewController.animateScale?.call(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Timer? keyRepeatTimer;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void handleKeyEvent(KeyEvent event) {
|
void handleKeyEvent(KeyEvent event) {
|
||||||
bool? forward;
|
bool? forward;
|
||||||
@@ -320,7 +322,11 @@ class _GalleryModeState extends State<_GalleryMode>
|
|||||||
event.logicalKey == LogicalKeyboardKey.arrowRight) {
|
event.logicalKey == LogicalKeyboardKey.arrowRight) {
|
||||||
forward = false;
|
forward = false;
|
||||||
}
|
}
|
||||||
if (event is KeyDownEvent || event is KeyRepeatEvent) {
|
if (event is KeyDownEvent) {
|
||||||
|
if (keyRepeatTimer != null) {
|
||||||
|
keyRepeatTimer!.cancel();
|
||||||
|
keyRepeatTimer = null;
|
||||||
|
}
|
||||||
if (forward == true) {
|
if (forward == true) {
|
||||||
controller.nextPage(
|
controller.nextPage(
|
||||||
duration: const Duration(milliseconds: 200),
|
duration: const Duration(milliseconds: 200),
|
||||||
@@ -333,6 +339,31 @@ class _GalleryModeState extends State<_GalleryMode>
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (event is KeyRepeatEvent && keyRepeatTimer == null) {
|
||||||
|
keyRepeatTimer = Timer.periodic(
|
||||||
|
const Duration(milliseconds: 100),
|
||||||
|
(timer) {
|
||||||
|
if (!mounted) {
|
||||||
|
timer.cancel();
|
||||||
|
return;
|
||||||
|
} else if (forward == true) {
|
||||||
|
controller.nextPage(
|
||||||
|
duration: const Duration(milliseconds: 100),
|
||||||
|
curve: Curves.ease,
|
||||||
|
);
|
||||||
|
} else if (forward == false) {
|
||||||
|
controller.previousPage(
|
||||||
|
duration: const Duration(milliseconds: 100),
|
||||||
|
curve: Curves.ease,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (event is KeyUpEvent && keyRepeatTimer != null) {
|
||||||
|
keyRepeatTimer!.cancel();
|
||||||
|
keyRepeatTimer = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
Reference in New Issue
Block a user