searchBySurahName static method

Future<SurahSearchResult> searchBySurahName(
  1. String name
)

Search for surahs by Arabic or English name.

name Surah name to search for (supports partial matching)

Returns SurahSearchResult containing matching surahs.

Throws ArgumentError if name is empty.

Example:

final results = await QuranService.searchBySurahName('Fatiha');
print('Found: ${results.results.first.englishName}');

Implementation

static Future<SurahSearchResult> searchBySurahName(String name) async {
  await initialize();
  _ensureDataLoaded();

  QuranValidators.validateSearchTerm(name);

  final searchTerm = name.toLowerCase().trim();
  final List<Surah> matchingSurahs = [];

  for (final surah in _quranData!.surahs) {
    final englishNameLower = surah.englishName.toLowerCase();
    final arabicName = surah.name;

    if (englishNameLower.contains(searchTerm) || arabicName.contains(name)) {
      matchingSurahs.add(surah);
    }
  }

  return SurahSearchResult(
    searchTerm: name,
    totalResults: matchingSurahs.length,
    results: matchingSurahs,
  );
}