buildNumberString function

String buildNumberString(
  1. double number, {
  2. bool decimalUptoTwo = false,
})

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';
}