calculateCaloriesAndTime method
Map<String, dynamic>
calculateCaloriesAndTime(
)
Implementation
Map<String, dynamic> calculateCaloriesAndTime() {
final int caloriesToLoseOrGain;
final double weightDifference = targetWeight - currentWeight;
int daysToGoal = 0;
int dailyCalories;
if (goal == Goal.lose_weight) {
caloriesToLoseOrGain = -500; // Safe deficit
daysToGoal =
((weightDifference.abs() * 7700) / caloriesToLoseOrGain.abs())
.ceil(); // 1 kg = 7700 kcal
dailyCalories = (bmr + caloriesToLoseOrGain).toInt();
if (dailyCalories < 1200) {
// Don't go below 1200 kcal/day
dailyCalories = 1200;
}
} else if (goal == Goal.gain_weight) {
caloriesToLoseOrGain = 500; // Safe surplus
daysToGoal = ((weightDifference.abs() * 7700) / caloriesToLoseOrGain)
.ceil(); // 1 kg = 7700 kcal
dailyCalories = (bmr + caloriesToLoseOrGain).toInt();
if (dailyCalories > 3500) {
// Don't go above 3500 kcal/day
dailyCalories = 3500;
}
} else {
caloriesToLoseOrGain = 0;
dailyCalories = bmr.toInt();
}
return {
'calories': dailyCalories,
'timeTaken': daysToGoal,
};
}