QuranData.fromJson constructor
Creates QuranData from JSON
Implementation
factory QuranData.fromJson(Map<String, dynamic> json) {
final surahsList = json['surahs'] as List<dynamic>;
// Calculate metadata from surahs
final totalAyat = surahsList.fold<int>(0, (sum, surahJson) {
final surah = surahJson as Map<String, dynamic>;
return sum + (surah['numberOfAyahs'] as int);
});
final meccanCount = surahsList.where((surahJson) {
final surah = surahJson as Map<String, dynamic>;
return surah['revelationType'] == 'Meccan';
}).length;
final medinanCount = surahsList.length - meccanCount;
return QuranData(
version: json['version'] as String? ?? '1.1',
source:
json['source'] as String? ?? 'Tanzil Project - https://tanzil.net',
surahs: surahsList
.map((surahJson) => Surah.fromJson(surahJson as Map<String, dynamic>))
.toList(),
metadata: QuranMetadata(
totalSurahs: surahsList.length,
totalAyat: totalAyat,
meccanSurahs: meccanCount,
medinanSurahs: medinanCount,
dataVersion: json['version'] as String? ?? '1.1',
lastUpdated: DateTime.now(), // Could be parsed from JSON if available
),
);
}