From 143cc7a6026444fccc3a0ec83029885cba3f9416 Mon Sep 17 00:00:00 2001 From: AlaaElattar Date: Wed, 2 Apr 2025 17:19:29 +0200 Subject: [PATCH] handle validations onChanged --- app/lib/screens/wallets/send.dart | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/app/lib/screens/wallets/send.dart b/app/lib/screens/wallets/send.dart index de24d5d8c..2d59ca676 100644 --- a/app/lib/screens/wallets/send.dart +++ b/app/lib/screens/wallets/send.dart @@ -110,25 +110,33 @@ class _WalletSendScreenState extends ConsumerState { final fromAddress = fromController.text.trim(); toAddressError = null; if (toAddress.isEmpty) { - toAddressError = "Address can't be empty"; + setState(() { + toAddressError = "Address can't be empty"; + }); return false; } if (toAddress == fromAddress) { - toAddressError = '"To" and "From" addresses must be different'; + setState(() { + toAddressError = '"To" and "From" addresses must be different'; + }); return false; } if (chainType == ChainType.TFChain) { if (toAddress.length != 48) { - toAddressError = 'Address length should be 48 characters'; + setState(() { + toAddressError = 'Address length should be 48 characters'; + }); return false; } } if (chainType == ChainType.Stellar) { if (!isValidStellarAddress(toAddress)) { - toAddressError = 'Invaild Stellar address'; + setState(() { + toAddressError = 'Invaild Stellar address'; + }); return false; } @@ -137,16 +145,23 @@ class _WalletSendScreenState extends ConsumerState { final Wallet? wallet = matchingWallets.isNotEmpty ? matchingWallets.first : null; if (wallet != null && wallet.stellarBalance == '-1') { - toAddressError = 'Wallet not activated on stellar'; + setState(() { + toAddressError = 'Wallet not activated on stellar'; + }); return false; } else { final balance = await Stellar.getBalanceByAccountId(toAddress); if (balance == '-1') { - toAddressError = 'Wallet not activated on stellar'; + setState(() { + toAddressError = 'Wallet not activated on stellar'; + }); return false; } } } + setState(() { + toAddressError = null; + }); return true; } @@ -196,6 +211,7 @@ class _WalletSendScreenState extends ConsumerState { void _selectToAddress(String address) { toController.text = address; + _validateToAddress(); setState(() {}); } @@ -276,6 +292,9 @@ class _WalletSendScreenState extends ConsumerState { color: Theme.of(context).colorScheme.onSurface, ), controller: toController, + onChanged: (text) async { + _validateToAddress(); + }, decoration: InputDecoration( labelText: 'To', errorText: toAddressError,