formatNumberLocale function

String formatNumberLocale(
  1. num value, {
  2. int decimalPlaces = 0,
  3. String groupSep = ',',
})

Formats number with decimalPlaces and optional groupSep (e.g. ',').

Implementation

String formatNumberLocale(
  num value, {
  int decimalPlaces = 0,
  String groupSep = ',',
}) {
  final String raw = decimalPlaces <= 0
      ? value.round().toString()
      : value.toStringAsFixed(decimalPlaces);
  if (groupSep.isEmpty) return raw;
  final List<String> parts = raw.split('.');
  final String intPart = parts[0];
  final String sign = intPart.startsWith('-') ? '-' : '';
  final String digits = sign.isEmpty ? intPart : intPart.substringSafe(1);
  final StringBuffer sb = StringBuffer(sign);
  for (int i = 0; i < digits.length; i++) {
    if (i > 0 && (digits.length - i) % 3 == 0) sb.write(groupSep);
    sb.write(digits[i]);
  }
  if (parts.length > 1) {
    sb
      ..write('.')
      ..write(parts[1]);
  }
  return sb.toString();
}