buildNumberString function
Implementation
String buildNumberString(double number, {bool decimalUptoTwo = false}) {
if (number.isNaN || number.isInfinite || number == 0.0) {
return '0';
}
String numStr = number.toStringAsFixed(2);
final wholeAndFraction = numStr.split('.');
String fraction = wholeAndFraction[1];
final whole = wholeAndFraction[0];
var index = 1;
while (index >= 0 && fraction.codeUnitAt(index) == _zeroCodeUnit) {
index -= 1;
}
fraction = index < 0 ? '' : fraction.substring(0, index + 1);
final List<int> numUnits = [];
var commaCliff = 3;
for (final char in whole.codeUnits.reversed) {
if (commaCliff == 0) {
numUnits.add(','.codeUnitAt(0));
commaCliff = 2;
}
numUnits.add(char);
commaCliff -= 1;
}
if (fraction.isNotEmpty) {
if (fraction.length == 1 && decimalUptoTwo) {
fraction = '.${fraction}0';
} else {
fraction = '.$fraction';
}
}
return '${String.fromCharCodes(numUnits.reversed)}$fraction';
}