mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-13 07:55:18 +00:00
refactor(volumeProvider): use notifier and kvstore for persistence
This commit is contained in:
parent
b9b7d5c8aa
commit
5936f08a92
@ -2,31 +2,22 @@ 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';
|
||||
import 'package:spotube/services/kv_store/kv_store.dart';
|
||||
|
||||
class VolumeProvider extends PersistedStateNotifier<double> {
|
||||
VolumeProvider() : super(1, 'volume');
|
||||
class VolumeProvider extends Notifier<double> {
|
||||
VolumeProvider();
|
||||
|
||||
@override
|
||||
build() {
|
||||
return KVStoreService.volume;
|
||||
}
|
||||
|
||||
Future<void> setVolume(double volume) async {
|
||||
state = volume;
|
||||
await audioPlayer.setVolume(volume);
|
||||
}
|
||||
|
||||
@override
|
||||
FutureOr<void> onInit() async {
|
||||
await audioPlayer.setVolume(state);
|
||||
}
|
||||
|
||||
@override
|
||||
FutureOr<double> fromJson(Map<String, dynamic> json) {
|
||||
return json['volume'] as double? ?? 0.0;
|
||||
}
|
||||
|
||||
@override
|
||||
Map<String, dynamic> toJson() {
|
||||
return {'volume': state};
|
||||
KVStoreService.setVolume(volume);
|
||||
}
|
||||
}
|
||||
|
||||
final volumeProvider =
|
||||
StateNotifierProvider<VolumeProvider, double>((ref) => VolumeProvider());
|
||||
NotifierProvider<VolumeProvider, double>(() => VolumeProvider());
|
||||
|
@ -78,4 +78,8 @@ abstract class KVStoreService {
|
||||
static Future<void> setIVKey(IV iv) async {
|
||||
await sharedPreferences.setString('iv', iv.base64);
|
||||
}
|
||||
|
||||
static double get volume => sharedPreferences.getDouble('volume') ?? 1.0;
|
||||
static Future<void> setVolume(double value) async =>
|
||||
await sharedPreferences.setDouble('volume', value);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user