mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
fix ios volume
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
import UIKit
|
import UIKit
|
||||||
import Flutter
|
import Flutter
|
||||||
|
|
||||||
@UIApplicationMain
|
@main
|
||||||
@objc class AppDelegate: FlutterAppDelegate {
|
@objc class AppDelegate: FlutterAppDelegate {
|
||||||
override func application(
|
override func application(
|
||||||
_ application: UIApplication,
|
_ application: UIApplication,
|
||||||
|
|||||||
@@ -56,12 +56,12 @@ import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart';
|
|||||||
import 'package:flutter/foundation.dart' show kDebugMode;
|
import 'package:flutter/foundation.dart' show kDebugMode;
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||||
|
import 'package:flutter_volume_controller/flutter_volume_controller.dart';
|
||||||
import 'package:get/get.dart' hide ContextExtensionss;
|
import 'package:get/get.dart' hide ContextExtensionss;
|
||||||
import 'package:get/get_navigation/src/dialog/dialog_route.dart';
|
import 'package:get/get_navigation/src/dialog/dialog_route.dart';
|
||||||
import 'package:hive/hive.dart';
|
import 'package:hive/hive.dart';
|
||||||
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
|
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
|
||||||
import 'package:media_kit/media_kit.dart';
|
import 'package:media_kit/media_kit.dart';
|
||||||
import 'package:volume_controller/volume_controller.dart';
|
|
||||||
|
|
||||||
class VideoDetailController extends GetxController
|
class VideoDetailController extends GetxController
|
||||||
with GetTickerProviderStateMixin {
|
with GetTickerProviderStateMixin {
|
||||||
@@ -1506,7 +1506,7 @@ class VideoDetailController extends GetxController
|
|||||||
if (idx == 0) {
|
if (idx == 0) {
|
||||||
if (preference == SubtitlePrefType.on ||
|
if (preference == SubtitlePrefType.on ||
|
||||||
(preference == SubtitlePrefType.auto &&
|
(preference == SubtitlePrefType.auto &&
|
||||||
await VolumeController.instance.getVolume() <= 0)) {
|
(await FlutterVolumeController.getVolume() ?? 0) <= 0)) {
|
||||||
idx = 1;
|
idx = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ import 'package:flutter/foundation.dart' show kDebugMode;
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||||
|
import 'package:flutter_volume_controller/flutter_volume_controller.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:hive/hive.dart';
|
import 'package:hive/hive.dart';
|
||||||
import 'package:media_kit/media_kit.dart';
|
import 'package:media_kit/media_kit.dart';
|
||||||
@@ -52,7 +53,6 @@ import 'package:path/path.dart' as path;
|
|||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'package:screen_brightness/screen_brightness.dart';
|
import 'package:screen_brightness/screen_brightness.dart';
|
||||||
import 'package:universal_platform/universal_platform.dart';
|
import 'package:universal_platform/universal_platform.dart';
|
||||||
import 'package:volume_controller/volume_controller.dart';
|
|
||||||
|
|
||||||
class PlPlayerController {
|
class PlPlayerController {
|
||||||
Player? _videoPlayerController;
|
Player? _videoPlayerController;
|
||||||
@@ -1212,7 +1212,7 @@ class PlPlayerController {
|
|||||||
Future<void> getCurrentVolume() async {
|
Future<void> getCurrentVolume() async {
|
||||||
// mac try...catch
|
// mac try...catch
|
||||||
try {
|
try {
|
||||||
_currentVolume.value = await VolumeController.instance.getVolume();
|
_currentVolume.value = (await FlutterVolumeController.getVolume())!;
|
||||||
} catch (_) {}
|
} catch (_) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1231,9 +1231,8 @@ class PlPlayerController {
|
|||||||
volume.value = volumeNew;
|
volume.value = volumeNew;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await (VolumeController.instance..showSystemUI = false).setVolume(
|
FlutterVolumeController.updateShowSystemUI(false);
|
||||||
volumeNew,
|
await FlutterVolumeController.setVolume(volumeNew);
|
||||||
);
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (kDebugMode) debugPrint(err.toString());
|
if (kDebugMode) debugPrint(err.toString());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ import 'package:flutter/foundation.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
|
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
|
||||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||||
|
import 'package:flutter_volume_controller/flutter_volume_controller.dart';
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
import 'package:get/get.dart' hide ContextExtensionss;
|
import 'package:get/get.dart' hide ContextExtensionss;
|
||||||
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
|
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
|
||||||
@@ -61,7 +62,6 @@ import 'package:media_kit/media_kit.dart';
|
|||||||
import 'package:media_kit_video/media_kit_video.dart';
|
import 'package:media_kit_video/media_kit_video.dart';
|
||||||
import 'package:saver_gallery/saver_gallery.dart';
|
import 'package:saver_gallery/saver_gallery.dart';
|
||||||
import 'package:screen_brightness/screen_brightness.dart';
|
import 'package:screen_brightness/screen_brightness.dart';
|
||||||
import 'package:volume_controller/volume_controller.dart';
|
|
||||||
|
|
||||||
class PLVideoPlayer extends StatefulWidget {
|
class PLVideoPlayer extends StatefulWidget {
|
||||||
const PLVideoPlayer({
|
const PLVideoPlayer({
|
||||||
@@ -203,12 +203,12 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
|
|||||||
videoController = plPlayerController.videoController!;
|
videoController = plPlayerController.videoController!;
|
||||||
Future.microtask(() async {
|
Future.microtask(() async {
|
||||||
try {
|
try {
|
||||||
final volumeCtr = VolumeController.instance..showSystemUI = true;
|
FlutterVolumeController.updateShowSystemUI(true);
|
||||||
_volumeValue.value = await volumeCtr.getVolume();
|
_volumeValue.value = (await FlutterVolumeController.getVolume())!;
|
||||||
volumeCtr.addListener((double value) {
|
FlutterVolumeController.addListener((double value) {
|
||||||
if (mounted && !_volumeInterceptEventStream.value) {
|
if (mounted && !_volumeInterceptEventStream.value) {
|
||||||
_volumeValue.value = value;
|
_volumeValue.value = value;
|
||||||
if (Platform.isIOS && !volumeCtr.showSystemUI) {
|
if (Platform.isIOS && !FlutterVolumeController.showSystemUI) {
|
||||||
_volumeIndicator.value = true;
|
_volumeIndicator.value = true;
|
||||||
_volumeTimer?.cancel();
|
_volumeTimer?.cancel();
|
||||||
_volumeTimer = Timer(const Duration(milliseconds: 800), () {
|
_volumeTimer = Timer(const Duration(milliseconds: 800), () {
|
||||||
@@ -239,7 +239,8 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
|
|||||||
|
|
||||||
Future<void> setVolume(double value) async {
|
Future<void> setVolume(double value) async {
|
||||||
try {
|
try {
|
||||||
await (VolumeController.instance..showSystemUI = false).setVolume(value);
|
FlutterVolumeController.updateShowSystemUI(false);
|
||||||
|
await FlutterVolumeController.setVolume(value);
|
||||||
} catch (_) {}
|
} catch (_) {}
|
||||||
|
|
||||||
_volumeValue.value = value;
|
_volumeValue.value = value;
|
||||||
@@ -273,7 +274,7 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
|
|||||||
_listener?.cancel();
|
_listener?.cancel();
|
||||||
_controlsListener?.cancel();
|
_controlsListener?.cancel();
|
||||||
animationController.dispose();
|
animationController.dispose();
|
||||||
VolumeController.instance.removeListener();
|
FlutterVolumeController.removeListener();
|
||||||
transformationController.dispose();
|
transformationController.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,12 @@ class AudioSessionHandler {
|
|||||||
|
|
||||||
Future<void> initSession() async {
|
Future<void> initSession() async {
|
||||||
session = await AudioSession.instance;
|
session = await AudioSession.instance;
|
||||||
session.configure(const AudioSessionConfiguration.music());
|
session.configure(
|
||||||
|
const AudioSessionConfiguration.music().copyWith(
|
||||||
|
avAudioSessionSetActiveOptions:
|
||||||
|
AVAudioSessionSetActiveOptions.notifyOthersOnDeactivation,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
session.interruptionEventStream.listen((event) {
|
session.interruptionEventStream.listen((event) {
|
||||||
final playerStatus = PlPlayerController.getPlayerStatusIfExists();
|
final playerStatus = PlPlayerController.getPlayerStatusIfExists();
|
||||||
|
|||||||
20
pubspec.lock
20
pubspec.lock
@@ -774,6 +774,14 @@ packages:
|
|||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
|
flutter_volume_controller:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: flutter_volume_controller
|
||||||
|
sha256: "15f2c25bc4632ac5e8d42a208fe07c3224a4ee66b155d1ac86945b3db2bb58d9"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.3.3"
|
||||||
flutter_web_plugins:
|
flutter_web_plugins:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
@@ -1202,8 +1210,8 @@ packages:
|
|||||||
description:
|
description:
|
||||||
path: media_kit_video
|
path: media_kit_video
|
||||||
ref: "version_1.2.5"
|
ref: "version_1.2.5"
|
||||||
resolved-ref: f89452bc27af26324a83961c8286d4f41432a5f9
|
resolved-ref: c4655bfb4bf81b6bb450d252184da20e2fbba292
|
||||||
url: "https://github.com/My-Responsitories/media-kit.git"
|
url: "https://github.com/bggRGjQaUbCoE/media-kit.git"
|
||||||
source: git
|
source: git
|
||||||
version: "1.2.5"
|
version: "1.2.5"
|
||||||
meta:
|
meta:
|
||||||
@@ -1955,14 +1963,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "15.0.2"
|
version: "15.0.2"
|
||||||
volume_controller:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: volume_controller
|
|
||||||
sha256: d75039e69c0d90e7810bfd47e3eedf29ff8543ea7a10392792e81f9bded7edf5
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.4.0"
|
|
||||||
wakelock_plus:
|
wakelock_plus:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ dependencies:
|
|||||||
# media_kit_video: ^1.2.5 # For video rendering.
|
# media_kit_video: ^1.2.5 # For video rendering.
|
||||||
media_kit_video:
|
media_kit_video:
|
||||||
git:
|
git:
|
||||||
url: https://github.com/My-Responsitories/media-kit.git
|
url: https://github.com/bggRGjQaUbCoE/media-kit.git
|
||||||
path: media_kit_video
|
path: media_kit_video
|
||||||
ref: version_1.2.5
|
ref: version_1.2.5
|
||||||
media_kit_libs_video: 1.0.5
|
media_kit_libs_video: 1.0.5
|
||||||
@@ -114,7 +114,7 @@ dependencies:
|
|||||||
audio_session: ^0.2.2
|
audio_session: ^0.2.2
|
||||||
|
|
||||||
# 音量、亮度、屏幕控制
|
# 音量、亮度、屏幕控制
|
||||||
volume_controller: ^2.0.7
|
flutter_volume_controller: ^1.3.3
|
||||||
wakelock_plus: ^1.2.8
|
wakelock_plus: ^1.2.8
|
||||||
# universal_platform: ^1.1.0
|
# universal_platform: ^1.1.0
|
||||||
auto_orientation:
|
auto_orientation:
|
||||||
@@ -230,7 +230,6 @@ dependency_overrides:
|
|||||||
url: https://github.com/My-Responsitories/media-kit.git
|
url: https://github.com/My-Responsitories/media-kit.git
|
||||||
path: libs/android/media_kit_libs_android_video
|
path: libs/android/media_kit_libs_android_video
|
||||||
ref: version_1.2.5
|
ref: version_1.2.5
|
||||||
volume_controller: ^3.4.0
|
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|||||||
Reference in New Issue
Block a user