init method
Initialize the audio player and restore last reciter.
Implementation
Future<void> init() async {
_player ??= AudioPlayer();
final saved = await storage.getInt('quran_audio_reciter');
if (saved != null && saved >= 0 && saved < reciters.length) {
_reciterIndex = saved;
}
final savedQuality = await storage.getString('quran_audio_quality');
if (savedQuality != null) {
_quality = AudioQuality.values.firstWhere(
(q) => q.key == savedQuality,
orElse: () => AudioQuality.medium,
);
}
_player!.playerStateStream.listen((s) {
state.value = state.value.copyWith(
isPlaying: s.playing,
isLoading: s.processingState == ProcessingState.loading ||
s.processingState == ProcessingState.buffering,
);
if (s.processingState == ProcessingState.completed) {
_autoAdvance();
}
});
_player!.positionStream.listen((pos) {
state.value = state.value.copyWith(position: pos);
});
_player!.durationStream.listen((dur) {
if (dur != null) {
state.value = state.value.copyWith(duration: dur);
}
});
}