initializeData method

void initializeData(
  1. 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;
}