38 lines
1.3 KiB
Dart
38 lines
1.3 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
import 'package:pshared/models/money.dart';
|
|
import 'package:pshared/utils/currency.dart';
|
|
import 'package:pshared/utils/localization.dart';
|
|
import 'package:intl/intl.dart';
|
|
|
|
|
|
String formatMoney(Money? money, {String fallback = '-'}) {
|
|
final amount = money?.amount.trim();
|
|
if (amount == null || amount.isEmpty) return fallback;
|
|
return '$amount ${money!.currency}';
|
|
}
|
|
|
|
String formatAmount(double amount, String currency, {String fallback = '-'}) {
|
|
final trimmed = currency.trim();
|
|
if (trimmed.isEmpty) return amountToString(amount);
|
|
final symbol = currencySymbolFromCode(trimmed);
|
|
final suffix = symbol ?? trimmed;
|
|
return '${amountToString(amount)} $suffix';
|
|
}
|
|
|
|
String formatDateLabel(BuildContext context, DateTime? date, {String fallback = '-'}) {
|
|
if (date == null || date.millisecondsSinceEpoch == 0) return fallback;
|
|
return dateTimeToLocalFormat(context, date.toLocal());
|
|
}
|
|
|
|
String formatLongDate(BuildContext context, DateTime? date, {String fallback = '-'}) {
|
|
if (date == null || date.millisecondsSinceEpoch == 0) return fallback;
|
|
final locale = Localizations.localeOf(context).toString();
|
|
final formatter = DateFormat('d MMMM y', locale);
|
|
return formatter.format(date.toLocal());
|
|
}
|
|
|
|
String collapseWhitespace(String value) {
|
|
return value.replaceAll(RegExp(r'\s+'), ' ').trim();
|
|
}
|