Files
BlockSeasons/lib/state/music_notifier.dart
T
airkjw 8947221b27 feat(audio): looping per-season background music system
MusicService (looping audioplayers player, independent of SFX) driven by the
active season theme's new 'bgm' key; switches track on season change, pauses on
app background, all failures swallowed. Separate Music on/off toggle in Settings
(persisted, independent of SFX). Season packs carry bgm keys (menu/season_001/
season_002), manifest regenerated. Assets slot assets/audio/bgm/ ready — drop in
menu.mp3/season_001.mp3/season_002.mp3 (CC0) and it plays; silent until then.
180 tests green, analyze clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-14 09:31:10 +09:00

20 lines
643 B
Dart

import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'providers.dart';
/// Background-music on/off, seeded from the save repository. Independent of the
/// SFX/haptics ([soundEnabledProvider]) so players can keep one without the
/// other — the common "I want sound effects but no music" case.
class MusicEnabledNotifier extends Notifier<bool> {
@override
bool build() => ref.read(saveRepositoryProvider).musicEnabled;
Future<void> toggle() => set(!state);
Future<void> set(bool value) async {
if (state == value) return;
await ref.read(saveRepositoryProvider).setMusicEnabled(value);
state = value;
}
}