refactor of money utils with new money2 package

This commit is contained in:
Arseni
2026-03-13 03:17:29 +03:00
parent b4eb1437f6
commit 0091191d97
72 changed files with 453 additions and 982 deletions

View File

@@ -1,10 +1,11 @@
import 'package:money2/money2.dart';
import 'package:flutter/material.dart';
import 'package:pshared/controllers/payment/source.dart';
import 'package:pshared/models/payment/settlement_mode.dart';
import 'package:pshared/provider/payment/amount.dart';
import 'package:pshared/utils/currency.dart';
import 'package:pshared/utils/money.dart';
import 'package:pweb/models/payment/amount/mode.dart';
@@ -22,7 +23,7 @@ class PaymentAmountFieldController extends ChangeNotifier {
PaymentAmountFieldController({required double? initialAmount})
: textController = TextEditingController(
text: initialAmount == null ? '' : amountToString(initialAmount),
text: initialAmount == null ? '' : initialAmount.toString(),
);
PaymentAmountMode get mode => _mode;
@@ -122,18 +123,14 @@ class PaymentAmountFieldController extends ChangeNotifier {
};
double? _parseAmount(String value) {
final parsed = parseMoneyAmount(
value.replaceAll(',', '.'),
fallback: double.nan,
);
return parsed.isNaN ? null : parsed;
return double.tryParse(value.replaceAll(',', '.').trim());
}
void _syncTextWithAmount(double? amount) {
final parsedText = _parseAmount(textController.text);
if (parsedText == amount) return;
final nextText = amount == null ? '' : amountToString(amount);
final nextText = amount == null ? '' : _formatAmount(amount);
_isSyncingText = true;
textController.value = TextEditingValue(
text: nextText,
@@ -142,6 +139,12 @@ class PaymentAmountFieldController extends ChangeNotifier {
_isSyncingText = false;
}
String _formatAmount(double amount) {
final currency = money2CurrencyFromCode(activeCurrencyCode);
if (currency == null) return amount.toString();
return Money.fromNumWithCurrency(amount, currency).toDecimal().toString();
}
@override
void dispose() {
_provider?.removeListener(_handleProviderChanged);

View File

@@ -29,5 +29,4 @@ class RecentPaymentsController extends ChangeNotifier {
_recent = sortOperations(operations).take(5).toList();
notifyListeners();
}
}