diff --git a/lib/utils/video_player/src/thunder_video_player.dart b/lib/utils/video_player/src/thunder_video_player.dart index a694229af..91d161976 100644 --- a/lib/utils/video_player/src/thunder_video_player.dart +++ b/lib/utils/video_player/src/thunder_video_player.dart @@ -10,6 +10,7 @@ import 'package:thunder/shared/snackbar.dart'; import 'package:thunder/thunder/bloc/thunder_bloc.dart'; import 'package:thunder/thunder/cubits/network_checker_cubit/network_checker_cubit.dart'; import 'package:thunder/utils/links.dart'; +import 'package:wakelock_plus/wakelock_plus.dart'; class ThunderVideoPlayer extends StatefulWidget { const ThunderVideoPlayer({ @@ -34,6 +35,7 @@ class _ThunderVideoPlayerState extends State { @override void dispose() async { _betterPlayerController.dispose(); + WakelockPlus.disable(); super.dispose(); } @@ -75,20 +77,27 @@ class _ThunderVideoPlayerState extends State { _betterPlayerController = BetterPlayerController(betterPlayerConfiguration); _betterPlayerController ..setupDataSource(_betterPlayerDataSource) - ..setVolume(thunderBloc.videoAutoMute ? 0 : 1) - ..setSpeed(thunderBloc.videoDefaultPlaybackSpeed.value); - _betterPlayerController.addEventsListener((event) { - if (event.betterPlayerEventType == BetterPlayerEventType.exception) { - showSnackbar( - l10n.failedToLoadVideo, - trailingIcon: Icons.chevron_right_rounded, - trailingAction: () { - handleLink(context, url: widget.videoUrl, forceOpenInBrowser: true); - }, - ); - } - }); + ..setVolume(thunderBloc.videoAutoMute ? 0 : 4) + ..setSpeed(double.parse(thunderBloc.videoDefaultPlaybackSpeed.label.replaceAll('x', ''))) + ..addEventsListener((event) { + switch (event.betterPlayerEventType) { + case BetterPlayerEventType.exception: + showSnackbar( + l10n.failedToLoadVideo, + trailingIcon: Icons.chevron_right_rounded, + trailingAction: () { + handleLink(context, url: widget.videoUrl, forceOpenInBrowser: true); + }, + ); + break; + case BetterPlayerEventType.pause: + WakelockPlus.disable(); + case BetterPlayerEventType.play: + WakelockPlus.enable(); + default: + } + }); } @override diff --git a/lib/utils/video_player/src/thunder_youtube_player.dart b/lib/utils/video_player/src/thunder_youtube_player.dart index 6aaad1ad0..8f8f2cf2a 100644 --- a/lib/utils/video_player/src/thunder_youtube_player.dart +++ b/lib/utils/video_player/src/thunder_youtube_player.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:wakelock_plus/wakelock_plus.dart'; import 'package:youtube_player_flutter/youtube_player_flutter.dart' as ypf; import 'package:youtube_player_iframe/youtube_player_iframe.dart'; @@ -62,7 +63,6 @@ class _ThunderYoutubePlayerState extends State with Single ..loadVideoById(videoId: ypf.YoutubePlayer.convertUrlToId(widget.videoUrl)!) ..setPlaybackRate(state.videoDefaultPlaybackSpeed.value); } - setState(() => muted = state.videoAutoMute); } @@ -70,6 +70,7 @@ class _ThunderYoutubePlayerState extends State with Single void dispose() { if (Platform.isAndroid || Platform.isIOS) { _ypfController.dispose(); + WakelockPlus.disable(); } else { _controller.close(); } @@ -89,6 +90,19 @@ class _ThunderYoutubePlayerState extends State with Single return false; } + void listener() { + if (mounted) { + switch (_ypfController.value.playerState) { + case ypf.PlayerState.playing: + WakelockPlus.enable(); + + case ypf.PlayerState.paused: + WakelockPlus.disable(); + default: + } + } + } + @override Widget build(BuildContext context) { if (Platform.isAndroid || Platform.isIOS) { @@ -132,7 +146,7 @@ class _ThunderYoutubePlayerState extends State with Single child: ypf.YoutubePlayerBuilder( player: ypf.YoutubePlayer( aspectRatio: 16 / 10, - controller: _ypfController, + controller: _ypfController..addListener(listener), actionsPadding: const EdgeInsets.only(bottom: 8), topActions: [ IconButton( diff --git a/pubspec.lock b/pubspec.lock index bc401ad4d..4a70a2e6f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1948,13 +1948,13 @@ packages: source: hosted version: "13.0.0" wakelock_plus: - dependency: transitive + dependency: "direct main" description: name: wakelock_plus - sha256: "104d94837bb28c735894dcd592877e990149c380e6358b00c04398ca1426eed4" + sha256: "14758533319a462ffb5aa3b7ddb198e59b29ac3b02da14173a1715d65d4e6e68" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.5" wakelock_plus_platform_interface: dependency: transitive description: @@ -2023,10 +2023,10 @@ packages: dependency: transitive description: name: win32 - sha256: "8cb58b45c47dcb42ab3651533626161d6b67a2921917d8d429791f76972b3480" + sha256: "0eaf06e3446824099858367950a813472af675116bf63f008a4c2a75ae13e9cb" url: "https://pub.dev" source: hosted - version: "5.3.0" + version: "5.5.0" win32_registry: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 353ba2b18..836100dcc 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -101,8 +101,6 @@ dependencies: youtube_player_flutter: ^8.1.2 smooth_highlight: ^0.1.1 visibility_detector: ^0.4.0+2 - push: - path: packages/push/push unifiedpush: ^5.0.1 flutter_sharing_intent: ^1.1.1 drift: ^2.16.0 @@ -110,6 +108,7 @@ dependencies: river_player: ^0.1.3 connectivity_plus: ^6.0.2 super_sliver_list: ^0.4.1 + wakelock_plus: ^1.2.5 dev_dependencies: