From 2b7d7982530c56009588e5a4990e0e6e420bd5a3 Mon Sep 17 00:00:00 2001 From: RafiaChy Date: Thu, 20 Jan 2022 20:55:58 +0600 Subject: [PATCH 1/5] Adding IconButton to generate names for wallet names for new_wallet and restore_wallet --- lib/entities/generate_name.dart | 1 + .../screens/new_wallet/new_wallet_page.dart | 97 +++++++++++-------- .../wallet_restore_from_seed_form.dart | 19 +++- 3 files changed, 76 insertions(+), 41 deletions(-) diff --git a/lib/entities/generate_name.dart b/lib/entities/generate_name.dart index 4aa570769..140a60b31 100644 --- a/lib/entities/generate_name.dart +++ b/lib/entities/generate_name.dart @@ -20,5 +20,6 @@ Future generateName() async { final chosenNoun = nouns[randomThing.nextInt(nouns.length)]; final returnString = chosenAdjective.capitalized() + ' ' + chosenNoun.capitalized(); + return returnString; } diff --git a/lib/src/screens/new_wallet/new_wallet_page.dart b/lib/src/screens/new_wallet/new_wallet_page.dart index 79998e944..ad4f5560b 100644 --- a/lib/src/screens/new_wallet/new_wallet_page.dart +++ b/lib/src/screens/new_wallet/new_wallet_page.dart @@ -1,3 +1,4 @@ +import 'package:cake_wallet/entities/generate_name.dart'; import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/themes/theme_base.dart'; import 'package:cake_wallet/utils/show_pop_up.dart'; @@ -24,15 +25,17 @@ class NewWalletPage extends BasePage { final walletNameImage = Image.asset('assets/images/wallet_name.png'); final walletNameLightImage = - Image.asset('assets/images/wallet_name_light.png'); + Image.asset('assets/images/wallet_name_light.png'); @override String get title => S.current.new_wallet; @override - Widget body(BuildContext context) => WalletNameForm(_walletNewVM, + Widget body(BuildContext context) => WalletNameForm( + _walletNewVM, currentTheme.type == ThemeType.dark - ? walletNameImage : walletNameLightImage); + ? walletNameImage + : walletNameLightImage); } class WalletNameForm extends StatefulWidget { @@ -55,12 +58,15 @@ class _WalletNameFormState extends State { ReactionDisposer _stateReaction; final WalletNewVM _walletNewVM; + final TextEditingController _controller = TextEditingController(); + @override void initState() { _stateReaction ??= reaction((_) => _walletNewVM.state, (ExecutionState state) { if (state is ExecutedSuccessfullyState) { - Navigator.of(context).pushNamed(Routes.preSeed, arguments: _walletNewVM.type); + Navigator.of(context) + .pushNamed(Routes.preSeed, arguments: _walletNewVM.type); } if (state is FailureState) { @@ -92,44 +98,59 @@ class _WalletNameFormState extends State { padding: EdgeInsets.only(left: 12, right: 12), child: AspectRatio( aspectRatio: aspectRatioImage, - child: FittedBox(child: widget.walletImage, fit: BoxFit.fill)), + child: + FittedBox(child: widget.walletImage, fit: BoxFit.fill)), ), Padding( padding: EdgeInsets.only(top: 24), child: Form( - key: _formKey, - child: TextFormField( - onChanged: (value) => _walletNewVM.name = value, - textAlign: TextAlign.center, - style: TextStyle( - fontSize: 20.0, - fontWeight: FontWeight.w600, - color: - Theme.of(context).primaryTextTheme.title.color), - decoration: InputDecoration( - hintStyle: TextStyle( - fontSize: 18.0, - fontWeight: FontWeight.w500, - color: Theme.of(context) - .accentTextTheme - .display3 - .color), - hintText: S.of(context).wallet_name, - focusedBorder: UnderlineInputBorder( - borderSide: BorderSide( - color: Theme.of(context) - .accentTextTheme - .display3 - .decorationColor, - width: 1.0)), - enabledBorder: UnderlineInputBorder( - borderSide: BorderSide( - color: Theme.of(context) - .accentTextTheme - .display3 - .decorationColor, - width: 1.0))), - validator: WalletNameValidator())), + key: _formKey, + child: TextFormField( + onChanged: (value) => _walletNewVM.name = value, + controller: _controller, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 20.0, + fontWeight: FontWeight.w600, + color: Theme.of(context).primaryTextTheme.title.color), + decoration: InputDecoration( + suffixIcon: IconButton( + onPressed: () async { + final String rName = await generateName(); + + print(rName); + setState(() { + _controller.text = rName; + _walletNewVM.name = rName; + }); + }, + icon: Icon(Icons.refresh), + ), + hintStyle: TextStyle( + fontSize: 18.0, + fontWeight: FontWeight.w500, + color: + Theme.of(context).accentTextTheme.display3.color), + hintText: S.of(context).wallet_name, + focusedBorder: UnderlineInputBorder( + borderSide: BorderSide( + color: Theme.of(context) + .accentTextTheme + .display3 + .decorationColor, + width: 1.0)), + enabledBorder: UnderlineInputBorder( + borderSide: BorderSide( + color: Theme.of(context) + .accentTextTheme + .display3 + .decorationColor, + width: 1.0), + ), + ), + validator: WalletNameValidator(), + ), + ), ), if (_walletNewVM.hasLanguageSelector) ...[ Padding( diff --git a/lib/src/screens/restore/wallet_restore_from_seed_form.dart b/lib/src/screens/restore/wallet_restore_from_seed_form.dart index 0b327f387..97507f49e 100644 --- a/lib/src/screens/restore/wallet_restore_from_seed_form.dart +++ b/lib/src/screens/restore/wallet_restore_from_seed_form.dart @@ -1,3 +1,4 @@ +import 'package:cake_wallet/entities/generate_name.dart'; import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/view_model/wallet_restore_view_model.dart'; import 'package:flutter/cupertino.dart'; @@ -57,9 +58,21 @@ class WalletRestoreFromSeedFormState extends State { padding: EdgeInsets.only(left: 24, right: 24), child: Column(children: [ BaseTextFormField( - controller: nameTextEditingController, - hintText: S.of(context).wallet_name, - validator: WalletNameValidator()), + controller: nameTextEditingController, + hintText: S.of(context).wallet_name, + validator: WalletNameValidator(), + suffixIcon: IconButton( + onPressed: () async { + final String rName = await generateName(); + + print(rName); + setState(() { + nameTextEditingController.text = rName; + }); + }, + icon: Icon(Icons.refresh), + ), + ), Container(height: 20), SeedWidget( key: seedWidgetStateKey, language: language, type: widget.type), From f2ec887b3a36d413dc1caa03e9e38e6ba6650cab Mon Sep 17 00:00:00 2001 From: RafiaChy Date: Fri, 21 Jan 2022 17:58:09 +0600 Subject: [PATCH 2/5] Set the curson position at the end of the value in the textfield. --- lib/src/screens/new_wallet/new_wallet_page.dart | 6 +++++- lib/src/screens/restore/wallet_restore_from_seed_form.dart | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/src/screens/new_wallet/new_wallet_page.dart b/lib/src/screens/new_wallet/new_wallet_page.dart index ad4f5560b..2d65a1c45 100644 --- a/lib/src/screens/new_wallet/new_wallet_page.dart +++ b/lib/src/screens/new_wallet/new_wallet_page.dart @@ -122,9 +122,13 @@ class _WalletNameFormState extends State { setState(() { _controller.text = rName; _walletNewVM.name = rName; + _controller.selection = TextSelection.fromPosition( + TextPosition(offset: _controller.text.length)); }); }, - icon: Icon(Icons.refresh), + icon: Image.asset( + 'assets/images/refresh_icon.png', + ), ), hintStyle: TextStyle( fontSize: 18.0, diff --git a/lib/src/screens/restore/wallet_restore_from_seed_form.dart b/lib/src/screens/restore/wallet_restore_from_seed_form.dart index 97507f49e..8b8863961 100644 --- a/lib/src/screens/restore/wallet_restore_from_seed_form.dart +++ b/lib/src/screens/restore/wallet_restore_from_seed_form.dart @@ -68,9 +68,14 @@ class WalletRestoreFromSeedFormState extends State { print(rName); setState(() { nameTextEditingController.text = rName; + nameTextEditingController.selection = + TextSelection.fromPosition(TextPosition( + offset: nameTextEditingController.text.length)); }); }, - icon: Icon(Icons.refresh), + icon: Image.asset( + 'assets/images/refresh_icon.png', + ), ), ), Container(height: 20), From 1f021b09e48d5f8916964fe6e64de0566138a5f4 Mon Sep 17 00:00:00 2001 From: RafiaChy Date: Fri, 21 Jan 2022 20:09:25 +0600 Subject: [PATCH 3/5] Editted the IconButton according to Figma --- .../screens/new_wallet/new_wallet_page.dart | 15 +++++++++++++-- .../restore/wallet_restore_from_seed_form.dart | 18 +++++++++++++++--- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/lib/src/screens/new_wallet/new_wallet_page.dart b/lib/src/screens/new_wallet/new_wallet_page.dart index 2d65a1c45..58cc37a52 100644 --- a/lib/src/screens/new_wallet/new_wallet_page.dart +++ b/lib/src/screens/new_wallet/new_wallet_page.dart @@ -126,8 +126,19 @@ class _WalletNameFormState extends State { TextPosition(offset: _controller.text.length)); }); }, - icon: Image.asset( - 'assets/images/refresh_icon.png', + icon: Container( + padding: const EdgeInsets.all(7), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(6.0), + color: Color.fromRGBO(91, 112, 146, 1), + ), + width: 27.0, + height: 27.0, + child: Image.asset( + 'assets/images/refresh_icon.png', + width: 14, + height: 13, + ), ), ), hintStyle: TextStyle( diff --git a/lib/src/screens/restore/wallet_restore_from_seed_form.dart b/lib/src/screens/restore/wallet_restore_from_seed_form.dart index 8b8863961..4e83bdb5b 100644 --- a/lib/src/screens/restore/wallet_restore_from_seed_form.dart +++ b/lib/src/screens/restore/wallet_restore_from_seed_form.dart @@ -73,9 +73,21 @@ class WalletRestoreFromSeedFormState extends State { offset: nameTextEditingController.text.length)); }); }, - icon: Image.asset( - 'assets/images/refresh_icon.png', - ), + icon:Container( + padding: const EdgeInsets.all(7) + , + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(6.0), + color: Color.fromRGBO(91, 112, 146, 1),), + width: 27.0, + height: 27.0, + + child: Image.asset( + 'assets/images/refresh_icon.png', + width: 14, + height: 13, + ), + ), ), ), Container(height: 20), From a89397651fbc532ec236c7993fd51f1f5eee7a8a Mon Sep 17 00:00:00 2001 From: RafiaChy Date: Sat, 22 Jan 2022 18:55:05 +0600 Subject: [PATCH 4/5] Customised the GenerateName button according to PasteButton. Figma style is no longer applicable. --- .../screens/new_wallet/new_wallet_page.dart | 14 ++--- .../wallet_restore_from_seed_form.dart | 52 +++++++++---------- lib/src/widgets/seed_widget.dart | 6 +-- 3 files changed, 36 insertions(+), 36 deletions(-) diff --git a/lib/src/screens/new_wallet/new_wallet_page.dart b/lib/src/screens/new_wallet/new_wallet_page.dart index 58cc37a52..a73e814e8 100644 --- a/lib/src/screens/new_wallet/new_wallet_page.dart +++ b/lib/src/screens/new_wallet/new_wallet_page.dart @@ -127,17 +127,19 @@ class _WalletNameFormState extends State { }); }, icon: Container( - padding: const EdgeInsets.all(7), + padding: const EdgeInsets.all(8), decoration: BoxDecoration( borderRadius: BorderRadius.circular(6.0), - color: Color.fromRGBO(91, 112, 146, 1), + color: Theme.of(context).hintColor, ), - width: 27.0, - height: 27.0, + width: 34, + height: 34, child: Image.asset( 'assets/images/refresh_icon.png', - width: 14, - height: 13, + color: Theme.of(context) + .primaryTextTheme + .display1 + .decorationColor, ), ), ), diff --git a/lib/src/screens/restore/wallet_restore_from_seed_form.dart b/lib/src/screens/restore/wallet_restore_from_seed_form.dart index 4e83bdb5b..9338b3eb1 100644 --- a/lib/src/screens/restore/wallet_restore_from_seed_form.dart +++ b/lib/src/screens/restore/wallet_restore_from_seed_form.dart @@ -61,33 +61,33 @@ class WalletRestoreFromSeedFormState extends State { controller: nameTextEditingController, hintText: S.of(context).wallet_name, validator: WalletNameValidator(), - suffixIcon: IconButton( - onPressed: () async { - final String rName = await generateName(); + suffixIcon: Container( + width: 12, + height: 14, + margin: const EdgeInsets.only( bottom: 15, left: 13), + child: InkWell( + onTap: () async { + final String rName = await generateName(); - print(rName); - setState(() { - nameTextEditingController.text = rName; - nameTextEditingController.selection = - TextSelection.fromPosition(TextPosition( - offset: nameTextEditingController.text.length)); - }); - }, - icon:Container( - padding: const EdgeInsets.all(7) - , - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(6.0), - color: Color.fromRGBO(91, 112, 146, 1),), - width: 27.0, - height: 27.0, - - child: Image.asset( - 'assets/images/refresh_icon.png', - width: 14, - height: 13, - ), - ), + print(rName); + setState(() { + nameTextEditingController.text = rName; + nameTextEditingController.selection = + TextSelection.fromPosition(TextPosition( + offset: nameTextEditingController.text.length)); + }); + }, + child: Container( + padding: EdgeInsets.all(8), + decoration: BoxDecoration( + color: Theme.of(context).hintColor, + borderRadius: BorderRadius.all(Radius.circular(6))), + child: Image.asset('assets/images/refresh_icon.png', + color: Theme.of(context) + .primaryTextTheme + .display1 + .decorationColor)), + ), ), ), Container(height: 20), diff --git a/lib/src/widgets/seed_widget.dart b/lib/src/widgets/seed_widget.dart index ef768c0de..289b8076b 100644 --- a/lib/src/widgets/seed_widget.dart +++ b/lib/src/widgets/seed_widget.dart @@ -25,8 +25,7 @@ class SeedWidgetState extends State { SeedWidgetState(String language, this.type) : controller = TextEditingController(), focusNode = FocusNode(), - words = SeedValidator.getWordList( - type:type, language: language) { + words = SeedValidator.getWordList(type: type, language: language) { focusNode.addListener(() { setState(() { if (!focusNode.hasFocus && controller.text.isEmpty) { @@ -56,8 +55,7 @@ class SeedWidgetState extends State { void changeSeedLanguage(String language) { setState(() { - words = SeedValidator.getWordList( - type: type, language: language); + words = SeedValidator.getWordList(type: type, language: language); }); } From 3ed867aba3ba90dc469cefa14ea22720e7e80922 Mon Sep 17 00:00:00 2001 From: RafiaChy Date: Mon, 24 Jan 2022 20:00:26 +0600 Subject: [PATCH 5/5] Added a generate-name button for restore-from-key page and removed empty lines, types for final variables, and print statements --- lib/entities/generate_name.dart | 1 - .../screens/new_wallet/new_wallet_page.dart | 4 +-- .../wallet_restore_from_keys_form.dart | 32 +++++++++++++++++-- .../wallet_restore_from_seed_form.dart | 6 ++-- 4 files changed, 33 insertions(+), 10 deletions(-) diff --git a/lib/entities/generate_name.dart b/lib/entities/generate_name.dart index 140a60b31..4aa570769 100644 --- a/lib/entities/generate_name.dart +++ b/lib/entities/generate_name.dart @@ -20,6 +20,5 @@ Future generateName() async { final chosenNoun = nouns[randomThing.nextInt(nouns.length)]; final returnString = chosenAdjective.capitalized() + ' ' + chosenNoun.capitalized(); - return returnString; } diff --git a/lib/src/screens/new_wallet/new_wallet_page.dart b/lib/src/screens/new_wallet/new_wallet_page.dart index a73e814e8..a4a0b32be 100644 --- a/lib/src/screens/new_wallet/new_wallet_page.dart +++ b/lib/src/screens/new_wallet/new_wallet_page.dart @@ -116,9 +116,7 @@ class _WalletNameFormState extends State { decoration: InputDecoration( suffixIcon: IconButton( onPressed: () async { - final String rName = await generateName(); - - print(rName); + final rName = await generateName(); setState(() { _controller.text = rName; _walletNewVM.name = rName; diff --git a/lib/src/screens/restore/wallet_restore_from_keys_form.dart b/lib/src/screens/restore/wallet_restore_from_keys_form.dart index 4ad9c25bc..36264aa95 100644 --- a/lib/src/screens/restore/wallet_restore_from_keys_form.dart +++ b/lib/src/screens/restore/wallet_restore_from_keys_form.dart @@ -7,12 +7,13 @@ import 'package:cake_wallet/src/widgets/base_text_form_field.dart'; import 'package:cake_wallet/src/widgets/base_text_form_field.dart'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/core/validator.dart'; +import 'package:cake_wallet/entities/generate_name.dart'; class WalletRestoreFromKeysFrom extends StatefulWidget { WalletRestoreFromKeysFrom({Key key, this.onHeightOrDateEntered}) : super(key: key); - final Function (bool) onHeightOrDateEntered; + final Function(bool) onHeightOrDateEntered; @override WalletRestoreFromKeysFromState createState() => @@ -56,7 +57,34 @@ class WalletRestoreFromKeysFromState extends State { BaseTextFormField( controller: nameTextEditingController, hintText: S.of(context).wallet_name, - validator: WalletNameValidator()), + validator: WalletNameValidator(), + suffixIcon: Container( + width: 12, + height: 14, + margin: const EdgeInsets.only(bottom: 15, left: 13), + child: InkWell( + onTap: () async { + final rName = await generateName(); + setState(() { + nameTextEditingController.text = rName; + nameTextEditingController.selection = + TextSelection.fromPosition(TextPosition( + offset: nameTextEditingController.text.length)); + }); + }, + child: Container( + padding: EdgeInsets.all(8), + decoration: BoxDecoration( + color: Theme.of(context).hintColor, + borderRadius: BorderRadius.all(Radius.circular(6))), + child: Image.asset('assets/images/refresh_icon.png', + color: Theme.of(context) + .primaryTextTheme + .display1 + .decorationColor)), + ), + ), + ), Container(height: 20), BaseTextFormField( controller: addressController, diff --git a/lib/src/screens/restore/wallet_restore_from_seed_form.dart b/lib/src/screens/restore/wallet_restore_from_seed_form.dart index 9338b3eb1..6e3ab92fe 100644 --- a/lib/src/screens/restore/wallet_restore_from_seed_form.dart +++ b/lib/src/screens/restore/wallet_restore_from_seed_form.dart @@ -64,12 +64,10 @@ class WalletRestoreFromSeedFormState extends State { suffixIcon: Container( width: 12, height: 14, - margin: const EdgeInsets.only( bottom: 15, left: 13), + margin: const EdgeInsets.only(bottom: 15, left: 13), child: InkWell( onTap: () async { - final String rName = await generateName(); - - print(rName); + final rName = await generateName(); setState(() { nameTextEditingController.text = rName; nameTextEditingController.selection =