fix: Strange state notifier bug when setting volume

This commit is contained in:
PartyDonut 2025-08-08 20:00:20 +02:00
parent 6cf7f67ff0
commit 19f2b5473b

View file

@ -106,7 +106,7 @@ class _PlayerSettingsPageState extends ConsumerState<PlayerSettingsPage> {
value: entry, value: entry,
child: Text(entry.label(context)), child: Text(entry.label(context)),
onTap: () => ref.read(videoPlayerSettingsProvider.notifier).state = onTap: () => ref.read(videoPlayerSettingsProvider.notifier).state =
ref.read(videoPlayerSettingsProvider).copyWith(maxHomeBitrate: entry), videoSettings.copyWith(maxHomeBitrate: entry),
), ),
) )
.toList(), .toList(),
@ -128,7 +128,7 @@ class _PlayerSettingsPageState extends ConsumerState<PlayerSettingsPage> {
value: entry, value: entry,
child: Text(entry.label(context)), child: Text(entry.label(context)),
onTap: () => ref.read(videoPlayerSettingsProvider.notifier).state = onTap: () => ref.read(videoPlayerSettingsProvider.notifier).state =
ref.read(videoPlayerSettingsProvider).copyWith(maxInternetBitrate: entry), videoSettings.copyWith(maxInternetBitrate: entry),
), ),
) )
.toList(), .toList(),
@ -160,7 +160,7 @@ class _PlayerSettingsPageState extends ConsumerState<PlayerSettingsPage> {
final newEntries = videoSettings.segmentSkipSettings.map( final newEntries = videoSettings.segmentSkipSettings.map(
(key, currentValue) => MapEntry(key, key == entry.key ? value : currentValue)); (key, currentValue) => MapEntry(key, key == entry.key ? value : currentValue));
ref.read(videoPlayerSettingsProvider.notifier).state = ref.read(videoPlayerSettingsProvider.notifier).state =
ref.read(videoPlayerSettingsProvider).copyWith(segmentSkipSettings: newEntries); videoSettings.copyWith(segmentSkipSettings: newEntries);
}, },
), ),
) )
@ -267,8 +267,8 @@ class _PlayerSettingsPageState extends ConsumerState<PlayerSettingsPage> {
label: Text(context.localized.playerSettingsBackendTitle), label: Text(context.localized.playerSettingsBackendTitle),
subLabel: Text(context.localized.playerSettingsBackendDesc), subLabel: Text(context.localized.playerSettingsBackendDesc),
trailing: Builder(builder: (context) { trailing: Builder(builder: (context) {
final wantedPlayer = ref.watch(videoPlayerSettingsProvider.select((value) => value.wantedPlayer)); final wantedPlayer = videoSettings.wantedPlayer;
final currentPlayer = ref.watch(videoPlayerSettingsProvider.select((value) => value.playerOptions)); final currentPlayer = videoSettings.playerOptions;
return EnumBox( return EnumBox(
current: currentPlayer == null current: currentPlayer == null
? "${context.localized.defaultLabel} (${PlayerOptions.platformDefaults.label(context)})" ? "${context.localized.defaultLabel} (${PlayerOptions.platformDefaults.label(context)})"
@ -279,14 +279,14 @@ class _PlayerSettingsPageState extends ConsumerState<PlayerSettingsPage> {
child: child:
Text("${context.localized.defaultLabel} (${PlayerOptions.platformDefaults.label(context)})"), Text("${context.localized.defaultLabel} (${PlayerOptions.platformDefaults.label(context)})"),
onTap: () => ref.read(videoPlayerSettingsProvider.notifier).state = onTap: () => ref.read(videoPlayerSettingsProvider.notifier).state =
ref.read(videoPlayerSettingsProvider).copyWith(playerOptions: null), videoSettings.copyWith(playerOptions: null),
), ),
...PlayerOptions.available.map( ...PlayerOptions.available.map(
(entry) => PopupMenuItem( (entry) => PopupMenuItem(
value: entry, value: entry,
child: Text(entry.label(context)), child: Text(entry.label(context)),
onTap: () => ref.read(videoPlayerSettingsProvider.notifier).state = onTap: () => ref.read(videoPlayerSettingsProvider.notifier).state =
ref.read(videoPlayerSettingsProvider).copyWith(playerOptions: entry), videoSettings.copyWith(playerOptions: entry),
), ),
) )
], ],
@ -294,7 +294,7 @@ class _PlayerSettingsPageState extends ConsumerState<PlayerSettingsPage> {
}), }),
), ),
AnimatedFadeSize( AnimatedFadeSize(
child: switch (ref.read(videoPlayerSettingsProvider.select((value) => value.wantedPlayer))) { child: switch (videoSettings.wantedPlayer) {
PlayerOptions.libMPV => Column( PlayerOptions.libMPV => Column(
children: [ children: [
SettingsListTile( SettingsListTile(
@ -378,7 +378,7 @@ class _PlayerSettingsPageState extends ConsumerState<PlayerSettingsPage> {
value: entry, value: entry,
child: Text(entry.label(context)), child: Text(entry.label(context)),
onTap: () => ref.read(videoPlayerSettingsProvider.notifier).state = onTap: () => ref.read(videoPlayerSettingsProvider.notifier).state =
ref.read(videoPlayerSettingsProvider).copyWith(nextVideoType: entry), videoSettings.copyWith(nextVideoType: entry),
), ),
) )
.toList(), .toList(),