Home > Back-end >  The operator '/' can't be unconditionally invoked because the receiver can be 'n
The operator '/' can't be unconditionally invoked because the receiver can be 'n

Time:02-16

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);
  }
  • Related