migrateFromSm2 static method
Approximate FSRS state from SM-2 parameters for cold-start migration.
Implementation
static FsrsState migrateFromSm2({
required double easinessFactor,
required int intervalDays,
required int repetitions,
}) {
// Difficulty: EF 2.5 (easy) ā Dā5, EF 1.3 (hard) ā Dā8.4
final difficulty = (11 - 2 * easinessFactor).clamp(1.0, 10.0);
// Stability: the current interval implies how long the memory can last.
final stability = intervalDays < 1 ? 1.0 : intervalDays.toDouble();
final state = repetitions == 0
? FsrsCardState.newCard
: (repetitions < 3 ? FsrsCardState.learning : FsrsCardState.review);
return FsrsState(
stability: stability,
difficulty: difficulty,
cardState: state,
lastElapsedDays: 0,
scheduledDays: intervalDays,
);
}