loadSurah method

Future<void> loadSurah(
  1. int surahNumber
)

تحميل سورة محددة 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);
  }
}