From bf3e2e15a3807ed6afa7aa7dcf2dc6a40fc31edd Mon Sep 17 00:00:00 2001 From: Robert Malikowski Date: Fri, 21 Aug 2026 19:09:15 +0200 Subject: [PATCH] guard for fiat amount being null --- lib/new-ui/pages/buy_sell/buy_sell_provider_page.dart | 8 ++++++-- lib/view_model/buy/buy_sell_view_model.dart | 9 ++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/new-ui/pages/buy_sell/buy_sell_provider_page.dart b/lib/new-ui/pages/buy_sell/buy_sell_provider_page.dart index f858a0249..f7cbf571f 100644 --- a/lib/new-ui/pages/buy_sell/buy_sell_provider_page.dart +++ b/lib/new-ui/pages/buy_sell/buy_sell_provider_page.dart @@ -135,7 +135,9 @@ class _BuySellProviderPageState extends State { " " + (widget.buySellViewModel.cryptoCurrency.fullName ?? ""); - ListItem quoteListItem(Quote quote) => ListItemRegularRow( + ListItem quoteListItem(Quote quote) { + final fiatAmount = widget.buySellViewModel.fiatAmountForQuote(quote); + return ListItemRegularRow( keyValue: quote.provider.title, label: quote.rampName ?? quote.provider.title, secondaryLabel: quote.rampName != null ? quote.provider.title : null, @@ -155,11 +157,13 @@ class _BuySellProviderPageState extends State { Text(widget.buySellViewModel .amountForQuote(quote) .toStringWithSymbol(fractionalDigits: 8)), + if(fiatAmount != null) Text( - "= ${widget.buySellViewModel.fiatAmountForQuote(quote).toStringWithSymbol(fractionalDigits: 2, trimZeros: false)}", + "= ${fiatAmount.toStringWithSymbol(fractionalDigits: 2, trimZeros: false)}", style: TextStyle(fontSize: 12, color: Theme.of(context).colorScheme.onSurfaceVariant)) ], )); + } void navigateToConfirmation(BuildContext context) { final page = BuySellConfirmationPage(buySellViewModel: widget.buySellViewModel); diff --git a/lib/view_model/buy/buy_sell_view_model.dart b/lib/view_model/buy/buy_sell_view_model.dart index 185516493..b86d88e8c 100644 --- a/lib/view_model/buy/buy_sell_view_model.dart +++ b/lib/view_model/buy/buy_sell_view_model.dart @@ -175,11 +175,18 @@ abstract class BuySellViewModelBase extends WalletChangeListenerViewModel with S (double.parse(fiatAmount) / quote.rate).toStringAsFixed(cryptoCurrency.decimals), cryptoCurrency); - Money fiatAmountForQuote(Quote quote) => Money.safeParse( + @computed + Money? fiatAmountForQuote(Quote quote) { + if(fiatConversionStore.prices[cryptoCurrency] == null) { + return null; + } + + return Money.safeParse( (fiatConversionStore.prices[cryptoCurrency]! * double.parse(amountForQuote(quote).toString())) .toStringAsFixed(2), fiatCurrency); + } // based on usd values, should have roughly equal worth (was done with ai though so it's subject to correction) static final Map> _defaultAmountsMap = {