So I have a method in my controller that calculates me how many values I have in total
get gesamtAnzahl => _products.entries
.map((product) => product.value)
.toList()
.reduce((value, element) => value + element)
.toStringAsFixed(2);
the problem is that I get each product pretty late
So it has a bad state when I try to calculate these values at a time where no product exists
I tried doing something like this
"${controller.gesamtAnzahl == null ? "0" : controller.gesamtAnzahl}"
but I still get the bad state: no element error
what can I do to fix it?
>Solution :
The problem here is that reduce wants at least one element. If you don’t have any elements it will therefore fails. You could instead use fold which have a starting value that can be returned in case no elements are found.
There are also some other questionable code in your example but something like this should work:
get gesamtAnzahl => _products.values
.fold<int>(0, (value, element) => value + element)
.toStringAsFixed(2);
Should be noted that this would only work if you actually wants "0.00" to be returned in case _products are empty.