import 'dart:async'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:spotube/services/audio_player/audio_player.dart'; import 'package:spotube/utils/persisted_state_notifier.dart'; class VolumeProvider extends PersistedStateNotifier { VolumeProvider() : super(1, 'volume'); Future setVolume(double volume) async { state = volume; await audioPlayer.setVolume(volume); } @override FutureOr onInit() async { await audioPlayer.setVolume(state); } @override FutureOr fromJson(Map json) { return json['volume'] as double? ?? 0.0; } @override Map toJson() { return {'volume': state}; } } final volumeProvider = StateNotifierProvider((ref) => VolumeProvider());