diff --git a/lib/main.dart b/lib/main.dart index aceee6a37..51d51838e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -264,38 +264,46 @@ class MyApp extends StatelessWidget { child: child!, ); if (Utils.isDesktop) { - return MouseBackDetector( - onTapDown: () { - if (SmartDialog.checkExist()) { - SmartDialog.dismiss(); - return; - } - - if (Get.isDialogOpen ?? Get.isBottomSheetOpen ?? false) { - Get.back(); - return; - } - - final plCtr = PlPlayerController.instance; - if (plCtr != null) { - if (plCtr.isFullScreen.value == true) { - plCtr - ..triggerFullScreen(status: false) - ..controlsLock.value = false; - return; - } - - if (plCtr.isDesktopPip) { - plCtr.exitDesktopPip().whenComplete( - () => plCtr.initialFocalPoint = Offset.zero, - ); - return; - } - } + void onBack() { + if (SmartDialog.checkExist()) { + SmartDialog.dismiss(); + return; + } + if (Get.isDialogOpen ?? Get.isBottomSheetOpen ?? false) { Get.back(); + return; + } + + final plCtr = PlPlayerController.instance; + if (plCtr != null) { + if (plCtr.isFullScreen.value == true) { + plCtr + ..triggerFullScreen(status: false) + ..controlsLock.value = false; + return; + } + + if (plCtr.isDesktopPip) { + plCtr.exitDesktopPip().whenComplete( + () => plCtr.initialFocalPoint = Offset.zero, + ); + return; + } + } + + Get.back(); + } + + return Shortcuts( + shortcuts: { + LogicalKeySet(LogicalKeyboardKey.escape): + VoidCallbackIntent(onBack), }, - child: child, + child: MouseBackDetector( + onTapDown: onBack, + child: child, + ), ); } return child; diff --git a/lib/pages/video/widgets/player_focus.dart b/lib/pages/video/widgets/player_focus.dart index ff60e503a..b58de1ae9 100644 --- a/lib/pages/video/widgets/player_focus.dart +++ b/lib/pages/video/widgets/player_focus.dart @@ -163,18 +163,6 @@ class PlayerFocus extends StatelessWidget { ..controlsLock.value = false; return true; - case LogicalKeyboardKey.escape: - if (plPlayerController.controlsLock.value) { - plPlayerController.onLockControl(false); - } else if (plPlayerController.isDesktopPip) { - plPlayerController.exitDesktopPip(); - } else if (isFullScreen) { - plPlayerController.triggerFullScreen(status: false); - } else { - Get.back(); - } - return true; - case LogicalKeyboardKey.keyD: if (plPlayerController.isLive) { final newVal = !plPlayerController.enableShowLiveDanmaku.value;