From fd423e30951230acf665e5bb5a6de5993269a719 Mon Sep 17 00:00:00 2001 From: zarzet Date: Tue, 14 Jul 2026 18:26:33 +0700 Subject: [PATCH] perf(player): narrow now-playing queue sheet to shuffle-mode selector The sheet watched the whole playbackStateProvider, which re-emits every 500ms during playback, rebuilding the entire ReorderableListView twice a second just to recompute an unchanged shuffle toggle. Watch a .select of shuffleMode only. --- lib/screens/now_playing_screen.dart | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/screens/now_playing_screen.dart b/lib/screens/now_playing_screen.dart index 8126def5..b70ba350 100644 --- a/lib/screens/now_playing_screen.dart +++ b/lib/screens/now_playing_screen.dart @@ -741,9 +741,11 @@ class _NowPlayingScreenState extends ConsumerState { final queue = ref.watch(playQueueProvider).value ?? const []; final current = ref.watch(currentMediaItemProvider).value; final controller = ref.read(musicPlayerControllerProvider); - final shuffleOn = - ref.watch(playbackStateProvider).value?.shuffleMode == - AudioServiceShuffleMode.all; + final shuffleOn = ref.watch( + playbackStateProvider.select( + (s) => s.value?.shuffleMode == AudioServiceShuffleMode.all, + ), + ); final textTheme = Theme.of(context).textTheme; return Column(