79656760

Date: 2025-06-07 07:59:04
Score: 0.5
Natty:
Report link
i figured it out 

i was call GpaCalculationsCubit at launch the app and call this function at create a new constructor 

~~~
void calculateGpaAndCgpa() {
    double totalCredits = 0.0;
    double cgpaPointsOriginal = 0.0;
    double cgpaPointsChanged = 0.0;
    double cgpaCredits = 0.0;
    List<SemesterModel> updatedSemesters = [];

    for (var semester in student.semesters) {
      double gpaPoints = 0.0;
      double gpaCredits = 0.0;
      double earnedCredits = 0.0;

      bool isRepeatedAndChangedFound = false;

      for (var course in semester.courses) {
        if (course.isRepeated && course.isChanged) {
          isRepeatedAndChangedFound = true;
          break;
        }
      }

      if (isRepeatedAndChangedFound) {
        for (var i = student.semesters.indexOf(semester); i >= 0; i--) {
          for (var course in student.semesters[i].courses) {
            if (course.isRepeated) {
              outerloop:
              for (var j = i - 1; j >= 0; j--) {
                for (var oldCourse in student.semesters[j].courses) {
                  if (oldCourse.name.trim().toLowerCase() ==
                      course.name.trim().toLowerCase()) {
                    cgpaPointsOriginal +=
                        getGradePoint(course.grade) * course.credits -
                        getGradePoint(oldCourse.grade) * oldCourse.credits;
                    break outerloop;
                  }
                }
              }
            }
          }
        }
      } else {
        for (var course in semester.courses) {
          if (course.isRepeated) {
            cgpaPointsOriginal = cgpaPointsChanged;
            break;
          }
        }
      }

      for (var course in semester.courses) {
        if (course.grade == '--') {
          gpaCredits += course.credits;
          continue;
        }
        gpaPoints += getGradePoint(course.grade) * course.credits;
        gpaCredits += course.credits;
        earnedCredits +=
            course.isRepeated ||
                    (course.isChanged && getGradePoint(course.newGrade) == 0) ||
                    (!course.isChanged && getGradePoint(course.grade) == 0)
                ? 0.0
                : course.credits;

        cgpaPointsOriginal +=
            course.isRepeated
                ? 0.0
                : getGradePoint(course.grade) * course.credits;

        cgpaCredits += course.isRepeated ? 0.0 : course.credits;

        cgpaPointsChanged +=
            course.isRepeated
                ? 0.0
                : course.isChanged
                ? getGradePoint(course.newGrade) * course.credits
                : getGradePoint(course.grade) * course.credits;
      }

      totalCredits += earnedCredits;

      double gpa = gpaCredits > 0 ? gpaPoints / gpaCredits : 0.0;

      double cgpaOriginal =
          cgpaCredits > 0 ? cgpaPointsOriginal / cgpaCredits : 0.0;
      double cgpaChanged =
          cgpaCredits > 0 ? cgpaPointsChanged / cgpaCredits : 0.0;

      updatedSemesters.add(
        SemesterModel(
          name: semester.name,
          courses: semester.courses,
          gpa: gpa,
          selected: semester.selected,
          cgpaOriginal: cgpaOriginal,
          cgpaChanged: cgpaChanged,
          attemptedCredits: gpaCredits,
          earnedCredits: earnedCredits,
          note: semester.note,
        ),
      );
    }

    final updatedStudent = StudentModel(
      cgpa:
          updatedSemesters.isNotEmpty ? updatedSemesters.last.cgpaChanged : 0.0,
      totalCredits: totalCredits.toInt(),
      semesters: updatedSemesters,
    );

    box.put('default', updatedStudent);

    emit(
      state.copyWith(
        cgpa: updatedStudent.cgpa,
        totalCredits: totalCredits.toInt(),
        semesters: updatedSemesters,
      ),
    );
  }
~~~

the error was here :
~~~
updatedSemesters.add(
        SemesterModel(
          name: semester.name,
          courses: semester.courses,
          gpa: gpa,
          selected: semester.selected,
          cgpaOriginal: cgpaOriginal,
          cgpaChanged: cgpaChanged,
          attemptedCredits: gpaCredits,
          earnedCredits: earnedCredits,
          //i was not add the note attribute here
          note: semester.note,
        ),
      );
    }
~~~

but i need to understand why in second restart not at first one ?
Reasons:
  • Blacklisted phrase (0.5): i need
  • Whitelisted phrase (-2): i figured it out
  • Long answer (-1):
  • Has code block (-0.5):
  • Ends in question mark (2):
  • Self-answer (0.5):
  • Low reputation (1):
Posted by: mohamed_yaseen