From bbbea431ab00ac399a5624a887149a86a6268069 Mon Sep 17 00:00:00 2001 From: Julian Date: Mon, 9 Jun 2025 12:22:05 -0600 Subject: [PATCH] More safearea wraps --- .../mnemonic_word_count_select_sheet.dart | 214 ++++---- lib/pages/wallet_view/wallet_view.dart | 493 +++++++++--------- 2 files changed, 353 insertions(+), 354 deletions(-) diff --git a/lib/pages/add_wallet_views/restore_wallet_view/sub_widgets/mnemonic_word_count_select_sheet.dart b/lib/pages/add_wallet_views/restore_wallet_view/sub_widgets/mnemonic_word_count_select_sheet.dart index 933b72ba5..6cdaa5423 100644 --- a/lib/pages/add_wallet_views/restore_wallet_view/sub_widgets/mnemonic_word_count_select_sheet.dart +++ b/lib/pages/add_wallet_views/restore_wallet_view/sub_widgets/mnemonic_word_count_select_sheet.dart @@ -17,10 +17,7 @@ import '../../../../utilities/constants.dart'; import '../../../../utilities/text_styles.dart'; class MnemonicWordCountSelectSheet extends ConsumerWidget { - const MnemonicWordCountSelectSheet({ - super.key, - required this.lengthOptions, - }); + const MnemonicWordCountSelectSheet({super.key, required this.lengthOptions}); final List lengthOptions; @@ -35,9 +32,7 @@ class MnemonicWordCountSelectSheet extends ConsumerWidget { child: Container( decoration: BoxDecoration( color: Theme.of(context).extension()!.popupBG, - borderRadius: const BorderRadius.vertical( - top: Radius.circular(20), - ), + borderRadius: const BorderRadius.vertical(top: Radius.circular(20)), ), child: Padding( padding: const EdgeInsets.only( @@ -46,116 +41,115 @@ class MnemonicWordCountSelectSheet extends ConsumerWidget { top: 10, bottom: 0, ), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Center( - child: Container( - decoration: BoxDecoration( - color: Theme.of(context) - .extension()! - .textFieldDefaultBG, - borderRadius: BorderRadius.circular( - Constants.size.circularBorderRadius, + child: SafeArea( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Center( + child: Container( + decoration: BoxDecoration( + color: + Theme.of( + context, + ).extension()!.textFieldDefaultBG, + borderRadius: BorderRadius.circular( + Constants.size.circularBorderRadius, + ), ), + width: 60, + height: 4, ), - width: 60, - height: 4, ), - ), - const SizedBox( - height: 36, - ), - // Expanded( - // child: SingleChildScrollView( - // child: - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - "Phrase length", - style: STextStyles.pageTitleH2(context), - textAlign: TextAlign.left, - ), - const SizedBox( - height: 16, - ), - for (int i = 0; i < lengthOptions.length; i++) - Column( - children: [ - GestureDetector( - onTap: () { - final state = ref - .read(mnemonicWordCountStateProvider.state) - .state; - if (state != lengthOptions[i]) { - ref - .read(mnemonicWordCountStateProvider.state) - .state = lengthOptions[i]; - } + const SizedBox(height: 36), + // Expanded( + // child: SingleChildScrollView( + // child: + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "Phrase length", + style: STextStyles.pageTitleH2(context), + textAlign: TextAlign.left, + ), + const SizedBox(height: 16), + for (int i = 0; i < lengthOptions.length; i++) + Column( + children: [ + GestureDetector( + onTap: () { + final state = + ref + .read( + mnemonicWordCountStateProvider.state, + ) + .state; + if (state != lengthOptions[i]) { + ref + .read(mnemonicWordCountStateProvider.state) + .state = lengthOptions[i]; + } - Navigator.of(context).pop(); - }, - child: Container( - color: Colors.transparent, - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - // Column( - // mainAxisAlignment: MainAxisAlignment.start, - // children: [ - SizedBox( - width: 20, - height: 20, - child: Radio( - activeColor: Theme.of(context) - .extension()! - .radioButtonIconEnabled, - value: lengthOptions[i], - groupValue: ref - .watch( - mnemonicWordCountStateProvider.state, - ) - .state, - onChanged: (x) { - ref - .read( - mnemonicWordCountStateProvider - .state, - ) - .state = lengthOptions[i]; - Navigator.of(context).pop(); - }, + Navigator.of(context).pop(); + }, + child: Container( + color: Colors.transparent, + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + // Column( + // mainAxisAlignment: MainAxisAlignment.start, + // children: [ + SizedBox( + width: 20, + height: 20, + child: Radio( + activeColor: + Theme.of(context) + .extension()! + .radioButtonIconEnabled, + value: lengthOptions[i], + groupValue: + ref + .watch( + mnemonicWordCountStateProvider + .state, + ) + .state, + onChanged: (x) { + ref + .read( + mnemonicWordCountStateProvider + .state, + ) + .state = lengthOptions[i]; + Navigator.of(context).pop(); + }, + ), ), - ), - // ], - // ), - const SizedBox( - width: 12, - ), - Text( - "${lengthOptions[i]} words", - style: STextStyles.titleBold12(context), - textAlign: TextAlign.left, - ), - ], + // ], + // ), + const SizedBox(width: 12), + Text( + "${lengthOptions[i]} words", + style: STextStyles.titleBold12(context), + textAlign: TextAlign.left, + ), + ], + ), ), ), - ), - const SizedBox( - height: 16, - ), - ], - ), - const SizedBox( - height: 8, - ), - ], - ), - // ), - // ) - ], + const SizedBox(height: 16), + ], + ), + const SizedBox(height: 8), + ], + ), + // ), + // ) + ], + ), ), ), ), diff --git a/lib/pages/wallet_view/wallet_view.dart b/lib/pages/wallet_view/wallet_view.dart index 2c8c6a301..06697a1d9 100644 --- a/lib/pages/wallet_view/wallet_view.dart +++ b/lib/pages/wallet_view/wallet_view.dart @@ -989,267 +989,272 @@ class _WalletViewState extends ConsumerState { ), ), ), - WalletNavigationBar( - items: [ - WalletNavigationBarItemData( - label: "Receive", - icon: const ReceiveNavIcon(), - onTap: () { - if (mounted) { - unawaited( - Navigator.of(context).pushNamed( - ReceiveView.routeName, - arguments: walletId, - ), - ); - } - }, - ), - if (ref.watch(pWalletCoin(walletId)) is FrostCurrency) - WalletNavigationBarItemData( - label: "Sign", - icon: const FrostSignNavIcon(), - onTap: () => _onFrostSignPressed(context), - ), - if (!viewOnly) - WalletNavigationBarItemData( - label: "Send", - icon: const SendNavIcon(), - onTap: () { - // not sure what this is supposed to accomplish? - // switch (ref - // .read(walletBalanceToggleStateProvider.state) - // .state) { - // case WalletBalanceToggleState.full: - // ref - // .read(publicPrivateBalanceStateProvider.state) - // .state = "Public"; - // break; - // case WalletBalanceToggleState.available: - // ref - // .read(publicPrivateBalanceStateProvider.state) - // .state = "Private"; - // break; - // } - Navigator.of(context).pushNamed( - wallet is BitcoinFrostWallet - ? FrostSendView.routeName - : SendView.routeName, - arguments: (walletId: walletId, coin: coin), - ); - }, - ), - if (!viewOnly && - Constants.enableExchange && - ref.watch(pWalletCoin(walletId)) is! FrostCurrency && - AppConfig.hasFeature(AppFeature.swap) && - showExchange) - WalletNavigationBarItemData( - label: "Swap", - icon: const ExchangeNavIcon(), - onTap: () => _onExchangePressed(context), - ), - if (Constants.enableExchange && - ref.watch(pWalletCoin(walletId)) is! FrostCurrency && - AppConfig.hasFeature(AppFeature.buy) && - showExchange) - WalletNavigationBarItemData( - label: "Buy", - icon: const BuyNavIcon(), - onTap: () => _onBuyPressed(context), - ), - ], - moreItems: [ - if (ref.watch( - pWallets.select( - (value) => - value - .getWallet(widget.walletId) - .cryptoCurrency - .hasTokenSupport, - ), - )) + SafeArea( + child: WalletNavigationBar( + items: [ WalletNavigationBarItemData( - label: "Tokens", - icon: const CoinControlNavIcon(), + label: "Receive", + icon: const ReceiveNavIcon(), onTap: () { - Navigator.of(context).pushNamed( - MyTokensView.routeName, - arguments: walletId, - ); + if (mounted) { + unawaited( + Navigator.of(context).pushNamed( + ReceiveView.routeName, + arguments: walletId, + ), + ); + } }, ), - if (coin is Banano) - WalletNavigationBarItemData( - icon: SvgPicture.asset( - Assets.svg.monkey, - height: 20, - width: 20, - color: - Theme.of( - context, - ).extension()!.bottomNavIconIcon, + if (ref.watch(pWalletCoin(walletId)) is FrostCurrency) + WalletNavigationBarItemData( + label: "Sign", + icon: const FrostSignNavIcon(), + onTap: () => _onFrostSignPressed(context), ), - label: "MonKey", - onTap: () { - Navigator.of(context).pushNamed( - MonkeyView.routeName, - arguments: widget.walletId, - ); - }, - ), - if (wallet is CoinControlInterface && - ref.watch( - prefsChangeNotifierProvider.select( - (value) => value.enableCoinControl, + if (!viewOnly) + WalletNavigationBarItemData( + label: "Send", + icon: const SendNavIcon(), + onTap: () { + // not sure what this is supposed to accomplish? + // switch (ref + // .read(walletBalanceToggleStateProvider.state) + // .state) { + // case WalletBalanceToggleState.full: + // ref + // .read(publicPrivateBalanceStateProvider.state) + // .state = "Public"; + // break; + // case WalletBalanceToggleState.available: + // ref + // .read(publicPrivateBalanceStateProvider.state) + // .state = "Private"; + // break; + // } + Navigator.of(context).pushNamed( + wallet is BitcoinFrostWallet + ? FrostSendView.routeName + : SendView.routeName, + arguments: (walletId: walletId, coin: coin), + ); + }, + ), + if (!viewOnly && + Constants.enableExchange && + ref.watch(pWalletCoin(walletId)) is! FrostCurrency && + AppConfig.hasFeature(AppFeature.swap) && + showExchange) + WalletNavigationBarItemData( + label: "Swap", + icon: const ExchangeNavIcon(), + onTap: () => _onExchangePressed(context), + ), + if (Constants.enableExchange && + ref.watch(pWalletCoin(walletId)) is! FrostCurrency && + AppConfig.hasFeature(AppFeature.buy) && + showExchange) + WalletNavigationBarItemData( + label: "Buy", + icon: const BuyNavIcon(), + onTap: () => _onBuyPressed(context), + ), + ], + moreItems: [ + if (ref.watch( + pWallets.select( + (value) => + value + .getWallet(widget.walletId) + .cryptoCurrency + .hasTokenSupport, + ), + )) + WalletNavigationBarItemData( + label: "Tokens", + icon: const CoinControlNavIcon(), + onTap: () { + Navigator.of(context).pushNamed( + MyTokensView.routeName, + arguments: walletId, + ); + }, + ), + if (coin is Banano) + WalletNavigationBarItemData( + icon: SvgPicture.asset( + Assets.svg.monkey, + height: 20, + width: 20, + color: + Theme.of( + context, + ).extension()!.bottomNavIconIcon, ), - )) - WalletNavigationBarItemData( - label: "Coin control", - icon: const CoinControlNavIcon(), - onTap: () { - Navigator.of(context).pushNamed( - CoinControlView.routeName, - arguments: Tuple2( - widget.walletId, - CoinControlViewType.manage, + label: "MonKey", + onTap: () { + Navigator.of(context).pushNamed( + MonkeyView.routeName, + arguments: widget.walletId, + ); + }, + ), + if (wallet is CoinControlInterface && + ref.watch( + prefsChangeNotifierProvider.select( + (value) => value.enableCoinControl, ), - ); - }, - ), - if (wallet is FiroWallet && - ref.watch( - prefsChangeNotifierProvider.select( - (value) => value.advancedFiroFeatures, - ), - )) - WalletNavigationBarItemData( - label: "Spark coins", - icon: const CoinControlNavIcon(), - onTap: () { - Navigator.of(context).pushNamed( - SparkCoinsView.routeName, - arguments: widget.walletId, - ); - }, - ), - if (wallet is NamecoinWallet) - WalletNavigationBarItemData( - label: "Domains", - icon: const PaynymNavIcon(), - onTap: () { - Navigator.of(context).pushNamed( - NamecoinNamesHomeView.routeName, - arguments: widget.walletId, - ); - }, - ), - if (wallet is SparkInterface) - WalletNavigationBarItemData( - label: "Names", - icon: const PaynymNavIcon(), - onTap: () { - Navigator.of(context).pushNamed( - SparkNamesHomeView.routeName, - arguments: widget.walletId, - ); - }, - ), - if (!viewOnly && wallet is PaynymInterface) - WalletNavigationBarItemData( - label: "PayNym", - icon: const PaynymNavIcon(), - onTap: () async { - unawaited( - showDialog( - context: context, - builder: - (context) => const LoadingIndicator(width: 100), + )) + WalletNavigationBarItemData( + label: "Coin control", + icon: const CoinControlNavIcon(), + onTap: () { + Navigator.of(context).pushNamed( + CoinControlView.routeName, + arguments: Tuple2( + widget.walletId, + CoinControlViewType.manage, + ), + ); + }, + ), + if (wallet is FiroWallet && + ref.watch( + prefsChangeNotifierProvider.select( + (value) => value.advancedFiroFeatures, ), - ); + )) + WalletNavigationBarItemData( + label: "Spark coins", + icon: const CoinControlNavIcon(), + onTap: () { + Navigator.of(context).pushNamed( + SparkCoinsView.routeName, + arguments: widget.walletId, + ); + }, + ), + if (wallet is NamecoinWallet) + WalletNavigationBarItemData( + label: "Domains", + icon: const PaynymNavIcon(), + onTap: () { + Navigator.of(context).pushNamed( + NamecoinNamesHomeView.routeName, + arguments: widget.walletId, + ); + }, + ), + if (wallet is SparkInterface) + WalletNavigationBarItemData( + label: "Names", + icon: const PaynymNavIcon(), + onTap: () { + Navigator.of(context).pushNamed( + SparkNamesHomeView.routeName, + arguments: widget.walletId, + ); + }, + ), + if (!viewOnly && wallet is PaynymInterface) + WalletNavigationBarItemData( + label: "PayNym", + icon: const PaynymNavIcon(), + onTap: () async { + unawaited( + showDialog( + context: context, + builder: + (context) => + const LoadingIndicator(width: 100), + ), + ); - final wallet = ref - .read(pWallets) - .getWallet(widget.walletId); + final wallet = ref + .read(pWallets) + .getWallet(widget.walletId); - final paynymInterface = wallet as PaynymInterface; + final paynymInterface = wallet as PaynymInterface; - final code = await paynymInterface.getPaymentCode( - isSegwit: false, - ); + final code = await paynymInterface.getPaymentCode( + isSegwit: false, + ); - final account = await ref - .read(paynymAPIProvider) - .nym(code.toString()); + final account = await ref + .read(paynymAPIProvider) + .nym(code.toString()); - Logging.instance.d("my nym account: $account"); + Logging.instance.d("my nym account: $account"); - if (context.mounted) { - Navigator.of(context).pop(); + if (context.mounted) { + Navigator.of(context).pop(); - // check if account exists and for matching code to see if claimed - if (account.value != null && - account.value!.nonSegwitPaymentCode.claimed - // && - // account.value!.segwit - ) { - ref.read(myPaynymAccountStateProvider.state).state = - account.value!; + // check if account exists and for matching code to see if claimed + if (account.value != null && + account.value!.nonSegwitPaymentCode.claimed + // && + // account.value!.segwit + ) { + ref + .read(myPaynymAccountStateProvider.state) + .state = account.value!; - await Navigator.of(context).pushNamed( - PaynymHomeView.routeName, - arguments: widget.walletId, - ); - } else { - await Navigator.of(context).pushNamed( - PaynymClaimView.routeName, - arguments: widget.walletId, - ); + await Navigator.of(context).pushNamed( + PaynymHomeView.routeName, + arguments: widget.walletId, + ); + } else { + await Navigator.of(context).pushNamed( + PaynymClaimView.routeName, + arguments: widget.walletId, + ); + } } - } - }, - ), - if (ref.watch( - pWallets.select( - (value) => - value.getWallet(widget.walletId) is OrdinalsInterface, - ), - )) - WalletNavigationBarItemData( - label: "Ordinals", - icon: const OrdinalsNavIcon(), - onTap: () { - Navigator.of(context).pushNamed( - OrdinalsView.routeName, - arguments: widget.walletId, - ); - }, - ), - if (wallet is CashFusionInterface && !viewOnly) - WalletNavigationBarItemData( - label: "Fusion", - icon: const FusionNavIcon(), - onTap: () { - Navigator.of(context).pushNamed( - CashFusionView.routeName, - arguments: walletId, - ); - }, - ), - if ((wallet is LibMoneroWallet || - wallet is LibSalviumWallet) && - !viewOnly) - WalletNavigationBarItemData( - label: "Churn", - icon: const ChurnNavIcon(), - onTap: () { - Navigator.of(context).pushNamed( - ChurningView.routeName, - arguments: walletId, - ); - }, - ), - ], + }, + ), + if (ref.watch( + pWallets.select( + (value) => + value.getWallet(widget.walletId) + is OrdinalsInterface, + ), + )) + WalletNavigationBarItemData( + label: "Ordinals", + icon: const OrdinalsNavIcon(), + onTap: () { + Navigator.of(context).pushNamed( + OrdinalsView.routeName, + arguments: widget.walletId, + ); + }, + ), + if (wallet is CashFusionInterface && !viewOnly) + WalletNavigationBarItemData( + label: "Fusion", + icon: const FusionNavIcon(), + onTap: () { + Navigator.of(context).pushNamed( + CashFusionView.routeName, + arguments: walletId, + ); + }, + ), + if ((wallet is LibMoneroWallet || + wallet is LibSalviumWallet) && + !viewOnly) + WalletNavigationBarItemData( + label: "Churn", + icon: const ChurnNavIcon(), + onTap: () { + Navigator.of(context).pushNamed( + ChurningView.routeName, + arguments: walletId, + ); + }, + ), + ], + ), ), ], ),