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:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:spotube/services/audio_player/audio_player.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> {
|
class VolumeProvider extends Notifier<double> {
|
||||||
VolumeProvider() : super(1, 'volume');
|
VolumeProvider();
|
||||||
|
|
||||||
|
@override
|
||||||
|
build() {
|
||||||
|
return KVStoreService.volume;
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> setVolume(double volume) async {
|
Future<void> setVolume(double volume) async {
|
||||||
state = volume;
|
state = volume;
|
||||||
await audioPlayer.setVolume(volume);
|
await audioPlayer.setVolume(volume);
|
||||||
}
|
KVStoreService.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};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final volumeProvider =
|
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 {
|
static Future<void> setIVKey(IV iv) async {
|
||||||
await sharedPreferences.setString('iv', iv.base64);
|
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