feat(App): update Finlytic Flutter app UI and blocs

This commit is contained in:
2026-08-09 21:01:46 +02:00
parent e7427b7464
commit a708d2977c
591 changed files with 1095105 additions and 0 deletions
@@ -0,0 +1,43 @@
import 'package:intl/intl.dart';
/// Formatting utility helpers for currency, percentages, dates, and numbers.
class Formatters {
static final NumberFormat _currencyFormat = NumberFormat.currency(symbol: '\$', decimalDigits: 2);
static final NumberFormat _percentFormat = NumberFormat.decimalPercentPattern(decimalDigits: 2);
/// Formats currency values (e.g., $1,234.56).
static String formatCurrency(double? value, {String symbol = '\$'}) {
if (value == null) return '-';
if (symbol == '\$') return _currencyFormat.format(value);
return NumberFormat.currency(symbol: symbol, decimalDigits: 2).format(value);
}
/// Formats percentage value with sign (e.g. +3.45%).
static String formatPercent(double? value) {
if (value == null) return '0.00%';
final formatted = _percentFormat.format(value / 100);
return value >= 0 ? '+$formatted' : formatted;
}
/// Formats compact numbers (e.g. 1.2M, 3.4B).
static String formatCompactNumber(double? value) {
if (value == null) return '-';
return NumberFormat.compact().format(value);
}
/// Formats ISO date time string to readable short date.
static String formatDate(String? isoDate) {
if (isoDate == null || isoDate.isEmpty) return '-';
try {
final dt = DateTime.parse(isoDate).toLocal();
return DateFormat('dd.MM.yyyy HH:mm').format(dt);
} catch (_) {
return isoDate;
}
}
/// Formats date to day-month format.
static String formatShortDate(DateTime dt) {
return DateFormat('dd. MMM yyyy').format(dt);
}
}