diff --git a/lib/pages/live_room/view.dart b/lib/pages/live_room/view.dart index 73253b5ba..a2516401f 100644 --- a/lib/pages/live_room/view.dart +++ b/lib/pages/live_room/view.dart @@ -181,22 +181,23 @@ class _LiveRoomPageState extends State @override Widget build(BuildContext context) { - if (Platform.isAndroid) { - if (Floating().isPipMode) { - return videoPlayerPanel( - isFullScreen, - width: maxWidth, - height: maxHeight, - isPipMode: true, - needDm: !plPlayerController.pipNoDanmaku, - ); - } + if (Platform.isAndroid && Floating().isPipMode) { + return videoPlayerPanel( + isFullScreen, + width: maxWidth, + height: maxHeight, + isPipMode: true, + needDm: !plPlayerController.pipNoDanmaku, + ); } - return PlayerFocus( - plPlayerController: plPlayerController, - onSendDanmaku: _liveRoomController.onSendDanmaku, - child: childWhenDisabled, - ); + if (plPlayerController.keyboardControl) { + return PlayerFocus( + plPlayerController: plPlayerController, + onSendDanmaku: _liveRoomController.onSendDanmaku, + child: childWhenDisabled, + ); + } + return childWhenDisabled; } Widget videoPlayerPanel( diff --git a/lib/pages/setting/models/play_settings.dart b/lib/pages/setting/models/play_settings.dart index c733f69f9..15638553f 100644 --- a/lib/pages/setting/models/play_settings.dart +++ b/lib/pages/setting/models/play_settings.dart @@ -130,6 +130,13 @@ List get playSettings => [ } }, ), + const SettingsModel( + settingsType: SettingsType.sw1tch, + title: '启用键盘控制', + leading: Icon(Icons.keyboard_alt_outlined), + setKey: SettingBoxKey.keyboardControl, + defaultVal: true, + ), const SettingsModel( settingsType: SettingsType.sw1tch, title: '显示 SuperChat', diff --git a/lib/pages/video/view.dart b/lib/pages/video/view.dart index 424217ebb..bca9895a2 100644 --- a/lib/pages/video/view.dart +++ b/lib/pages/video/view.dart @@ -1484,21 +1484,23 @@ class _VideoDetailPageVState extends State } else { child = autoChoose(childWhenDisabledAlmostSquare); } - child = PlayerFocus( - plPlayerController: videoDetailController.plPlayerController, - introController: videoDetailController.isUgc - ? ugcIntroController - : pgcIntroController, - onSendDanmaku: videoDetailController.showShootDanmakuSheet, - canPlay: () { - if (videoDetailController.autoPlay.value) { - return true; - } - handlePlay(); - return false; - }, - child: child, - ); + if (videoDetailController.plPlayerController.keyboardControl) { + child = PlayerFocus( + plPlayerController: videoDetailController.plPlayerController, + introController: videoDetailController.isUgc + ? ugcIntroController + : pgcIntroController, + onSendDanmaku: videoDetailController.showShootDanmakuSheet, + canPlay: () { + if (videoDetailController.autoPlay.value) { + return true; + } + handlePlay(); + return false; + }, + child: child, + ); + } return videoDetailController.plPlayerController.darkVideoPage ? Theme(data: themeData, child: child) : child; diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart index e1a11664e..ddf77f800 100644 --- a/lib/plugin/pl_player/controller.dart +++ b/lib/plugin/pl_player/controller.dart @@ -335,6 +335,7 @@ class PlPlayerController { late final showDmChart = Pref.showDmChart; late final showFsScreenshotBtn = Pref.showFsScreenshotBtn; late final showFsLockBtn = Pref.showFsLockBtn; + late final keyboardControl = Pref.keyboardControl; late final bool autoExitFullscreen = Pref.autoExitFullscreen; late final bool autoPlayEnable = Pref.autoPlayEnable; diff --git a/lib/utils/storage_key.dart b/lib/utils/storage_key.dart index df57f4cb4..7f81b4047 100644 --- a/lib/utils/storage_key.dart +++ b/lib/utils/storage_key.dart @@ -24,7 +24,8 @@ abstract class SettingBoxKey { enableAutoEnter = 'enableAutoEnter', enableAutoExit = 'enableAutoExit', enableOnlineTotal = 'enableOnlineTotal', - showSuperChat = 'showSuperChat'; + showSuperChat = 'showSuperChat', + keyboardControl = 'keyboardControl'; static const String enableVerticalExpand = 'enableVerticalExpand', feedBackEnable = 'feedBackEnable', diff --git a/lib/utils/storage_pref.dart b/lib/utils/storage_pref.dart index c8a150869..8d3e39448 100644 --- a/lib/utils/storage_pref.dart +++ b/lib/utils/storage_pref.dart @@ -829,4 +829,7 @@ abstract class Pref { static bool get isWindowMaximized => _setting.get(SettingBoxKey.isWindowMaximized, defaultValue: false); + + static bool get keyboardControl => + _setting.get(SettingBoxKey.keyboardControl, defaultValue: true); }