♻️ Better current track metadata

This commit is contained in:
2025-12-20 00:25:48 +08:00
parent cb4cca2917
commit a86e8b1cab
8 changed files with 299 additions and 247 deletions

View File

@@ -1,4 +1,5 @@
import 'package:groovybox/logic/audio_handler.dart';
import 'package:groovybox/logic/metadata_service.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'audio_provider.g.dart';
@@ -15,3 +16,19 @@ AudioHandler audioHandler(Ref ref) {
void setAudioHandler(AudioHandler handler) {
_audioHandler = handler;
}
@Riverpod(keepAlive: true)
class CurrentTrackMetadataNotifier extends _$CurrentTrackMetadataNotifier {
@override
TrackMetadata? build() {
return null;
}
void setMetadata(TrackMetadata metadata) {
state = metadata;
}
void clear() {
state = null;
}
}

View File

@@ -49,3 +49,58 @@ final class AudioHandlerProvider
}
String _$audioHandlerHash() => r'65fbd92e049fe4f3a0763516f1e68e1614f7630f';
@ProviderFor(CurrentTrackMetadataNotifier)
const currentTrackMetadataProvider = CurrentTrackMetadataNotifierProvider._();
final class CurrentTrackMetadataNotifierProvider
extends $NotifierProvider<CurrentTrackMetadataNotifier, TrackMetadata?> {
const CurrentTrackMetadataNotifierProvider._()
: super(
from: null,
argument: null,
retry: null,
name: r'currentTrackMetadataProvider',
isAutoDispose: false,
dependencies: null,
$allTransitiveDependencies: null,
);
@override
String debugGetCreateSourceHash() => _$currentTrackMetadataNotifierHash();
@$internal
@override
CurrentTrackMetadataNotifier create() => CurrentTrackMetadataNotifier();
/// {@macro riverpod.override_with_value}
Override overrideWithValue(TrackMetadata? value) {
return $ProviderOverride(
origin: this,
providerOverride: $SyncValueProvider<TrackMetadata?>(value),
);
}
}
String _$currentTrackMetadataNotifierHash() =>
r'0a491bd4edda2b010ed3d6f7dd459f4ac8689a5f';
abstract class _$CurrentTrackMetadataNotifier
extends $Notifier<TrackMetadata?> {
TrackMetadata? build();
@$mustCallSuper
@override
void runBuild() {
final created = build();
final ref = this.ref as $Ref<TrackMetadata?, TrackMetadata?>;
final element =
ref.element
as $ClassProviderElement<
AnyNotifier<TrackMetadata?, TrackMetadata?>,
TrackMetadata?,
Object?,
Object?
>;
element.handleValue(ref, created);
}
}