import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:pshared/models/money.dart'; import 'package:pshared/utils/currency.dart'; import 'package:pshared/utils/localization.dart'; String formatMoney(Money? money, {String fallback = '-'}) { if (money == null) return fallback; final amount = money.amount.trim(); if (amount.isEmpty) return fallback; final symbol = currencySymbolFromCode(money.currency); final suffix = symbol ?? money.currency; if (suffix.trim().isEmpty) return amount; return '$amount $suffix'; } 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(); }