playAyahWords method
تشغيل كل كلمات آية بالتسلسل.
Implementation
Future<void> playAyahWords({
required int surahNumber,
required int ayahNumber,
int? totalWords,
}) async {
if (!isInitialized) return;
final isConnected = InternetConnectionController.instance.isConnected;
if (isConnected) {
try {
await stop();
isLoading.value = true;
currentPlayingRef.value = WordRef(
surahNumber: surahNumber,
ayahNumber: ayahNumber,
wordNumber: 0, // يشير إلى كل الآية
);
isPlayingAyahWords.value = true;
final wordCount =
totalWords ?? getAyahWordCount(surahNumber, ayahNumber);
if (wordCount <= 0) {
isLoading.value = false;
isPlaying.value = false;
currentPlayingRef.value = null;
isPlayingAyahWords.value = false;
return;
}
final sources = List<AudioSource>.generate(
wordCount,
(i) => AudioSource.uri(
Uri.parse(_buildWordUrl(
surahNumber: surahNumber,
ayahNumber: ayahNumber,
wordNumber: i + 1,
)),
),
);
await _audioPlayer.setAudioSources(sources);
isLoading.value = false;
isPlaying.value = true;
_listenForCompletion();
await _audioPlayer.play();
} catch (e) {
log('WordAudioService.playAyahWords error: $e',
name: 'WordAudioService');
isLoading.value = false;
isPlaying.value = false;
currentPlayingRef.value = null;
isPlayingAyahWords.value = false;
}
} else {
ToastUtils().showToast(
Get.context!,
'لا يوجد اتصال بالإنترنت',
);
}
}