initializeData method
void
initializeData(- dynamic data
)
Implementation
void initializeData(dynamic data) async {
List<Map<String, dynamic>> setAnswer = (data["questionAnswer"] as List)
.map((dynamic e) => e as Map<String, dynamic>)
.toList();
List<String> majors = [];
List<String> minors = [];
for (Map<String, dynamic> obj in setAnswer) {
String majorNote = (obj["major"].cast<String>())
.where((elem) => (elem as String).isNotEmpty)
.join(" ");
String minorNote = (obj["minor"].cast<String>())
.where((elem) => (elem as String).isNotEmpty)
.join(" ");
majors.add(majorNote);
minors.add(minorNote);
}
List<int> indices = List.generate(majors.length, (i) => i);
indices.shuffle(Random());
majors = indices.map((i) => majors[i]).toSet().toList();
minors = indices.map((i) => minors[i]).toSet().toList();
groupBy = data["group_by"];
numberExercise = (majors.length / groupBy).floor();
for (int i = 0; i < numberExercise; i++) {
int start = i * groupBy;
int end = start + groupBy;
_answerQueue.add({
"questions": majors.sublist(start, end),
"answers": minors.sublist(start, end),
});
}
exercise = _answerQueue.first;
_answerList = List<String>.from(exercise["answers"]!);
_answerList.shuffle();
selectedAnswerList = List<String>.filled(exercise["questions"]!.length, "");
correctAnswerList = List<bool?>.filled(exercise["questions"]!.length, null);
lives = data["lives"];
question = data["question"];
isInitialized = true;
}