getCompleteResultQuranData method
Implementation
Future<List<QuranPage>> getCompleteResultQuranData() async {
var pages = await getCompleteQuranAsset();
List<QuranPage> resultedPage = [];
for (var pageIndex = 0; pageIndex < pages.length; pageIndex++) {
var page = pages[pageIndex];
List<QuranLineResultModel> lines = [
QuranLineResultModel(words: []),
QuranLineResultModel(words: []),
QuranLineResultModel(words: []),
QuranLineResultModel(words: []),
QuranLineResultModel(words: []),
QuranLineResultModel(words: []),
QuranLineResultModel(words: []),
QuranLineResultModel(words: []),
QuranLineResultModel(words: []),
QuranLineResultModel(words: []),
QuranLineResultModel(words: []),
QuranLineResultModel(words: []),
QuranLineResultModel(words: []),
QuranLineResultModel(words: []),
QuranLineResultModel(words: []),
];
var pageNumber = 0;
for (var verseIndex = 0; verseIndex < page.verses!.length; verseIndex++) {
var verse = page.verses![verseIndex];
for (var wordIndex = 0; wordIndex < verse.words!.length; wordIndex++) {
// add line word
lines[verse.words![wordIndex].lineNumber! - 1]
.words
.add(verse.words![wordIndex]);
//set page number
if (pageNumber == 0) {
pageNumber = lines[verse.words![wordIndex].lineNumber! - 1]
.words[wordIndex]
.pageNumber!;
}
//get surah number
lines[verse.words![wordIndex].lineNumber! - 1].surahNum = int.parse(
verse.verseKey!.substring(0, (verse.verseKey!.indexOf(':'))));
}
}
for (var lineIndex = 0; lineIndex < lines.length; lineIndex++) {
// check if begining of surah or not
// exception
// Al Fatihah Exception
if ((lineIndex != lines.length - 1) && pageNumber == 1) {
// surah begining
lines[lineIndex].isSurahBegining = true;
}
if (lines[lineIndex].words.isEmpty) {
// For surah with 14 lines, 1st lines basmalah
if (lineIndex == 0 &&
lines[lineIndex + 1].words.isNotEmpty &&
pageNumber != 1) {
lines[lineIndex].isBasmallah = true;
lines[lineIndex].isSurahBegining = false;
lines.insert(lineIndex,
QuranLineResultModel(words: [], isSurahBegining: true));
}
if ((lineIndex != lines.length - 1) &&
lines[lineIndex + 1].words.isEmpty) {
// surah begining
lines[lineIndex].isSurahBegining = true;
// Set basmalah
if (pageNumber != 1 || pageNumber != 187) {
lines[lineIndex + 1].isBasmallah = true;
}
// exception
if (pageNumber == 2 && lineIndex > 2) {
lines[lineIndex].isSurahBegining = false;
lines[lineIndex + 1].isBasmallah = false;
}
if (pageNumber == 1 && lineIndex > 2) {
lines[lineIndex].isSurahBegining = false;
lines[lineIndex + 1].isBasmallah = false;
}
}
}
//check stretch
if (lines[lineIndex].words.map((e) => e.qpcUthmaniHafs).join().length <
55 &&
lineIndex == (lines.length - 1)) {
lines[lineIndex].isUsingLineStretch = false;
}
if (pageNumber == 1 || pageNumber == 2) {
lines[lineIndex].isUsingLineStretch = false;
}
if (pageNumber >= 600) {
lines[lineIndex].isUsingLineStretch = false;
}
// get font size
lines[lineIndex].wordSpacing = getWordSpacing(lines[lineIndex].words);
}
resultedPage.add(QuranPage(
lines: lines,
pageNumber: pageNumber,
verses: QuranVersesResultModel(verses: page.verses!)));
}
return resultedPage;
}