formatCell function
String
formatCell(
- dynamic value,
- ColumnFormat format, {
- String locale = 'de-DE',
- String currency = 'EUR',
Formats one table or aggregate value using format.
Implementation
String formatCell(
dynamic value,
ColumnFormat format, {
String locale = 'de-DE',
String currency = 'EUR',
}) {
if (value == null) return '';
if (format == ColumnFormat.text) return value.toString();
final number = value is num
? value.toDouble()
: double.tryParse(value.toString().replaceAll(',', '.'));
if (number == null) return value.toString();
final parts = number.abs().toStringAsFixed(2).split('.');
final grouped = parts.first.replaceAllMapped(
RegExp(r'\B(?=(\d{3})+(?!\d))'),
(_) => locale.startsWith('en')
? ','
: locale.endsWith('CH')
? '’'
: '.',
);
final decimal = locale.startsWith('en') ? '.' : ',';
final formatted = '${number < 0 ? '-' : ''}$grouped$decimal${parts.last}';
if (format != ColumnFormat.currency) return formatted;
final symbol =
const {
'EUR': '€',
'USD': r'$',
'CHF': 'CHF',
'GBP': '£',
'JPY': '¥',
}[currency] ??
currency;
return locale.startsWith('en') ? '$symbol$formatted' : '$formatted $symbol';
}