applyToLearningCardState method

dynamic applyToLearningCardState (LearningCardState prev, DateTime ts, Rating rating)

Implementation

static applyToLearningCardState(
    LearningCardState prev, DateTime ts, Rating rating) {
  if (rating == Rating.Easy ||
      (rating == Rating.Easy || rating == Rating.Good) &&
          prev.consecutiveCorrect > 0) {
    var interval = prev.consecutiveCorrect > 0
        ? INITIAL_DAYS_WITHOUT_JUMP
        : INITIAL_DAYS_WITH_JUMP;

    return ReviewingCardState(
        master: prev.master,
        combination: prev.combination,
        factor: INITIAL_FACTOR,
        lapses: 0,
        interval: interval.toDouble(),
        lastReviewed: ts);
  } else if (rating == Rating.Again) {
    return LearningCardState(
        master: prev.master,
        combination: prev.combination,
        consecutiveCorrect: 0,
        lastReviewed: ts);
  } else if ((rating == Rating.Good || rating == Rating.Hard) &&
      prev.consecutiveCorrect < 1) {
    return LearningCardState(
        master: prev.master,
        combination: prev.combination,
        consecutiveCorrect: prev.consecutiveCorrect + 1,
        lastReviewed: ts);
  }
}