pause on minimize

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-09-27 15:04:15 +08:00
parent 670f788558
commit 7fedfb8963
5 changed files with 52 additions and 1 deletions

View File

@@ -59,6 +59,8 @@ class MainController extends GetxController
late bool directExitOnBack = Pref.directExitOnBack; late bool directExitOnBack = Pref.directExitOnBack;
late bool minimizeOnExit = Pref.minimizeOnExit; late bool minimizeOnExit = Pref.minimizeOnExit;
late bool pauseOnMinimize = Pref.pauseOnMinimize;
late bool isPlaying = false;
static const _period = 5 * 60 * 1000; static const _period = 5 * 60 * 1000;
late int _lastSelectTime = 0; late int _lastSelectTime = 0;

View File

@@ -9,6 +9,8 @@ import 'package:PiliPlus/models/common/nav_bar_config.dart';
import 'package:PiliPlus/pages/home/view.dart'; import 'package:PiliPlus/pages/home/view.dart';
import 'package:PiliPlus/pages/main/controller.dart'; import 'package:PiliPlus/pages/main/controller.dart';
import 'package:PiliPlus/pages/mine/controller.dart'; import 'package:PiliPlus/pages/mine/controller.dart';
import 'package:PiliPlus/plugin/pl_player/controller.dart';
import 'package:PiliPlus/plugin/pl_player/models/play_status.dart';
import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/app_scheme.dart';
import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/context_ext.dart';
import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/extension.dart';
@@ -131,6 +133,7 @@ class _MainAppState extends State<MainApp>
void onWindowClose() { void onWindowClose() {
if (_mainController.minimizeOnExit) { if (_mainController.minimizeOnExit) {
windowManager.hide(); windowManager.hide();
_onHideWindow();
} else { } else {
_onClose(); _onClose();
} }
@@ -144,11 +147,40 @@ class _MainAppState extends State<MainApp>
} }
} }
@override
void onWindowMinimize() {
_onHideWindow();
}
@override
void onWindowRestore() {
_onShowWindow();
}
void _onHideWindow() {
if (_mainController.pauseOnMinimize) {
_mainController.isPlaying =
PlPlayerController.instance?.playerStatus.status.value ==
PlayerStatus.playing;
PlPlayerController.pauseIfExists();
}
}
void _onShowWindow() {
if (_mainController.pauseOnMinimize) {
if (_mainController.isPlaying) {
PlPlayerController.playIfExists();
}
}
}
@override @override
Future<void> onTrayIconMouseDown() async { Future<void> onTrayIconMouseDown() async {
if (await windowManager.isVisible()) { if (await windowManager.isVisible()) {
_onHideWindow();
windowManager.hide(); windowManager.hide();
} else { } else {
_onShowWindow();
windowManager.show(); windowManager.show();
} }
} }

View File

@@ -3,6 +3,7 @@ import 'dart:io';
import 'package:PiliPlus/common/widgets/custom_icon.dart'; import 'package:PiliPlus/common/widgets/custom_icon.dart';
import 'package:PiliPlus/models/common/settings_type.dart'; import 'package:PiliPlus/models/common/settings_type.dart';
import 'package:PiliPlus/models/common/video/subtitle_pref_type.dart'; import 'package:PiliPlus/models/common/video/subtitle_pref_type.dart';
import 'package:PiliPlus/pages/main/controller.dart';
import 'package:PiliPlus/pages/setting/models/model.dart'; import 'package:PiliPlus/pages/setting/models/model.dart';
import 'package:PiliPlus/pages/setting/widgets/select_dialog.dart'; import 'package:PiliPlus/pages/setting/widgets/select_dialog.dart';
import 'package:PiliPlus/plugin/pl_player/models/bottom_progress_behavior.dart'; import 'package:PiliPlus/plugin/pl_player/models/bottom_progress_behavior.dart';
@@ -130,6 +131,18 @@ List<SettingsModel> get playSettings => [
} }
}, },
), ),
SettingsModel(
settingsType: SettingsType.sw1tch,
title: '最小化时暂停/还原时播放',
leading: const Icon(Icons.pause_circle_outline),
setKey: SettingBoxKey.pauseOnMinimize,
defaultVal: false,
onChanged: (value) {
try {
Get.find<MainController>().pauseOnMinimize = value;
} catch (_) {}
},
),
const SettingsModel( const SettingsModel(
settingsType: SettingsType.sw1tch, settingsType: SettingsType.sw1tch,
title: '启用键盘控制', title: '启用键盘控制',

View File

@@ -25,7 +25,8 @@ abstract class SettingBoxKey {
enableAutoExit = 'enableAutoExit', enableAutoExit = 'enableAutoExit',
enableOnlineTotal = 'enableOnlineTotal', enableOnlineTotal = 'enableOnlineTotal',
showSuperChat = 'showSuperChat', showSuperChat = 'showSuperChat',
keyboardControl = 'keyboardControl'; keyboardControl = 'keyboardControl',
pauseOnMinimize = 'pauseOnMinimize';
static const String enableVerticalExpand = 'enableVerticalExpand', static const String enableVerticalExpand = 'enableVerticalExpand',
feedBackEnable = 'feedBackEnable', feedBackEnable = 'feedBackEnable',

View File

@@ -832,4 +832,7 @@ abstract class Pref {
static bool get keyboardControl => static bool get keyboardControl =>
_setting.get(SettingBoxKey.keyboardControl, defaultValue: true); _setting.get(SettingBoxKey.keyboardControl, defaultValue: true);
static bool get pauseOnMinimize =>
_setting.get(SettingBoxKey.pauseOnMinimize, defaultValue: false);
} }