format method

String format(
  1. double value
)

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