calculate static method

ReviewResult calculate({
  1. required String algorithm,
  2. required int quality,
  3. required int repetitions,
  4. required double easinessFactor,
  5. required int intervalDays,
  6. double? stability,
  7. double? difficulty,
  8. String? cardState,
  9. double? lastElapsedDays,
  10. double targetRetention = 0.9,
})

Implementation

static ReviewResult calculate({
  required String algorithm,
  required int quality,
  // SM-2 fields
  required int repetitions,
  required double easinessFactor,
  required int intervalDays,
  // FSRS fields (nullable)
  double? stability,
  double? difficulty,
  String? cardState,
  double? lastElapsedDays,
  double targetRetention = 0.9,
}) {
  if (algorithm == 'fsrs') {
    return _calculateFsrs(
      quality: quality,
      stability: stability ?? 0,
      difficulty: difficulty ?? 0,
      cardState: cardState ?? 'new',
      lastElapsedDays: lastElapsedDays ?? 0,
      targetRetention: targetRetention,
      repetitions: repetitions,
      easinessFactor: easinessFactor,
    );
  }
  return SpacedRepetition.calculate(
    quality: quality,
    repetitions: repetitions,
    easinessFactor: easinessFactor,
    intervalDays: intervalDays,
  );
}