format method
Format a number as currency string
Implementation
String format(double value) {
final parts = value.abs().toStringAsFixed(decimals).split('.');
final integerPart = parts[0];
final decimalPart = parts.length > 1 ? parts[1] : '';
// Add thousand separators
final formattedInteger = integerPart.replaceAllMapped(
RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))'),
(Match m) => '${m[1]}$thousandSeparator',
);
// Build the formatted string
final formattedNumber = decimalPart.isNotEmpty
? '$formattedInteger$decimalSeparator$decimalPart'
: formattedInteger;
// Add sign if negative
final sign = value < 0 ? '-' : '';
// Place symbol before or after
if (symbolBefore) {
return '$sign$symbol$formattedNumber';
} else {
return '$sign$formattedNumber $symbol';
}
}