'Sum of TextEditingControllers

I was trying to get the sum of multiple TextEditingController via this function .

  void _CalculTotal() {
double total = 0;
for (var j = 0; j < widget.controllers.length; j++) {
  //print(widget.controllers[i].text);
  total = double.parse(widget.controllers[j].text);

  print(total);
}

}

I'm getting this error :

Invalid double


Solution 1:[1]

Try replacing

total = double.parse(widget.controllers[j].text);

with

total += double.tryParse(widget.controllers[j].text) ?? 0;

Problem 1: Instead of adding values to total you are setting them.

Problem 2: You have to make sure that the entered text can be parsed to double value. So, using tryParse will parse it to double if possible or just add 0 for that entry.

And also you are printing the total in every iteration. Better to do it after the loop. So your final code will look something like this:

void _CalculTotal() {
  double total = 0;
  for (var j = 0; j < widget.controllers.length; j++) {
    //print(widget.controllers[i].text);
    total += double.tryParse(widget.controllers[j].text) ?? 0;
  }
  print(total);
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 eNeM