From 545ff031e02e141d52cdfec56205d0914017221f Mon Sep 17 00:00:00 2001 From: ggichure Date: Mon, 27 May 2024 16:31:56 +0300 Subject: [PATCH 1/3] Disable Screen timeout when video is playing --- lib/utils/video_player/src/thunder_video_player.dart | 3 +++ lib/utils/video_player/src/thunder_youtube_player.dart | 3 +++ pubspec.lock | 10 +++++----- pubspec.yaml | 1 + 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/utils/video_player/src/thunder_video_player.dart b/lib/utils/video_player/src/thunder_video_player.dart index ae69835e6..f13ba2ae4 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(); } @@ -41,6 +43,7 @@ class _ThunderVideoPlayerState extends State { void initState() { super.initState(); _initializePlayer(); + WakelockPlus.enable(); } bool autoPlayVideo(ThunderState thunderBloc) { diff --git a/lib/utils/video_player/src/thunder_youtube_player.dart b/lib/utils/video_player/src/thunder_youtube_player.dart index 48a81fece..eb19cc1eb 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'; @@ -49,6 +50,7 @@ class _ThunderYoutubePlayerState extends State with Single ), )..setPlaybackRate(double.parse(state.videoDefaultPlaybackSpeed.label.replaceAll('x', ''))); if (state.videoAutoFullscreen) _ypfController.toggleFullScreenMode(); + WakelockPlus.enable(); } else { _controller = YoutubePlayerController( params: YoutubePlayerParams( @@ -70,6 +72,7 @@ class _ThunderYoutubePlayerState extends State with Single void dispose() { if (Platform.isAndroid || Platform.isIOS) { _ypfController.dispose(); + WakelockPlus.disable(); } else { _controller.close(); } diff --git a/pubspec.lock b/pubspec.lock index fc35ad732..8f144fec7 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1969,13 +1969,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: @@ -2044,10 +2044,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 308a2275e..a0ac577b1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -113,6 +113,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: From 004756a31df006851142eb45c053c67c20eab61b Mon Sep 17 00:00:00 2001 From: ggichure Date: Thu, 30 May 2024 15:04:20 +0300 Subject: [PATCH 2/3] wakelock based on player state, playing or paused --- .../src/thunder_video_player.dart | 33 +++++++++++-------- .../src/thunder_youtube_player.dart | 17 ++++++++-- 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/lib/utils/video_player/src/thunder_video_player.dart b/lib/utils/video_player/src/thunder_video_player.dart index f13ba2ae4..943a4595b 100644 --- a/lib/utils/video_player/src/thunder_video_player.dart +++ b/lib/utils/video_player/src/thunder_video_player.dart @@ -43,7 +43,6 @@ class _ThunderVideoPlayerState extends State { void initState() { super.initState(); _initializePlayer(); - WakelockPlus.enable(); } bool autoPlayVideo(ThunderState thunderBloc) { @@ -79,19 +78,25 @@ class _ThunderVideoPlayerState extends State { _betterPlayerController ..setupDataSource(_betterPlayerDataSource) ..setVolume(thunderBloc.videoAutoMute ? 0 : 4) - ..setSpeed(double.parse(thunderBloc.videoDefaultPlaybackSpeed.label.replaceAll('x', ''))); - - _betterPlayerController.addEventsListener((event) { - if (event.betterPlayerEventType == BetterPlayerEventType.exception) { - showSnackbar( - l10n.failedToLoadVideo, - trailingIcon: Icons.chevron_right_rounded, - trailingAction: () { - handleLink(context, url: widget.videoUrl, forceOpenInBrowser: true); - }, - ); - } - }); + ..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 eb19cc1eb..1c29c87e3 100644 --- a/lib/utils/video_player/src/thunder_youtube_player.dart +++ b/lib/utils/video_player/src/thunder_youtube_player.dart @@ -50,7 +50,6 @@ class _ThunderYoutubePlayerState extends State with Single ), )..setPlaybackRate(double.parse(state.videoDefaultPlaybackSpeed.label.replaceAll('x', ''))); if (state.videoAutoFullscreen) _ypfController.toggleFullScreenMode(); - WakelockPlus.enable(); } else { _controller = YoutubePlayerController( params: YoutubePlayerParams( @@ -64,7 +63,6 @@ class _ThunderYoutubePlayerState extends State with Single ..loadVideoById(videoId: ypf.YoutubePlayer.convertUrlToId(widget.videoUrl)!) ..setPlaybackRate(double.parse(state.videoDefaultPlaybackSpeed.label.replaceAll('x', ''))); } - setState(() => muted = state.videoAutoMute); } @@ -92,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) { @@ -135,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( From 31bb0de0f0f48d23bfeee1ef5bda1220c0f98085 Mon Sep 17 00:00:00 2001 From: ggichure Date: Sat, 8 Jun 2024 08:09:31 +0300 Subject: [PATCH 3/3] rm push package from dependencies --- pubspec.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index 30263af1e..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