loadSurah method
تحميل سورة محددة Load specific surah
Implementation
Future<void> loadSurah(int surahNumber) async {
try {
isLoading(true);
// شرح: إعادة تعيين البيانات السابقة
// Explanation: Reset previous data
resetData();
_surahNumber = surahNumber;
// شرح: التأكد من تحميل القرآن الكامل أولاً
// Explanation: Ensure full Quran is loaded first
final quranCtrl = QuranCtrl.instance;
if (quranCtrl.staticPages.isEmpty) {
await quranCtrl.loadQuran();
}
// شرح: فلترة آيات السورة المطلوبة
// Explanation: Filter required surah ayahs
final selectedSurahAyahs = quranCtrl.ayahs
.where((ayah) => ayah.surahNumber == surahNumber)
.toList();
log('Loading surah $surahNumber, found ${selectedSurahAyahs.length} ayahs',
name: 'SurahCtrl');
if (selectedSurahAyahs.isEmpty) {
log('No ayahs found for surah $surahNumber', name: 'SurahCtrl');
isLoading(false);
return;
}
surahAyahs.assignAll(selectedSurahAyahs);
// شرح: إنشاء معلومات السورة
// Explanation: Create surah information
currentSurah.value = _createSurahModel(selectedSurahAyahs.first);
// شرح: تقسيم آيات السورة إلى صفحات باستخدام نفس منطق QuranCtrl
// Explanation: Divide surah ayahs into pages using the same logic as QuranCtrl
await _createSurahPages(selectedSurahAyahs);
log('Created ${surahPages.length} pages for surah $surahNumber',
name: 'SurahCtrl');
isLoading(false);
update();
} catch (e) {
log('Error loading surah: $e', name: 'SurahCtrl');
isLoading(false);
}
}