feat(settings): soundEnabled provider gates SFX and haptics
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -11,6 +11,7 @@ import '../services/consent_service.dart';
|
||||
import '../services/iap_service.dart';
|
||||
import 'ads_notifier.dart';
|
||||
import 'endless_best_notifier.dart';
|
||||
import 'sound_notifier.dart';
|
||||
import 'game_session_notifier.dart';
|
||||
import 'progress_notifier.dart';
|
||||
import 'season_flow_notifier.dart';
|
||||
@@ -22,8 +23,12 @@ final gameSessionProvider =
|
||||
GameSessionNotifier.new,
|
||||
);
|
||||
|
||||
final soundEnabledProvider =
|
||||
NotifierProvider<SoundEnabledNotifier, bool>(SoundEnabledNotifier.new);
|
||||
|
||||
final audioServiceProvider = Provider<AudioService>((ref) {
|
||||
final service = AudioService();
|
||||
final service = AudioService(enabled: ref.read(soundEnabledProvider));
|
||||
ref.listen<bool>(soundEnabledProvider, (_, next) => service.enabled = next);
|
||||
ref.onDispose(service.dispose);
|
||||
return service;
|
||||
});
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
import 'providers.dart';
|
||||
|
||||
/// SFX + gameplay haptics on/off, seeded from the save repository.
|
||||
class SoundEnabledNotifier extends Notifier<bool> {
|
||||
@override
|
||||
bool build() => ref.read(saveRepositoryProvider).soundEnabled;
|
||||
|
||||
Future<void> toggle() => set(!state);
|
||||
|
||||
Future<void> set(bool value) async {
|
||||
if (state == value) return;
|
||||
await ref.read(saveRepositoryProvider).setSoundEnabled(value);
|
||||
state = value;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user