createExerciseSet method
- {required List<
ExerciseModel> exerciseModelList}
同じ運動が連続しないようにランダムに運動を選択し、1セット分の運動リストを作成する
Implementation
List<ExerciseModel> createExerciseSet({
required List<ExerciseModel> exerciseModelList,
}) {
final listLength = exerciseModelList.length;
if (listLength < RehabilitationConst.minExerciseDataCountInSet) {
throw ServiceException(
ServiceErrorType.missingExerciseDataError,
ServiceErrorType.missingExerciseDataError.message,
);
}
final exerciseSet = <ExerciseModel>[];
// 1セット分の運動を選択するまで繰り返す
while (exerciseSet.length < RehabilitationConst.exerciseSectionCountInSet) {
/// ランダムなインデックスを取得
final randomIndex = Random().nextInt(listLength);
final exercise = exerciseModelList[randomIndex];
if (exerciseSet.isEmpty) {
// 1つ目の運動はそのまま追加
exerciseSet.add(exercise);
} else {
// 配列の最後に追加された運動と同じ運動が選ばれた場合は追加しない
final lastExercise = exerciseSet.last;
if (exercise.exerciseId != lastExercise.exerciseId) {
exerciseSet.add(exercise);
}
}
}
return exerciseSet;
}