mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-05-06 18:17:47 +08:00
add audio volume button & slider on desktop
Closes #1950 Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
@@ -23,6 +23,7 @@ import 'package:PiliPlus/pages/sponsor_block/block_mixin.dart';
|
||||
import 'package:PiliPlus/pages/video/controller.dart';
|
||||
import 'package:PiliPlus/pages/video/introduction/ugc/widgets/triple_mixin.dart';
|
||||
import 'package:PiliPlus/pages/video/pay_coins/view.dart';
|
||||
import 'package:PiliPlus/plugin/pl_player/controller.dart';
|
||||
import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart';
|
||||
import 'package:PiliPlus/plugin/pl_player/models/play_status.dart';
|
||||
import 'package:PiliPlus/services/service_locator.dart';
|
||||
@@ -36,6 +37,8 @@ import 'package:PiliPlus/utils/id_utils.dart';
|
||||
import 'package:PiliPlus/utils/page_utils.dart';
|
||||
import 'package:PiliPlus/utils/platform_utils.dart';
|
||||
import 'package:PiliPlus/utils/share_utils.dart';
|
||||
import 'package:PiliPlus/utils/storage.dart';
|
||||
import 'package:PiliPlus/utils/storage_key.dart';
|
||||
import 'package:PiliPlus/utils/storage_pref.dart';
|
||||
import 'package:PiliPlus/utils/utils.dart';
|
||||
import 'package:PiliPlus/utils/video_utils.dart';
|
||||
@@ -94,6 +97,34 @@ class AudioController extends GetxController
|
||||
|
||||
ListOrder order = ListOrder.ORDER_NORMAL;
|
||||
|
||||
double? _lastVolume;
|
||||
late final RxDouble desktopVolume = RxDouble(Pref.desktopVolume);
|
||||
|
||||
void toggleVolume() {
|
||||
if (_lastVolume == null) {
|
||||
_lastVolume = desktopVolume.value;
|
||||
setVolume(0, clearLastVolme: false);
|
||||
} else {
|
||||
setVolume(_lastVolume!);
|
||||
}
|
||||
}
|
||||
|
||||
void setVolume(double volume, {bool clearLastVolme = true}) {
|
||||
if (clearLastVolme) {
|
||||
_lastVolume = null;
|
||||
}
|
||||
desktopVolume.value = volume;
|
||||
player?.setVolume(volume * 100);
|
||||
}
|
||||
|
||||
void syncVolume([_]) {
|
||||
final volume = desktopVolume.value;
|
||||
PlPlayerController.instance
|
||||
?..volume.value = volume
|
||||
..videoPlayerController?.setVolume(volume * 100);
|
||||
GStorage.setting.put(SettingBoxKey.desktopVolume, volume.toPrecision(3));
|
||||
}
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
super.onInit();
|
||||
@@ -296,7 +327,13 @@ class AudioController extends GetxController
|
||||
if (_hasInit) return;
|
||||
_hasInit = true;
|
||||
assert(player == null, _subscriptions = null);
|
||||
player = await Player.create();
|
||||
player = await Player.create(
|
||||
configuration: PlatformUtils.isDesktop
|
||||
? PlayerConfiguration(
|
||||
options: {'volume': (desktopVolume.value * 100).toString()},
|
||||
)
|
||||
: const PlayerConfiguration(),
|
||||
);
|
||||
if (isClosed) {
|
||||
player!.dispose();
|
||||
player = null;
|
||||
|
||||
Reference in New Issue
Block a user