Bug: entered the converted amount in expense

This commit is contained in:
Hillel Coren 2021-10-21 17:45:49 +03:00
parent b8c7789b83
commit 0497167f6d
1 changed files with 25 additions and 19 deletions

View File

@ -106,6 +106,25 @@ class ExpenseEditSettingsState extends State<ExpenseEditSettings> {
});
}
void _calculateExchangeRate() {
if (_convertedAmount == 0) {
return;
}
final viewModel = widget.viewModel;
final expense = viewModel.expense;
final amount = expense.grossAmount;
final exchangeRate = _convertedAmount / amount;
_exchangeRateController.removeListener(_onChanged);
_exchangeRateController.text = formatNumber(exchangeRate, context,
formatNumberType: FormatNumberType.inputMoney);
_exchangeRateController.addListener(_onChanged);
viewModel.onChanged(expense.rebuild((b) => b..exchangeRate = exchangeRate));
_convertedAmount = 0;
}
@override
Widget build(BuildContext context) {
final localization = AppLocalization.of(context);
@ -229,7 +248,7 @@ class ExpenseEditSettingsState extends State<ExpenseEditSettings> {
_setCurrency(currency),
),
DecoratedFormField(
key: ValueKey('__${expense.invoiceCurrencyId}__'),
key: ValueKey('__rate_${expense.invoiceCurrencyId}__'),
controller: _exchangeRateController,
keyboardType:
TextInputType.numberWithOptions(decimal: true),
@ -237,23 +256,7 @@ class ExpenseEditSettingsState extends State<ExpenseEditSettings> {
isPercent: true,
),
Focus(
onFocusChange: (hasFocus) {
if (_convertedAmount == 0) {
return;
}
final amount = expense.grossAmount;
final exchangeRate = _convertedAmount / amount;
_exchangeRateController.removeListener(_onChanged);
_exchangeRateController.text = formatNumber(
exchangeRate, context,
formatNumberType: FormatNumberType.inputMoney);
_exchangeRateController.addListener(_onChanged);
viewModel.onChanged(expense
.rebuild((b) => b..exchangeRate = exchangeRate));
_convertedAmount = 0;
},
onFocusChange: (hasFocus) => _calculateExchangeRate(),
child: DecoratedFormField(
key: ValueKey(
'__expense_amount_${expense.grossAmount}_${expense.exchangeRate}__'),
@ -269,7 +272,10 @@ class ExpenseEditSettingsState extends State<ExpenseEditSettings> {
onChanged: (value) {
_convertedAmount = parseDouble(value);
},
onSavePressed: viewModel.onSavePressed,
onSavePressed: (context) {
_calculateExchangeRate();
viewModel.onSavePressed(context);
},
),
),
SizedBox(height: 16),