From 90dd7d457ee9a4f26ee8484716f2ebafb7a6a24d Mon Sep 17 00:00:00 2001 From: MSOB7YY Date: Sun, 12 Nov 2023 02:40:11 +0200 Subject: [PATCH] fix: resetting color when toggling pitch black while playing yt video --- lib/controller/audio_handler.dart | 4 ++++ lib/controller/player_controller.dart | 3 +++ lib/ui/widgets/settings/theme_settings.dart | 6 +++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/controller/audio_handler.dart b/lib/controller/audio_handler.dart index d5fe971f..a3a30d2a 100644 --- a/lib/controller/audio_handler.dart +++ b/lib/controller/audio_handler.dart @@ -3,6 +3,7 @@ import 'dart:io'; import 'package:audio_service/audio_service.dart'; import 'package:basic_audio_handler/basic_audio_handler.dart'; +import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:get/get_rx/src/rx_types/rx_types.dart'; import 'package:get/get_utils/src/extensions/num_extensions.dart'; @@ -208,6 +209,8 @@ class NamidaAudioVideoHandler extends BasicAudioHandler { // ============================================================================================== // ================================== QueueManager Overriden ==================================== + Color? latestExtractedColor; + @override void onIndexChanged(int newIndex, Q newItem) async { refreshNotification(newItem); @@ -223,6 +226,7 @@ class NamidaAudioVideoHandler extends BasicAudioHandler { if (color != null && finalItem == currentItem) { // -- only update if same item is still playing, i.e. user didn't skip. CurrentColor.inst.updatePlayerColorFromColor(color.color); + latestExtractedColor = color.color; } } }, diff --git a/lib/controller/player_controller.dart b/lib/controller/player_controller.dart index 9f128fdc..c14d4b8b 100644 --- a/lib/controller/player_controller.dart +++ b/lib/controller/player_controller.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:io'; import 'package:audio_service/audio_service.dart'; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:newpipeextractor_dart/newpipeextractor_dart.dart'; @@ -78,6 +79,8 @@ class Player { int get sleepingTrackIndex => sleepAfterTracks + currentIndex - 1; + Color? get latestExtractedColor => _audioHandler.latestExtractedColor; + // -- error playing track void cancelPlayErrorSkipTimer() => _audioHandler.cancelPlayErrorSkipTimer(); int get playErrorRemainingSecondsToSkip => _audioHandler.playErrorRemainingSecondsToSkip; diff --git a/lib/ui/widgets/settings/theme_settings.dart b/lib/ui/widgets/settings/theme_settings.dart index 625bee5e..459efd38 100644 --- a/lib/ui/widgets/settings/theme_settings.dart +++ b/lib/ui/widgets/settings/theme_settings.dart @@ -22,7 +22,11 @@ class ThemeSetting extends StatelessWidget { const ThemeSetting({super.key}); Future _refreshColorCurrentTrack() async { - await CurrentColor.inst.updatePlayerColorFromTrack(Player.inst.nowPlayingTWD, null); + if (Player.inst.currentQueueYoutube.isNotEmpty && Player.inst.latestExtractedColor != null) { + CurrentColor.inst.updatePlayerColorFromColor(Player.inst.latestExtractedColor!); + } else { + await CurrentColor.inst.updatePlayerColorFromTrack(Player.inst.nowPlayingTWD, null); + } } Widget getThemeTile() {