From 5936f08a92182a4cc3a0e72c2c044d4e480d2158 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Mon, 17 Jun 2024 18:13:41 +0600 Subject: [PATCH] refactor(volumeProvider): use notifier and kvstore for persistence --- lib/provider/volume_provider.dart | 29 ++++++++++------------------- lib/services/kv_store/kv_store.dart | 4 ++++ 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/lib/provider/volume_provider.dart b/lib/provider/volume_provider.dart index 464b5e42..ddd38fd9 100644 --- a/lib/provider/volume_provider.dart +++ b/lib/provider/volume_provider.dart @@ -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 { - VolumeProvider() : super(1, 'volume'); +class VolumeProvider extends Notifier { + VolumeProvider(); + + @override + build() { + return KVStoreService.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}; + KVStoreService.setVolume(volume); } } final volumeProvider = - StateNotifierProvider((ref) => VolumeProvider()); + NotifierProvider(() => VolumeProvider()); diff --git a/lib/services/kv_store/kv_store.dart b/lib/services/kv_store/kv_store.dart index 6b19c032..2707ea4d 100644 --- a/lib/services/kv_store/kv_store.dart +++ b/lib/services/kv_store/kv_store.dart @@ -78,4 +78,8 @@ abstract class KVStoreService { static Future setIVKey(IV iv) async { await sharedPreferences.setString('iv', iv.base64); } + + static double get volume => sharedPreferences.getDouble('volume') ?? 1.0; + static Future setVolume(double value) async => + await sharedPreferences.setDouble('volume', value); }