From b760d6dcc558c55d44bccb90ecda8e9b647a6a2f Mon Sep 17 00:00:00 2001 From: tuxsudo Date: Mon, 3 Aug 2026 19:17:07 -0400 Subject: [PATCH 1/6] Add new passphrase prompt --- lib/coins/bitcoin/creation/common.dart | 8 +- lib/coins/litecoin/creation/common.dart | 8 +- lib/l10n/app_en.arb | 2 + lib/l10n/app_pl.arb | 2 + lib/view_model/create_wallet_view_model.dart | 4 +- lib/views/create_wallet.dart | 145 ++++++++++++++++++- lib/views/widgets/form_builder.dart | 13 +- pubspec.yaml | 1 + 8 files changed, 170 insertions(+), 13 deletions(-) diff --git a/lib/coins/bitcoin/creation/common.dart b/lib/coins/bitcoin/creation/common.dart index 3beee9e..138ddd3 100644 --- a/lib/coins/bitcoin/creation/common.dart +++ b/lib/coins/bitcoin/creation/common.dart @@ -37,8 +37,8 @@ class BitcoinWalletCreation extends WalletCreation { ); late StringFormElement passphrase = StringFormElement( - L.wallet_passphrase, - password: false, + L.seed_offset, + password: true, validator: nonEmptyValidator( L, extra: (final input) => null, @@ -49,8 +49,8 @@ class BitcoinWalletCreation extends WalletCreation { ); late StringFormElement passphraseConfirm = StringFormElement( - L.wallet_passphrase, - password: false, + L.seed_offset_confirm, + password: true, validator: nonEmptyValidator( L, extra: (final input) => input != passphrase.ctrl.text ? L.seed_passphrase_mismatch : null, diff --git a/lib/coins/litecoin/creation/common.dart b/lib/coins/litecoin/creation/common.dart index 9bca97f..2437631 100644 --- a/lib/coins/litecoin/creation/common.dart +++ b/lib/coins/litecoin/creation/common.dart @@ -37,8 +37,8 @@ class LitecoinWalletCreation extends WalletCreation { ); late StringFormElement passphrase = StringFormElement( - L.wallet_passphrase, - password: false, + L.seed_offset, + password: true, validator: nonEmptyValidator( L, extra: (final input) => null, @@ -49,8 +49,8 @@ class LitecoinWalletCreation extends WalletCreation { ); late StringFormElement passphraseConfirm = StringFormElement( - L.wallet_passphrase, - password: false, + L.seed_offset_confirm, + password: true, validator: nonEmptyValidator( L, extra: (final input) => input != passphrase.ctrl.text ? L.seed_passphrase_mismatch : null, diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 60d9f5b..0308e72 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -24,6 +24,7 @@ "copied": "Copied {what}", "copy": "Copy", "create_new_wallet": "Create new wallet", + "create_passphrase_warning_text": "Make sure this passphrase is saved. Without this passphrase you will not be able to restore your funds. It is recommended to save your passphrase in a different location from your seed for optimal security.", "create_wallet": "Create Wallet", "create_your_pin": "Create your PIN", "creating_wallet": "Creating wallet", @@ -162,6 +163,7 @@ "wallet_password_repeat": "Wallet password (repeat)", "wallet_seed": "Wallet seed", "wallets": "Wallets", + "warning": "Warning", "warning_input_cannot_be_empty": "Input cannot be empty", "warning_input_cannot_be_null": "Input cannot be null", "warning_input_seed_length_invalid": "Incorrect number of words present in the seed", diff --git a/lib/l10n/app_pl.arb b/lib/l10n/app_pl.arb index c6eda02..3c72638 100644 --- a/lib/l10n/app_pl.arb +++ b/lib/l10n/app_pl.arb @@ -8,6 +8,7 @@ "confirming": "Potwierdzanie", "copy": "Kopiuj", "create_new_wallet": "Stwórz nowy portfel", + "create_passphrase_warning_text": "Upewnij się, że to hasło zostało zapisane. Bez tego hasła nie będziesz w stanie odzyskać swoich środków. Zaleca się przechowywanie hasła w innym miejscu niż fraza odzyskiwania, aby zapewnić optymalne bezpieczeństwo.", "create_wallet": "Stwórz Portfel", "creating_wallet": "Tworzenie portfela", "cupcake_slogan": "Bezpieczeństwo - jeszcze łatwiejsze", @@ -55,6 +56,7 @@ "wallet_password_repeat": "Hasło portfela (ponownie)", "wallet_seed": "Fraza odzyskiwania", "wallets": "Portfele", + "warning": "Warning", "warning_input_cannot_be_empty": "Pole nie może być puste", "warning_input_cannot_be_null": "Pole nie może być puste", "warning_must_be_a_number": "W pole należy wprowadzić liczbę", diff --git a/lib/view_model/create_wallet_view_model.dart b/lib/view_model/create_wallet_view_model.dart index 44a4181..6d5a567 100644 --- a/lib/view_model/create_wallet_view_model.dart +++ b/lib/view_model/create_wallet_view_model.dart @@ -263,7 +263,9 @@ abstract class CreateWalletViewModelBase extends ViewModel with Store { // verify that password match when confirming, ignore otherwise if (walletPassword1 != walletPassword2 && walletPassword2.isNotEmpty) { if (kDebugMode) { - throw Exception("${L.password_doesnt_match} /$walletPassword1/$walletPassword2/"); + throw Exception( + "${L.password_doesnt_match} /$walletPassword1/$walletPassword2/", + ); } throw Exception(L.password_doesnt_match); } diff --git a/lib/views/create_wallet.dart b/lib/views/create_wallet.dart index d1b70f6..c06bb55 100644 --- a/lib/views/create_wallet.dart +++ b/lib/views/create_wallet.dart @@ -1,7 +1,11 @@ +import 'dart:ui'; + import 'package:cupcake/utils/text_span_markdown.dart'; import 'package:cupcake/utils/types.dart'; import 'package:cupcake/gen/assets.gen.dart'; import 'package:cupcake/view_model/create_wallet_view_model.dart'; +import 'package:cupcake/utils/alerts/basic.dart'; +import 'package:cupcake/utils/form/string_form_element.dart'; import 'package:cupcake/view_model/form_builder_view_model.dart'; import 'package:cupcake/views/abstract.dart'; import 'package:cupcake/views/widgets/buttons/long_primary.dart'; @@ -153,7 +157,7 @@ class CreateWallet extends AbstractView { } } final form = FormBuilder( - showExtra: viewModel.showExtra, + showExtra: false, viewModel: viewModel.formBuilderViewModelList[viewModel.formIndex] as FormBuilderViewModel, ); return Column( @@ -241,12 +245,149 @@ class CreateWallet extends AbstractView { LongPrimaryButton( text: L.continue_, icon: null, - onPressed: viewModel.createWallet, + onPressed: () async { + if (viewModel.showExtra) { + await _showBottomSheet(context); + } else { + await viewModel.createWallet(); + } + }, ), ], ); } + String? _extraFieldsError() { + final elements = viewModel.formBuilderViewModelList[viewModel.formIndex].formElements + .where((final e) => e.isExtra) + .whereType(); + for (final e in elements) { + final error = e.validator(e.ctrl.text); + if (error != null) return error; + } + return null; + } + + Future _showBottomSheet(final BuildContext context) async { + await showModalBottomSheet( + context: context, + isDismissible: false, + backgroundColor: Colors.transparent, + isScrollControlled: true, + builder: (final context) => BackdropFilter( + filter: ImageFilter.blur(sigmaX: 8, sigmaY: 8), + child: Container( + decoration: const BoxDecoration( + color: Color(0xFF273765), + borderRadius: BorderRadius.vertical(top: Radius.circular(20)), + ), + child: _buildBottomSheet(context), + ), + ), + ); + } + + Widget _buildBottomSheet(final BuildContext context) { + return Builder( + builder: (final context) { + return Container( + decoration: const BoxDecoration( + color: Color(0xFF273765), + borderRadius: BorderRadius.vertical(top: Radius.circular(20)), + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: 40, + height: 4, + margin: const EdgeInsets.symmetric(vertical: 12), + decoration: BoxDecoration( + color: Colors.white.withAlpha(76), + borderRadius: BorderRadius.circular(2), + ), + ), + Padding( + padding: const EdgeInsets.all(16), + child: Column( + spacing: 16, + children: [ + Text( + L.add_passphrase, + style: Theme.of(context).textTheme.titleLarge + + ), + Assets.icons.passphrase.image(width: 200), + Text.rich( + TextSpan( + children: [ + TextSpan( + text: '${L.warning.toUpperCase()}: ', + style: Theme.of(context).textTheme.bodyMedium!.copyWith( + fontSize: 16, + fontWeight: FontWeight.w700, + color: Theme.of(context).colorScheme.errorContainer, + decoration: TextDecoration.none, + ), + ), + TextSpan( + text: L.create_passphrase_warning_text, + ), + ], + ), + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.bodyMedium!.copyWith( + fontSize: 16, + fontWeight: FontWeight.w500, + color: Theme.of(context).colorScheme.onSurface.withOpacity(0.7), + decoration: TextDecoration.none, + ), + ), + FormBuilder( + showExtra: true, + extraOnly: true, + viewModel: viewModel.formBuilderViewModelList[viewModel.formIndex] + as FormBuilderViewModel, + ), + Row( + children: [ + LongSecondaryButton( + T, + onPressed: () => Navigator.of(context).pop(), + width: 175, + padding: EdgeInsets.only(right: 10, left: 12), + text: "Cancel", + ), + LongPrimaryButton( + onPressed: () async { + final error = _extraFieldsError(); + if (error != null) { + await showAlert( + context: context, + title: L.warning, + body: [error], + ); + return; + } + await viewModel.createWallet(); + }, + width: 175, + padding: EdgeInsets.only(left: 10), + text: "Confirm", + ), + ], + ), + ], + ), + ), + const SizedBox(height: 20), + ], + ), + ); + }, + ); + } + @override Widget build(final BuildContext context) { viewModel.register(context); diff --git a/lib/views/widgets/form_builder.dart b/lib/views/widgets/form_builder.dart index c08128b..4adee18 100644 --- a/lib/views/widgets/form_builder.dart +++ b/lib/views/widgets/form_builder.dart @@ -16,11 +16,18 @@ import 'package:flutter/services.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; class FormBuilder extends StatefulWidget { - const FormBuilder({super.key, required this.viewModel, required this.showExtra}); + const FormBuilder({ + super.key, + required this.viewModel, + required this.showExtra, + this.extraOnly = false, + }); final FormBuilderViewModel viewModel; final bool showExtra; + final bool extraOnly; + @override State createState() => _FormBuilderState(); } @@ -176,7 +183,9 @@ class _FormBuilderState extends State { _onLabelChange(null); final List children = []; for (final e in widget.viewModel.formElements) { - if (e.isExtra && !widget.showExtra) { + if (widget.extraOnly) { + if (!e.isExtra) continue; + } else if (e.isExtra && !widget.showExtra) { // If we return Container() some stuff happens on flutter render cache // and it doesn't render properly. continue; diff --git a/pubspec.yaml b/pubspec.yaml index 16ca8d4..300b898 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -190,6 +190,7 @@ flutter: - assets/icons/secure_storage.webp - assets/icons/tiny_cake_labs.svg - assets/icons/cupcake_about.svg + - assets/icons/passphrase.png fonts: - family: Lato From 73e95662db322c47a8bef1ea20a16a4e9f1753d6 Mon Sep 17 00:00:00 2001 From: tuxsudo Date: Mon, 3 Aug 2026 19:34:41 -0400 Subject: [PATCH 2/6] Update text for restore --- lib/l10n/app_en.arb | 1 + lib/l10n/app_pl.arb | 1 + lib/views/create_wallet.dart | 5 ++++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 0308e72..183c058 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -97,6 +97,7 @@ "rename": "Rename", "rename_wallet": "Rename wallet", "restore_height": "Restore height", + "restore_passphrase_warning_text": "Only enter a passphrase if you have used one for thie wallet in the past. If you enter the wrong passphrase or have not used a passphrase before on this wallet, you won't see any of existing funds or history.", "restore_wallet": "Restore wallet", "restoring_wallet": "Restoring wallet", "save": "Save", diff --git a/lib/l10n/app_pl.arb b/lib/l10n/app_pl.arb index 3c72638..fbd7283 100644 --- a/lib/l10n/app_pl.arb +++ b/lib/l10n/app_pl.arb @@ -29,6 +29,7 @@ "primary_address_label": "Adres główny", "receive": "Wpłać", "restore_height": "Wysokość przywracania", + "restore_passphrase_warning_text": "Wprowadź hasło tylko wtedy, gdy było ono wcześniej używane w tym portfelu. Jeśli wprowadzisz nieprawidłowe hasło lub nie było ono wcześniej używane w tym portfelu, nie zobaczysz żadnych istniejących środków ani historii.", "restore_wallet": "Przywróć portfel", "save": "Zapisz", "scan": "Skanuj", diff --git a/lib/views/create_wallet.dart b/lib/views/create_wallet.dart index c06bb55..d8f14d6 100644 --- a/lib/views/create_wallet.dart +++ b/lib/views/create_wallet.dart @@ -331,7 +331,10 @@ class CreateWallet extends AbstractView { ), ), TextSpan( - text: L.create_passphrase_warning_text, + // TODO: swap in restore-specific string once added. + text: viewModel.createMethod == CreateMethod.restore + ? L.restore_passphrase_warning_text + : L.create_passphrase_warning_text, ), ], ), From e955fcde5818cfbef28037b2599ee16dc653501c Mon Sep 17 00:00:00 2001 From: tuxsudo Date: Mon, 3 Aug 2026 19:35:02 -0400 Subject: [PATCH 3/6] Update text for restore --- lib/views/create_wallet.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/views/create_wallet.dart b/lib/views/create_wallet.dart index d8f14d6..94466f6 100644 --- a/lib/views/create_wallet.dart +++ b/lib/views/create_wallet.dart @@ -331,7 +331,6 @@ class CreateWallet extends AbstractView { ), ), TextSpan( - // TODO: swap in restore-specific string once added. text: viewModel.createMethod == CreateMethod.restore ? L.restore_passphrase_warning_text : L.create_passphrase_warning_text, From 44dbf81d2d08eeef0c8efe66013ce027487dab1c Mon Sep 17 00:00:00 2001 From: tuxsudo Date: Mon, 3 Aug 2026 19:36:13 -0400 Subject: [PATCH 4/6] Add missing image --- assets/icons/passphrase.png | Bin 0 -> 57354 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/icons/passphrase.png diff --git a/assets/icons/passphrase.png b/assets/icons/passphrase.png new file mode 100644 index 0000000000000000000000000000000000000000..f72d1e1a193bd86ed50160ec26350d87c3a82974 GIT binary patch literal 57354 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 Date: Mon, 3 Aug 2026 21:03:13 -0400 Subject: [PATCH 5/6] Add keyboard inset and fix padding --- lib/views/create_wallet.dart | 175 ++++++++++++++++++----------------- 1 file changed, 88 insertions(+), 87 deletions(-) diff --git a/lib/views/create_wallet.dart b/lib/views/create_wallet.dart index 94466f6..5abc091 100644 --- a/lib/views/create_wallet.dart +++ b/lib/views/create_wallet.dart @@ -290,100 +290,101 @@ class CreateWallet extends AbstractView { Widget _buildBottomSheet(final BuildContext context) { return Builder( builder: (final context) { - return Container( - decoration: const BoxDecoration( - color: Color(0xFF273765), - borderRadius: BorderRadius.vertical(top: Radius.circular(20)), - ), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Container( - width: 40, - height: 4, - margin: const EdgeInsets.symmetric(vertical: 12), - decoration: BoxDecoration( - color: Colors.white.withAlpha(76), - borderRadius: BorderRadius.circular(2), + return Padding( + padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom), + child: Container( + decoration: const BoxDecoration( + color: Color(0xFF273765), + borderRadius: BorderRadius.vertical(top: Radius.circular(20)), + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: 40, + height: 4, + margin: const EdgeInsets.symmetric(vertical: 12), + decoration: BoxDecoration( + color: Colors.white.withAlpha(76), + borderRadius: BorderRadius.circular(2), + ), ), - ), - Padding( - padding: const EdgeInsets.all(16), - child: Column( - spacing: 16, - children: [ - Text( - L.add_passphrase, - style: Theme.of(context).textTheme.titleLarge - - ), - Assets.icons.passphrase.image(width: 200), - Text.rich( - TextSpan( + Padding( + padding: const EdgeInsets.all(16), + child: Column( + spacing: 16, + children: [ + Text(L.add_passphrase, style: Theme.of(context).textTheme.titleLarge), + Assets.icons.passphrase.image(width: 200), + Text.rich( + TextSpan( + children: [ + TextSpan( + text: '${L.warning.toUpperCase()}: ', + style: Theme.of(context).textTheme.bodyMedium!.copyWith( + fontSize: 16, + fontWeight: FontWeight.w700, + color: Theme.of(context).colorScheme.errorContainer, + decoration: TextDecoration.none, + ), + ), + TextSpan( + text: viewModel.createMethod == CreateMethod.restore + ? L.restore_passphrase_warning_text + : L.create_passphrase_warning_text, + ), + ], + ), + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.bodyMedium!.copyWith( + fontSize: 16, + fontWeight: FontWeight.w500, + color: Theme.of(context).colorScheme.onSurface.withOpacity(0.7), + decoration: TextDecoration.none, + ), + ), + FormBuilder( + showExtra: true, + extraOnly: true, + viewModel: viewModel.formBuilderViewModelList[viewModel.formIndex] + as FormBuilderViewModel, + ), + Row( children: [ - TextSpan( - text: '${L.warning.toUpperCase()}: ', - style: Theme.of(context).textTheme.bodyMedium!.copyWith( - fontSize: 16, - fontWeight: FontWeight.w700, - color: Theme.of(context).colorScheme.errorContainer, - decoration: TextDecoration.none, - ), + Expanded( + child: LongSecondaryButton( + T, + onPressed: () => Navigator.of(context).pop(), + padding: EdgeInsets.only(right: 10, left: 12), + text: "Cancel", + ), ), - TextSpan( - text: viewModel.createMethod == CreateMethod.restore - ? L.restore_passphrase_warning_text - : L.create_passphrase_warning_text, + Expanded( + child: LongPrimaryButton( + onPressed: () async { + final error = _extraFieldsError(); + if (error != null) { + await showAlert( + context: context, + title: L.warning, + body: [error], + ); + return; + } + await viewModel.createWallet(); + }, + padding: EdgeInsets.only(left: 10), + text: "Confirm", + ), ), ], ), - textAlign: TextAlign.center, - style: Theme.of(context).textTheme.bodyMedium!.copyWith( - fontSize: 16, - fontWeight: FontWeight.w500, - color: Theme.of(context).colorScheme.onSurface.withOpacity(0.7), - decoration: TextDecoration.none, - ), - ), - FormBuilder( - showExtra: true, - extraOnly: true, - viewModel: viewModel.formBuilderViewModelList[viewModel.formIndex] - as FormBuilderViewModel, - ), - Row( - children: [ - LongSecondaryButton( - T, - onPressed: () => Navigator.of(context).pop(), - width: 175, - padding: EdgeInsets.only(right: 10, left: 12), - text: "Cancel", - ), - LongPrimaryButton( - onPressed: () async { - final error = _extraFieldsError(); - if (error != null) { - await showAlert( - context: context, - title: L.warning, - body: [error], - ); - return; - } - await viewModel.createWallet(); - }, - width: 175, - padding: EdgeInsets.only(left: 10), - text: "Confirm", - ), - ], - ), - ], + ], + ), ), - ), - const SizedBox(height: 20), - ], + const SizedBox(height: 20), + ], + ), ), ); }, From f50f4c488e5458d0a9823cba4464602f4e1cc310 Mon Sep 17 00:00:00 2001 From: tuxsudo Date: Mon, 3 Aug 2026 21:35:58 -0400 Subject: [PATCH 6/6] Fix SafeArea --- lib/views/create_wallet.dart | 162 ++++++++++++++++++----------------- 1 file changed, 82 insertions(+), 80 deletions(-) diff --git a/lib/views/create_wallet.dart b/lib/views/create_wallet.dart index 5abc091..31ed60a 100644 --- a/lib/views/create_wallet.dart +++ b/lib/views/create_wallet.dart @@ -297,93 +297,95 @@ class CreateWallet extends AbstractView { color: Color(0xFF273765), borderRadius: BorderRadius.vertical(top: Radius.circular(20)), ), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Container( - width: 40, - height: 4, - margin: const EdgeInsets.symmetric(vertical: 12), - decoration: BoxDecoration( - color: Colors.white.withAlpha(76), - borderRadius: BorderRadius.circular(2), + child: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: 40, + height: 4, + margin: const EdgeInsets.symmetric(vertical: 12), + decoration: BoxDecoration( + color: Colors.white.withAlpha(76), + borderRadius: BorderRadius.circular(2), + ), ), - ), - Padding( - padding: const EdgeInsets.all(16), - child: Column( - spacing: 16, - children: [ - Text(L.add_passphrase, style: Theme.of(context).textTheme.titleLarge), - Assets.icons.passphrase.image(width: 200), - Text.rich( - TextSpan( + Padding( + padding: const EdgeInsets.all(16), + child: Column( + spacing: 16, + children: [ + Text(L.add_passphrase, style: Theme.of(context).textTheme.titleLarge), + Assets.icons.passphrase.image(width: 200), + Text.rich( + TextSpan( + children: [ + TextSpan( + text: '${L.warning.toUpperCase()}: ', + style: Theme.of(context).textTheme.bodyMedium!.copyWith( + fontSize: 16, + fontWeight: FontWeight.w700, + color: Theme.of(context).colorScheme.errorContainer, + decoration: TextDecoration.none, + ), + ), + TextSpan( + text: viewModel.createMethod == CreateMethod.restore + ? L.restore_passphrase_warning_text + : L.create_passphrase_warning_text, + ), + ], + ), + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.bodyMedium!.copyWith( + fontSize: 16, + fontWeight: FontWeight.w500, + color: Theme.of(context).colorScheme.onSurface.withOpacity(0.7), + decoration: TextDecoration.none, + ), + ), + FormBuilder( + showExtra: true, + extraOnly: true, + viewModel: viewModel.formBuilderViewModelList[viewModel.formIndex] + as FormBuilderViewModel, + ), + Row( children: [ - TextSpan( - text: '${L.warning.toUpperCase()}: ', - style: Theme.of(context).textTheme.bodyMedium!.copyWith( - fontSize: 16, - fontWeight: FontWeight.w700, - color: Theme.of(context).colorScheme.errorContainer, - decoration: TextDecoration.none, - ), + Expanded( + child: LongSecondaryButton( + T, + onPressed: () => Navigator.of(context).pop(), + padding: EdgeInsets.only(right: 10, left: 12), + text: "Cancel", + ), ), - TextSpan( - text: viewModel.createMethod == CreateMethod.restore - ? L.restore_passphrase_warning_text - : L.create_passphrase_warning_text, + Expanded( + child: LongPrimaryButton( + onPressed: () async { + final error = _extraFieldsError(); + if (error != null) { + await showAlert( + context: context, + title: L.warning, + body: [error], + ); + return; + } + await viewModel.createWallet(); + }, + padding: EdgeInsets.only(left: 10), + text: "Confirm", + ), ), ], ), - textAlign: TextAlign.center, - style: Theme.of(context).textTheme.bodyMedium!.copyWith( - fontSize: 16, - fontWeight: FontWeight.w500, - color: Theme.of(context).colorScheme.onSurface.withOpacity(0.7), - decoration: TextDecoration.none, - ), - ), - FormBuilder( - showExtra: true, - extraOnly: true, - viewModel: viewModel.formBuilderViewModelList[viewModel.formIndex] - as FormBuilderViewModel, - ), - Row( - children: [ - Expanded( - child: LongSecondaryButton( - T, - onPressed: () => Navigator.of(context).pop(), - padding: EdgeInsets.only(right: 10, left: 12), - text: "Cancel", - ), - ), - Expanded( - child: LongPrimaryButton( - onPressed: () async { - final error = _extraFieldsError(); - if (error != null) { - await showAlert( - context: context, - title: L.warning, - body: [error], - ); - return; - } - await viewModel.createWallet(); - }, - padding: EdgeInsets.only(left: 10), - text: "Confirm", - ), - ), - ], - ), - ], + ], + ), ), - ), - const SizedBox(height: 20), - ], + const SizedBox(height: 20), + ], + ), ), ), );