fix: back improvements

This commit is contained in:
edde746
2026-01-24 21:40:02 +01:00
parent b7ec24c2c1
commit 0fc2708a51
15 changed files with 268 additions and 133 deletions
+23 -19
View File
@@ -6,6 +6,7 @@ import 'package:provider/provider.dart';
import 'package:dio/dio.dart';
import '../../focus/dpad_navigator.dart';
import '../../focus/input_mode_tracker.dart';
import '../../focus/key_event_utils.dart';
import '../../services/gamepad_service.dart';
import '../../../services/plex_client.dart';
import '../../models/plex_library.dart';
@@ -1223,10 +1224,30 @@ class _LibraryManagementSheetState extends State<_LibraryManagementSheet> {
}
KeyEventResult _handleKeyEvent(FocusNode node, KeyEvent event) {
if (event is! KeyDownEvent) return KeyEventResult.ignored;
final key = event.logicalKey;
final backResult = handleBackKeyAction(event, () {
if (_movingIndex != null) {
// Cancel move - restore original position
setState(() {
if (_originalOrder != null) {
_tempLibraries = List.from(_originalOrder!);
}
_focusedIndex = _originalIndex ?? 0;
_movingIndex = null;
_originalIndex = null;
_originalOrder = null;
});
} else {
Navigator.pop(context);
}
});
if (backResult != KeyEventResult.ignored) {
return backResult;
}
if (event is! KeyDownEvent) return KeyEventResult.ignored;
if (_movingIndex != null) {
// Move mode - arrows reorder the item
if (key.isUpKey && _movingIndex! > 0) {
@@ -1257,19 +1278,6 @@ class _LibraryManagementSheetState extends State<_LibraryManagementSheet> {
});
return KeyEventResult.handled;
}
if (key.isBackKey) {
// Cancel move - restore original position
setState(() {
if (_originalOrder != null) {
_tempLibraries = List.from(_originalOrder!);
}
_focusedIndex = _originalIndex ?? 0;
_movingIndex = null;
_originalIndex = null;
_originalOrder = null;
});
return KeyEventResult.handled;
}
} else {
// Navigation mode
if (key.isUpKey && _focusedIndex > 0) {
@@ -1315,10 +1323,6 @@ class _LibraryManagementSheetState extends State<_LibraryManagementSheet> {
}
return KeyEventResult.handled;
}
if (key.isBackKey) {
Navigator.pop(context);
return KeyEventResult.handled;
}
}
return KeyEventResult.ignored;