toCurrencyString method
Converts to a currency-formatted string.
1234567.89.toCurrencyString() // '1,234,567.89'
1000.toCurrencyString(symbol: '\$') // '\$1,000'
Implementation
String toCurrencyString({
String delimiter = ',',
int precision = 2,
String symbol = '',
}) {
final fixed = toStringAsFixed(precision);
final parts = fixed.split('.');
var integer = parts[0];
final decimal = parts.length > 1 ? parts[1] : '';
// Insert thousands delimiters
final buf = StringBuffer();
for (var i = 0; i < integer.length; i++) {
if (i > 0 && (integer.length - i) % 3 == 0) buf.write(delimiter);
buf.write(integer[i]);
}
integer = buf.toString();
final hasDecimal = decimal.isNotEmpty && decimal != '0' * precision;
final result = hasDecimal ? '$integer.$decimal' : integer;
return '$symbol$result';
}