getAyahRange static method

Future<AyahRange> getAyahRange(
  1. int surahId,
  2. int startAyah,
  3. int endAyah
)

Get a range of consecutive ayat from a specific surah.

surahId The surah number (1-114) startAyah Starting ayah number (inclusive) endAyah Ending ayah number (inclusive)

Returns AyahRange containing the specified range of ayat.

Throws ArgumentError if parameters are invalid.

Example:

final range = await QuranService.getAyahRange(2, 1, 5); // Al-Baqarah 1-5
print('Reading ${range.range.count} ayat from ${range.surah.englishName}');

Implementation

static Future<AyahRange> getAyahRange(
    int surahId, int startAyah, int endAyah) async {
  await initialize();
  _ensureDataLoaded();

  QuranValidators.validateSurahId(surahId);

  final surah = _quranData!.surahs.firstWhere(
    (s) => s.id == surahId,
    orElse: () => throw ArgumentError('Surah $surahId not found'),
  );

  QuranValidators.validateAyahRange(startAyah, endAyah, surah.numberOfAyahs);

  final ayatInRange = surah.ayat
      .where((ayah) => ayah.id >= startAyah && ayah.id <= endAyah)
      .toList();

  return AyahRange(
    surah: surah,
    range: AyahRangeInfo(
      start: startAyah,
      end: endAyah,
      count: ayatInRange.length,
    ),
    ayat: ayatInRange,
  );
}