I am not getting why / operator is giving me this error. plz someone help me with it FYI i am making a BMI calculator app with refernce to Angela Yu's course on Udemy.
import 'dart:math';
class CalculatorBrain {
CalculatorBrain({this.height, this.weight});
final int? height;
final int? weight;
double _bmi = 0;
String calculateBMI() {
_bmi = weight / pow(height / 100, 2);
return _bmi.toStringAsFixed(1);
}
String getResults() {
if (_bmi >= 25)
return 'Overweight';
else if (_bmi > 18.5)
return 'Normal';
else
return 'Underweight';
}
String getInterpretation() {
if (_bmi >= 25)
return 'You have a higher than normal body weigth. Try to exercise more.';
else if (_bmi > 18.5)
return 'You have a normal body weight. Good job!';
else
return 'You have a lower than normal body weight. You can eat a bit more.';
}
}
your efforts will be appreciated
CodePudding user response:
You have to find a good fallback in case height
or wight
is null
. One way to do this is using the ??
operator.
This is how you can fallback to 0
in both cases, which would cause more errors because you then would divide by 0.
_bmi = (weight ?? 0) / pow((height ?? 0) / 100, 2);
Better, set _bmi
to a specific value when one or both values are missing.
double _bmi = 0;
String calculateBMI() {
// always set it to 0 first in case values are missing
_bmi = 0;
if (height != null && weight != null) {
_bmi = weight! / pow(height! / 100, 2);
}
return _bmi.toStringAsFixed(1);
}
CodePudding user response:
The answer by @passsy is technically right but I'm wondering why you declared height and weight as nullable. You could rewrite your class as below by making the 2 parameters required (and thus making sure they cannot be null):
class CalculatorBrain {
CalculatorBrain({required this.height, required this.weight});
final int height;
final int weight;
double _bmi = 0;
String calculateBMI() {
_bmi = weight / pow(height / 100, 2);
return _bmi.toStringAsFixed(1);
}