CWA-204 | applied new design to seed language picker; added wallet creation alert dialog

Oleksandr Sobol committed Apr 29, 2020 at 22:57 UTC ecca26bb584eb37d317a8a5d797d1b570d22a208
53 files changed +408 -122
assets/images/2.0x/china.png
Binary files /dev/null and b/assets/images/2.0x/china.png differ
assets/images/2.0x/germany.png
Binary files /dev/null and b/assets/images/2.0x/germany.png differ
assets/images/2.0x/holland.png
Binary files /dev/null and b/assets/images/2.0x/holland.png differ
assets/images/2.0x/india.png
Binary files /dev/null and b/assets/images/2.0x/india.png differ
assets/images/2.0x/japan.png
Binary files /dev/null and b/assets/images/2.0x/japan.png differ
assets/images/2.0x/poland.png
Binary files /dev/null and b/assets/images/2.0x/poland.png differ
assets/images/2.0x/portugal.png
Binary files /dev/null and b/assets/images/2.0x/portugal.png differ
assets/images/2.0x/russia.png
Binary files /dev/null and b/assets/images/2.0x/russia.png differ
assets/images/2.0x/south_korea.png
Binary files /dev/null and b/assets/images/2.0x/south_korea.png differ
assets/images/2.0x/spain.png
Binary files /dev/null and b/assets/images/2.0x/spain.png differ
assets/images/2.0x/usa.png
Binary files /dev/null and b/assets/images/2.0x/usa.png differ
assets/images/3.0x/china.png
Binary files /dev/null and b/assets/images/3.0x/china.png differ
assets/images/3.0x/germany.png
Binary files /dev/null and b/assets/images/3.0x/germany.png differ
assets/images/3.0x/holland.png
Binary files /dev/null and b/assets/images/3.0x/holland.png differ
assets/images/3.0x/india.png
Binary files /dev/null and b/assets/images/3.0x/india.png differ
assets/images/3.0x/japan.png
Binary files /dev/null and b/assets/images/3.0x/japan.png differ
assets/images/3.0x/poland.png
Binary files /dev/null and b/assets/images/3.0x/poland.png differ
assets/images/3.0x/portugal.png
Binary files /dev/null and b/assets/images/3.0x/portugal.png differ
assets/images/3.0x/russia.png
Binary files /dev/null and b/assets/images/3.0x/russia.png differ
assets/images/3.0x/south_korea.png
Binary files /dev/null and b/assets/images/3.0x/south_korea.png differ
assets/images/3.0x/spain.png
Binary files /dev/null and b/assets/images/3.0x/spain.png differ
assets/images/3.0x/usa.png
Binary files /dev/null and b/assets/images/3.0x/usa.png differ
assets/images/china.png
Binary files /dev/null and b/assets/images/china.png differ
assets/images/germany.png
Binary files /dev/null and b/assets/images/germany.png differ
assets/images/holland.png
Binary files /dev/null and b/assets/images/holland.png differ
assets/images/india.png
Binary files /dev/null and b/assets/images/india.png differ
assets/images/japan.png
Binary files /dev/null and b/assets/images/japan.png differ
assets/images/poland.png
Binary files /dev/null and b/assets/images/poland.png differ
assets/images/portugal.png
Binary files /dev/null and b/assets/images/portugal.png differ
assets/images/russia.png
Binary files /dev/null and b/assets/images/russia.png differ
assets/images/south_korea.png
Binary files /dev/null and b/assets/images/south_korea.png differ
assets/images/spain.png
Binary files /dev/null and b/assets/images/spain.png differ
assets/images/usa.png
Binary files /dev/null and b/assets/images/usa.png differ
lib/generated/i18n.dart
+58 -12
@@ -47,6 +47,7 @@ class S implements WidgetsLocalizations {
47 String get change_currency => "Change Currency";
48 String get change_exchange_provider => "Change Exchange Provider";
49 String get change_language => "Change language";
50 + String get choose_wallet_currency => "Please choose wallet currency:";
51 String get clear => "Clear";
52 String get confirm => "Confirm";
53 String get confirm_sending => "Confirm sending";
@@ -147,8 +148,9 @@ class S implements WidgetsLocalizations {
148 String get restore_wallet_restore_description => "Wallet restore description";
149 String get save => "Save";
150 String get saved_the_trade_id => "I've saved the trade ID";
151 + String get seed_choose => "Choose seed language";
152 String get seed_language_chinese => "Chinese";
151 - String get seed_language_choose => "Please choose seed language";
153 + String get seed_language_choose => "Please choose seed language:";
154 String get seed_language_dutch => "Dutch";
155 String get seed_language_english => "English";
156 String get seed_language_german => "German";
@@ -397,7 +399,7 @@ class $de extends S {
399 @override
400 String get restore_title_from_keys => "Wiederherstellen von Schlüsseln";
401 @override
400 - String get seed_language_choose => "Bitte wählen Sie die Ausgangssprache";
402 + String get seed_language_choose => "Bitte wählen Sie die Ausgangssprache:";
403 @override
404 String get wallet_keys => "Wallet schlüssel";
405 @override
@@ -425,6 +427,8 @@ class $de extends S {
427 @override
428 String get trade_details_pair => "Paar";
429 @override
430 + String get choose_wallet_currency => "Bitte wählen Sie die Brieftaschenwährung:";
431 + @override
432 String get confirm => "Bestätigen";
433 @override
434 String get settings_display_balance_as => "Kontostand anzeigen als";
@@ -647,6 +651,8 @@ class $de extends S {
651 @override
652 String get change_currency => "Währung ändern";
653 @override
654 + String get seed_choose => "Wählen Sie die Ausgangssprache";
655 + @override
656 String get transaction_details_amount => "Menge";
657 @override
658 String get widgets_address => "Adresse";
@@ -971,7 +977,7 @@ class $hi extends S {
977 @override
978 String get restore_title_from_keys => "कुंजी से पुनर्स्थापित करें";
979 @override
974 - String get seed_language_choose => "कृपया बीज भाषा चुनें";
980 + String get seed_language_choose => "कृपया बीज भाषा चुनें:";
981 @override
982 String get wallet_keys => "बटुआ की";
983 @override
@@ -999,6 +1005,8 @@ class $hi extends S {
1005 @override
1006 String get trade_details_pair => "जोड़ा";
1007 @override
1008 + String get choose_wallet_currency => "कृपया बटुआ मुद्रा चुनें:";
1009 + @override
1010 String get confirm => "की पुष्टि करें";
1011 @override
1012 String get settings_display_balance_as => "के रूप में संतुलन प्रदर्शित करें";
@@ -1221,6 +1229,8 @@ class $hi extends S {
1229 @override
1230 String get change_currency => "मुद्रा परिवर्तन करें";
1231 @override
1232 + String get seed_choose => "बीज भाषा चुनें";
1233 + @override
1234 String get transaction_details_amount => "रकम";
1235 @override
1236 String get widgets_address => "पता";
@@ -1545,7 +1555,7 @@ class $ru extends S {
1555 @override
1556 String get restore_title_from_keys => "Восстановить с помощью ключей";
1557 @override
1548 - String get seed_language_choose => "Пожалуйста, выберите язык мнемонической фразы";
1558 + String get seed_language_choose => "Пожалуйста, выберите язык мнемонической фразы:";
1559 @override
1560 String get wallet_keys => "Ключи кошелька";
1561 @override
@@ -1573,6 +1583,8 @@ class $ru extends S {
1583 @override
1584 String get trade_details_pair => "Пара";
1585 @override
1586 + String get choose_wallet_currency => "Пожалуйста, выберите валюту кошелька:";
1587 + @override
1588 String get confirm => "Подтвердить";
1589 @override
1590 String get settings_display_balance_as => "Отображать баланс как";
@@ -1795,6 +1807,8 @@ class $ru extends S {
1807 @override
1808 String get change_currency => "Изменить валюту";
1809 @override
1810 + String get seed_choose => "Выберите язык мнемонической фразы";
1811 + @override
1812 String get transaction_details_amount => "Сумма";
1813 @override
1814 String get widgets_address => "Адрес";
@@ -2119,7 +2133,7 @@ class $ko extends S {
2133 @override
2134 String get restore_title_from_keys => "키에서 복원";
2135 @override
2122 - String get seed_language_choose => "종자 언어를 선택하십시오";
2136 + String get seed_language_choose => "종자 언어를 선택하십시오:";
2137 @override
2138 String get wallet_keys => "지갑 키";
2139 @override
@@ -2147,6 +2161,8 @@ class $ko extends S {
2161 @override
2162 String get trade_details_pair => "쌍";
2163 @override
2164 + String get choose_wallet_currency => "지갑 통화를 선택하십시오:";
2165 + @override
2166 String get confirm => "확인";
2167 @override
2168 String get settings_display_balance_as => "잔액 표시";
@@ -2369,6 +2385,8 @@ class $ko extends S {
2385 @override
2386 String get change_currency => "통화 변경";
2387 @override
2388 + String get seed_choose => "시드 언어를 선택하십시오";
2389 + @override
2390 String get transaction_details_amount => "양";
2391 @override
2392 String get widgets_address => "주소";
@@ -2693,7 +2711,7 @@ class $pt extends S {
2711 @override
2712 String get restore_title_from_keys => "Restaurar a partir de chaves";
2713 @override
2696 - String get seed_language_choose => "Por favor, escolha o idioma da semente";
2714 + String get seed_language_choose => "Por favor, escolha o idioma da semente:";
2715 @override
2716 String get wallet_keys => "Chaves da carteira";
2717 @override
@@ -2721,6 +2739,8 @@ class $pt extends S {
2739 @override
2740 String get trade_details_pair => "Par";
2741 @override
2742 + String get choose_wallet_currency => "Escolha a moeda da carteira:";
2743 + @override
2744 String get confirm => "Confirmar";
2745 @override
2746 String get settings_display_balance_as => "Saldo a exibir";
@@ -2943,6 +2963,8 @@ class $pt extends S {
2963 @override
2964 String get change_currency => "Alterar moeda";
2965 @override
2966 + String get seed_choose => "Escolha o idioma da semente";
2967 + @override
2968 String get transaction_details_amount => "Quantia";
2969 @override
2970 String get widgets_address => "Endereço";
@@ -3267,7 +3289,7 @@ class $uk extends S {
3289 @override
3290 String get restore_title_from_keys => "Відновити за допомогою ключів";
3291 @override
3270 - String get seed_language_choose => "Будь ласка, виберіть мову мнемонічної фрази";
3292 + String get seed_language_choose => "Будь ласка, виберіть мову мнемонічної фрази:";
3293 @override
3294 String get wallet_keys => "Ключі гаманця";
3295 @override
@@ -3295,6 +3317,8 @@ class $uk extends S {
3317 @override
3318 String get trade_details_pair => "Пара";
3319 @override
3320 + String get choose_wallet_currency => "Будь ласка, виберіть валюту гаманця:";
3321 + @override
3322 String get confirm => "Підтвердити";
3323 @override
3324 String get settings_display_balance_as => "Відображати баланс як";
@@ -3517,6 +3541,8 @@ class $uk extends S {
3541 @override
3542 String get change_currency => "Змінити валюту";
3543 @override
3544 + String get seed_choose => "Виберіть мову мнемонічної фрази";
3545 + @override
3546 String get transaction_details_amount => "Сума";
3547 @override
3548 String get widgets_address => "Адреса";
@@ -3841,7 +3867,7 @@ class $ja extends S {
3867 @override
3868 String get restore_title_from_keys => "キーから復元する";
3869 @override
3844 - String get seed_language_choose => "シード言語を選択してください";
3870 + String get seed_language_choose => "シード言語を選択してください:";
3871 @override
3872 String get wallet_keys => "ウォレットキー";
3873 @override
@@ -3869,6 +3895,8 @@ class $ja extends S {
3895 @override
3896 String get trade_details_pair => "ペア";
3897 @override
3898 + String get choose_wallet_currency => "ウォレット通貨を選択してください:";
3899 + @override
3900 String get confirm => "確認する";
3901 @override
3902 String get settings_display_balance_as => "残高を表示";
@@ -4091,6 +4119,8 @@ class $ja extends S {
4119 @override
4120 String get change_currency => "通貨を変更する";
4121 @override
4122 + String get seed_choose => "シード言語を選択してください";
4123 + @override
4124 String get transaction_details_amount => "量";
4125 @override
4126 String get widgets_address => "住所";
@@ -4419,7 +4449,7 @@ class $pl extends S {
4449 @override
4450 String get restore_title_from_keys => "Przywróć z kluczy";
4451 @override
4422 - String get seed_language_choose => "Proszę wybrać język początkowy";
4452 + String get seed_language_choose => "Proszę wybrać język początkowy:";
4453 @override
4454 String get wallet_keys => "Klucze portfela";
4455 @override
@@ -4447,6 +4477,8 @@ class $pl extends S {
4477 @override
4478 String get trade_details_pair => "Para";
4479 @override
4480 + String get choose_wallet_currency => "Wybierz walutę portfela:";
4481 + @override
4482 String get confirm => "Potwierdzać";
4483 @override
4484 String get settings_display_balance_as => "Wyświetl saldo jako";
@@ -4669,6 +4701,8 @@ class $pl extends S {
4701 @override
4702 String get change_currency => "Change Currency";
4703 @override
4704 + String get seed_choose => "Wybierz język początkowy";
4705 + @override
4706 String get transaction_details_amount => "Ilość";
4707 @override
4708 String get widgets_address => "Adres";
@@ -4993,7 +5027,7 @@ class $es extends S {
5027 @override
5028 String get restore_title_from_keys => "De las claves";
5029 @override
4996 - String get seed_language_choose => "Por favor elija el idioma semilla";
5030 + String get seed_language_choose => "Por favor elija el idioma semilla:";
5031 @override
5032 String get wallet_keys => "Billetera clave";
5033 @override
@@ -5021,6 +5055,8 @@ class $es extends S {
5055 @override
5056 String get trade_details_pair => "Par";
5057 @override
5058 + String get choose_wallet_currency => "Por favor, elija la moneda de la billetera:";
5059 + @override
5060 String get confirm => "Confirmar";
5061 @override
5062 String get settings_display_balance_as => "Mostrar saldo como";
@@ -5243,6 +5279,8 @@ class $es extends S {
5279 @override
5280 String get change_currency => "Cambiar moneda";
5281 @override
5282 + String get seed_choose => "Elige el idioma semilla";
5283 + @override
5284 String get transaction_details_amount => "Cantidad";
5285 @override
5286 String get widgets_address => "Dirección";
@@ -5567,7 +5605,7 @@ class $nl extends S {
5605 @override
5606 String get restore_title_from_keys => "Herstel van sleutels";
5607 @override
5570 - String get seed_language_choose => "Kies een starttaal";
5608 + String get seed_language_choose => "Kies een starttaal:";
5609 @override
5610 String get wallet_keys => "Portemonnee sleutels";
5611 @override
@@ -5595,6 +5633,8 @@ class $nl extends S {
5633 @override
5634 String get trade_details_pair => "Paar";
5635 @override
5636 + String get choose_wallet_currency => "Kies een portemonnee-valuta:";
5637 + @override
5638 String get confirm => "Bevestigen";
5639 @override
5640 String get settings_display_balance_as => "Toon saldo als";
@@ -5817,6 +5857,8 @@ class $nl extends S {
5857 @override
5858 String get change_currency => "Verander valuta";
5859 @override
5860 + String get seed_choose => "Kies een starttaal";
5861 + @override
5862 String get transaction_details_amount => "Bedrag";
5863 @override
5864 String get widgets_address => "Adres";
@@ -6141,7 +6183,7 @@ class $zh extends S {
6183 @override
6184 String get restore_title_from_keys => "从密钥还原";
6185 @override
6144 - String get seed_language_choose => "請選擇種子語言";
6186 + String get seed_language_choose => "請選擇種子語言:";
6187 @override
6188 String get wallet_keys => "钱包钥匙";
6189 @override
@@ -6169,6 +6211,8 @@ class $zh extends S {
6211 @override
6212 String get trade_details_pair => "对";
6213 @override
6214 + String get choose_wallet_currency => "請選擇錢包貨幣:";
6215 + @override
6216 String get confirm => "确认";
6217 @override
6218 String get settings_display_balance_as => "将余额显示为";
@@ -6391,6 +6435,8 @@ class $zh extends S {
6435 @override
6436 String get change_currency => "更改币种";
6437 @override
6438 + String get seed_choose => "選擇種子語言";
6439 + @override
6440 String get transaction_details_amount => "量";
6441 @override
6442 String get widgets_address => "地址";
lib/src/screens/dashboard/wallet_menu.dart
-19
@@ -86,25 +86,6 @@ class WalletMenu {
86 },
87 reconnectActionRight: () => Navigator.of(context).pop()
88 );
89 -
90 - /*AlertDialog(
91 - title: Text(
92 - S.of(context).reconnection,
93 - textAlign: TextAlign.center,
94 - ),
95 - content: Text(S.of(context).reconnect_alert_text),
96 - actions: <Widget>[
97 - FlatButton(
98 - onPressed: () => Navigator.of(context).pop(),
99 - child: Text(S.of(context).cancel)),
100 - FlatButton(
101 - onPressed: () {
102 - walletStore.reconnect();
103 - Navigator.of(context).pop();
104 - },
105 - child: Text(S.of(context).ok))
106 - ],
107 - );*/
89 });
90 }
91 }
lib/src/screens/new_wallet/new_wallet_page.dart
+22 -42
@@ -15,6 +15,8 @@ import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart';
15 import 'package:cake_wallet/palette.dart';
16 import 'package:cake_wallet/src/stores/seed_language/seed_language_store.dart';
17 import 'package:cake_wallet/src/screens/new_wallet/widgets/select_button.dart';
18 +import 'package:cake_wallet/src/screens/seed_language/widgets/seed_language_picker.dart';
19 +import 'package:cake_wallet/src/screens/new_wallet/widgets/wallet_creation_dialog.dart';
20
21 class NewWalletPage extends BasePage {
22 NewWalletPage(
@@ -44,40 +46,10 @@ class WalletNameForm extends StatefulWidget {
46 class _WalletNameFormState extends State<WalletNameForm> {
47 static const aspectRatioImage = 1.22;
48
47 - final List<String> seedLocales = [
48 - S.current.seed_language_english,
49 - S.current.seed_language_chinese,
50 - S.current.seed_language_dutch,
51 - S.current.seed_language_german,
52 - S.current.seed_language_japanese,
53 - S.current.seed_language_portuguese,
54 - S.current.seed_language_russian,
55 - S.current.seed_language_spanish
56 - ];
57 -
49 final _formKey = GlobalKey<FormState>();
50 final nameController = TextEditingController();
51 final walletNameImage = Image.asset('assets/images/wallet_name.png');
52
62 - bool isDisabledButton;
63 -
64 - @override
65 - void initState() {
66 - isDisabledButton = true;
67 -
68 - nameController.addListener(() {
69 - if (nameController.text.isNotEmpty) {
70 - isDisabledButton = false;
71 - } else {
72 - isDisabledButton = true;
73 - }
74 -
75 - setState(() {});
76 - });
77 -
78 - super.initState();
79 - }
80 -
53 @override
54 void dispose() {
55 nameController.dispose();
@@ -89,24 +61,29 @@ class _WalletNameFormState extends State<WalletNameForm> {
61 final walletCreationStore = Provider.of<WalletCreationStore>(context);
62 final seedLanguageStore = Provider.of<SeedLanguageStore>(context);
63
64 + nameController.addListener(() {
65 + if (nameController.text.isNotEmpty) {
66 + walletCreationStore.setDisabledStatus(false);
67 + } else {
68 + walletCreationStore.setDisabledStatus(true);
69 + }
70 + });
71 +
72 reaction((_) => walletCreationStore.state, (WalletCreationState state) {
73 if (state is WalletCreatedSuccessfully) {
74 Navigator.of(context).popUntil((route) => route.isFirst);
75 }
76
97 - if (state is WalletCreationFailure) { // FIXME: apply new alert dialog
77 + if (state is WalletCreationFailure) {
78 WidgetsBinding.instance.addPostFrameCallback((_) {
79 showDialog<void>(
80 context: context,
101 - builder: (BuildContext context) {
102 - return AlertDialog(
103 - content: Text(state.error),
104 - actions: <Widget>[
105 - FlatButton(
106 - child: Text(S.of(context).ok),
107 - onPressed: () => Navigator.of(context).pop(),
108 - ),
109 - ],
81 + builder: (_) {
82 + return WalletCreationDialog(
83 + dialogTitle: S.current.new_wallet,
84 + dialogContent: state.error,
85 + dialogButtonText: S.of(context).ok,
86 + dialogButtonAction: () => Navigator.of(context).pop()
87 );
88 });
89 });
@@ -176,7 +153,10 @@ class _WalletNameFormState extends State<WalletNameForm> {
153 text: seedLocales[seedLanguages.indexOf(seedLanguageStore.selectedSeedLanguage)],
154 color: PaletteDark.menuList,
155 textColor: Colors.white,
179 - onTap: () {} // FIXME: apply picker
156 + onTap: () async => await showDialog(
157 + context: context,
158 + builder: (BuildContext context) => SeedLanguagePicker()
159 + )
160 )
161 ),
162 )
@@ -195,7 +175,7 @@ class _WalletNameFormState extends State<WalletNameForm> {
175 color: Colors.green,
176 textColor: Colors.white,
177 isLoading: walletCreationStore.state is WalletIsCreating,
198 - isDisabled: isDisabledButton,
178 + isDisabled: walletCreationStore.isDisabledStatus,
179 );
180 },
181 )),
lib/src/screens/new_wallet/new_wallet_type_page.dart
+1 -1
@@ -73,7 +73,7 @@ class WalletTypeFormState extends State<WalletTypeForm> {
73 Padding(
74 padding: EdgeInsets.only(top: 48),
75 child: Text(
76 - 'Please choose wallet currency:',
76 + S.of(context).choose_wallet_currency,
77 textAlign: TextAlign.center,
78 style: TextStyle(
79 fontSize: 16,
lib/src/screens/new_wallet/widgets/wallet_creation_dialog.dart new
+56
@@ -0,0 +1,56 @@
1 +import 'package:flutter/material.dart';
2 +import 'package:cake_wallet/src/widgets/base_alert_dialog.dart';
3 +
4 +class WalletCreationDialog extends BaseAlertDialog {
5 + WalletCreationDialog({
6 + @required this.dialogTitle,
7 + @required this.dialogContent,
8 + @required this.dialogButtonText,
9 + @required this.dialogButtonAction,
10 + });
11 +
12 + final String dialogTitle;
13 + final String dialogContent;
14 + final String dialogButtonText;
15 + final VoidCallback dialogButtonAction;
16 +
17 + @override
18 + String get titleText => dialogTitle;
19 +
20 + @override
21 + String get contentText => dialogContent;
22 +
23 + @override
24 + Widget actionButtons(BuildContext context) {
25 + return Container(
26 + width: 300,
27 + height: 52,
28 + padding: EdgeInsets.only(left: 12, right: 12),
29 + decoration: BoxDecoration(
30 + borderRadius: BorderRadius.only(
31 + bottomLeft: Radius.circular(24),
32 + bottomRight: Radius.circular(24)
33 + ),
34 + color: Colors.white
35 + ),
36 + child: ButtonTheme(
37 + minWidth: double.infinity,
38 + child: FlatButton(
39 + onPressed: dialogButtonAction,
40 + highlightColor: Colors.transparent,
41 + splashColor: Colors.transparent,
42 + child: Text(
43 + dialogButtonText,
44 + textAlign: TextAlign.center,
45 + style: TextStyle(
46 + fontSize: 15,
47 + fontWeight: FontWeight.w600,
48 + color: Colors.blue,
49 + decoration: TextDecoration.none,
50 + ),
51 + )),
52 + ),
53 + );
54 + }
55 +
56 +}
\ No newline at end of file
lib/src/screens/seed_language/widgets/seed_language_picker.dart
+225 -35
@@ -1,55 +1,245 @@
1 +import 'dart:ui';
2 +import 'package:flutter/cupertino.dart';
3 import 'package:flutter/material.dart';
4 import 'package:cake_wallet/palette.dart';
3 -import 'package:flutter_mobx/flutter_mobx.dart';
5 import 'package:provider/provider.dart';
6 import 'package:cake_wallet/src/stores/seed_language/seed_language_store.dart';
6 -import 'package:cake_wallet/src/widgets/present_picker.dart';
7 import 'package:cake_wallet/generated/i18n.dart';
8
9 -class SeedLanguagePicker extends StatelessWidget {
10 - List<String> seedLocales = [
11 - S.current.seed_language_english,
12 - S.current.seed_language_chinese,
13 - S.current.seed_language_dutch,
14 - S.current.seed_language_german,
15 - S.current.seed_language_japanese,
16 - S.current.seed_language_portuguese,
17 - S.current.seed_language_russian,
18 - S.current.seed_language_spanish
19 - ];
9 +List<String> seedLocales = [
10 + S.current.seed_language_english,
11 + S.current.seed_language_chinese,
12 + S.current.seed_language_dutch,
13 + S.current.seed_language_german,
14 + S.current.seed_language_japanese,
15 + S.current.seed_language_portuguese,
16 + S.current.seed_language_russian,
17 + S.current.seed_language_spanish
18 +];
19 +
20 +List<Image> flagImages = [
21 + Image.asset('assets/images/usa.png'),
22 + Image.asset('assets/images/china.png'),
23 + Image.asset('assets/images/holland.png'),
24 + Image.asset('assets/images/germany.png'),
25 + Image.asset('assets/images/japan.png'),
26 + Image.asset('assets/images/portugal.png'),
27 + Image.asset('assets/images/russia.png'),
28 + Image.asset('assets/images/spain.png'),
29 +];
30 +
31 +List<String> languageCodes = [
32 + 'Eng',
33 + 'Chi',
34 + 'Ned',
35 + 'Ger',
36 + 'Jap',
37 + 'Por',
38 + 'Rus',
39 + 'Esp',
40 +];
41 +
42 +enum Places {topLeft, topRight, bottomLeft, bottomRight, inside}
43 +
44 +class SeedLanguagePicker extends StatefulWidget {
45 + @override
46 + SeedLanguagePickerState createState() => SeedLanguagePickerState();
47 +}
48 +
49 +class SeedLanguagePickerState extends State<SeedLanguagePicker> {
50
51 @override
52 Widget build(BuildContext context) {
53 final seedLanguageStore = Provider.of<SeedLanguageStore>(context);
54
25 - return Observer(
26 - builder: (_) => InkWell(
27 - onTap: () => _setSeedLanguage(context),
55 + return GestureDetector(
56 + onTap: () => Navigator.of(context).pop(),
57 + child: Container(
58 + color: Colors.transparent,
59 + child: BackdropFilter(
60 + filter: ImageFilter.blur(sigmaX: 3.0, sigmaY: 3.0),
61 child: Container(
29 - padding: EdgeInsets.all(8.0),
30 - //width: double.infinity,
31 - decoration: BoxDecoration(
32 - border: Border.all(
33 - color: Theme.of(context).dividerTheme.color
34 - ),
35 - borderRadius: BorderRadius.circular(8.0)
36 - ),
37 - child: Text(seedLocales[seedLanguages.indexOf(seedLanguageStore.selectedSeedLanguage)],
38 - textAlign: TextAlign.center,
39 - style: TextStyle(fontSize: 16.0, color: Palette.lightBlue),
62 + decoration: BoxDecoration(color: PaletteDark.historyPanel.withOpacity(0.75)),
63 + child: Center(
64 + child: Column(
65 + mainAxisSize: MainAxisSize.min,
66 + children: <Widget>[
67 + Container(
68 + padding: EdgeInsets.only(left: 24, right: 24),
69 + child: Text(
70 + S.of(context).seed_choose,
71 + textAlign: TextAlign.center,
72 + style: TextStyle(
73 + fontSize: 18,
74 + fontWeight: FontWeight.bold,
75 + decoration: TextDecoration.none,
76 + color: Colors.white
77 + ),
78 + ),
79 + ),
80 + Padding(
81 + padding: EdgeInsets.only(top: 24),
82 + child: GestureDetector(
83 + onTap: () => null,
84 + child: Container(
85 + height: 300,
86 + width: 300,
87 + decoration: BoxDecoration(
88 + borderRadius: BorderRadius.all(Radius.circular(14)),
89 + color: PaletteDark.walletCardSubAddressField
90 + ),
91 + child: GridView.count(
92 + shrinkWrap: true,
93 + crossAxisCount: 3,
94 + childAspectRatio: 1,
95 + physics: const NeverScrollableScrollPhysics(),
96 + crossAxisSpacing: 1,
97 + mainAxisSpacing: 1,
98 + children: List.generate(9, (index) {
99 +
100 + if (index == 8) {
101 +
102 + return gridTile(
103 + isCurrent: false,
104 + place: Places.bottomRight,
105 + image: null,
106 + text: '',
107 + onTap: null);
108 +
109 + } else {
110 +
111 + final code = languageCodes[index];
112 + final flag = flagImages[index];
113 + final isCurrent = index == seedLanguages.indexOf(seedLanguageStore.selectedSeedLanguage);
114 +
115 + if (index == 0) {
116 + return gridTile(
117 + isCurrent: isCurrent,
118 + place: Places.topLeft,
119 + image: flag,
120 + text: code,
121 + onTap: () {
122 + seedLanguageStore.setSelectedSeedLanguage(seedLanguages[index]);
123 + Navigator.of(context).pop();
124 + }
125 + );
126 + }
127 +
128 + if (index == 2) {
129 + return gridTile(
130 + isCurrent: isCurrent,
131 + place: Places.topRight,
132 + image: flag,
133 + text: code,
134 + onTap: () {
135 + seedLanguageStore.setSelectedSeedLanguage(seedLanguages[index]);
136 + Navigator.of(context).pop();
137 + }
138 + );
139 + }
140 +
141 + if (index == 6) {
142 + return gridTile(
143 + isCurrent: isCurrent,
144 + place: Places.bottomLeft,
145 + image: flag,
146 + text: code,
147 + onTap: () {
148 + seedLanguageStore.setSelectedSeedLanguage(seedLanguages[index]);
149 + Navigator.of(context).pop();
150 + }
151 + );
152 + }
153 +
154 + return gridTile(
155 + isCurrent: isCurrent,
156 + place: Places.inside,
157 + image: flag,
158 + text: code,
159 + onTap: () {
160 + seedLanguageStore.setSelectedSeedLanguage(seedLanguages[index]);
161 + Navigator.of(context).pop();
162 + }
163 + );
164 + }
165 + }),
166 + ),
167 + ),
168 + ),
169 + )
170 + ],
171 + ),
172 ),
173 ),
42 - ));
174 + ),
175 + ),
176 + );
177 }
178
45 - Future<void> _setSeedLanguage(BuildContext context) async {
46 - final seedLanguageStore = Provider.of<SeedLanguageStore>(context);
47 - String selectedSeedLanguage =
48 - await presentPicker(context, seedLocales);
179 + Widget gridTile({
180 + @required bool isCurrent,
181 + @required Places place,
182 + @required Image image,
183 + @required String text,
184 + @required VoidCallback onTap}) {
185 +
186 + BorderRadius borderRadius;
187 + final color = isCurrent ? PaletteDark.historyPanel : PaletteDark.menuList;
188 + final textColor = isCurrent ? Colors.blue : Colors.white;
189
50 - if (selectedSeedLanguage != null) {
51 - selectedSeedLanguage = seedLanguages[seedLocales.indexOf(selectedSeedLanguage)];
52 - seedLanguageStore.setSelectedSeedLanguage(selectedSeedLanguage);
190 + switch (place) {
191 + case Places.topLeft:
192 + borderRadius = BorderRadius.only(topLeft: Radius.circular(14));
193 + break;
194 + case Places.topRight:
195 + borderRadius = BorderRadius.only(topRight: Radius.circular(14));
196 + break;
197 + case Places.bottomLeft:
198 + borderRadius = BorderRadius.only(bottomLeft: Radius.circular(14));
199 + break;
200 + case Places.bottomRight:
201 + borderRadius = BorderRadius.only(bottomRight: Radius.circular(14));
202 + break;
203 + case Places.inside:
204 + borderRadius = BorderRadius.all(Radius.circular(0));
205 + break;
206 }
207 +
208 + return GestureDetector(
209 + onTap: onTap,
210 + child: Container(
211 + padding: EdgeInsets.all(10),
212 + decoration: BoxDecoration(
213 + borderRadius: borderRadius,
214 + color: color
215 + ),
216 + child: Center(
217 + child: Row(
218 + mainAxisSize: MainAxisSize.min,
219 + mainAxisAlignment: MainAxisAlignment.center,
220 + crossAxisAlignment: CrossAxisAlignment.center,
221 + children: <Widget>[
222 + image != null
223 + ? image
224 + : Offstage(),
225 + Padding(
226 + padding: image != null
227 + ? EdgeInsets.only(left: 10)
228 + : EdgeInsets.only(left: 0),
229 + child: Text(
230 + text,
231 + style: TextStyle(
232 + fontSize: 18,
233 + fontWeight: FontWeight.bold,
234 + decoration: TextDecoration.none,
235 + color: textColor
236 + ),
237 + ),
238 + )
239 + ],
240 + ),
241 + ),
242 + )
243 + );
244 }
245 }
\ No newline at end of file
lib/src/screens/wallet_list/wallet_list_page.dart
+1 -1
@@ -152,7 +152,7 @@ class WalletListBodyState extends State<WalletListBody> {
152 ),
153 bottomSection: Column(children: <Widget>[
154 PrimaryImageButton(
155 - onPressed: () => Navigator.of(context).pushNamed(Routes.newWallet),
155 + onPressed: () => Navigator.of(context).pushNamed(Routes.newWalletType),
156 image: newWalletImage,
157 text: S.of(context).wallet_list_create_new_wallet,
158 color: Colors.white,
lib/src/stores/wallet_creation/wallet_creation_store.dart
+9
@@ -16,6 +16,7 @@ abstract class WalletCreationStoreBase with Store {
16 @required this.walletListService,
17 @required this.sharedPreferences}) {
18 state = WalletCreationStateInitial();
19 + isDisabledStatus = true;
20 }
21
22 final AuthenticationStore authStore;
@@ -31,6 +32,9 @@ abstract class WalletCreationStoreBase with Store {
32 @observable
33 bool isValid;
34
35 + @observable
36 + bool isDisabledStatus;
37 +
38 @action
39 Future create({String name, String language}) async {
40 state = WalletCreationStateInitial();
@@ -45,6 +49,11 @@ abstract class WalletCreationStoreBase with Store {
49 }
50 }
51
52 + @action
53 + void setDisabledStatus(bool isDisabled) {
54 + isDisabledStatus = isDisabled;
55 + }
56 +
57 void validateWalletName(String value) {
58 const pattern = '^[a-zA-Z0-9_]{1,15}\$';
59 final regExp = RegExp(pattern);
res/values/strings_de.arb
+3 -1
@@ -107,6 +107,7 @@
107 "new_wallet" : "Neues Wallet",
108 "wallet_name" : "Walletname",
109 "continue_text" : "Fortsetzen",
110 + "choose_wallet_currency" : "Bitte wählen Sie die Brieftaschenwährung:",
111
112
113 "node_new" : "Neuer Knoten",
@@ -158,7 +159,8 @@
159 "copy" : "Kopieren",
160
161
161 - "seed_language_choose" : "Bitte wählen Sie die Ausgangssprache",
162 + "seed_language_choose" : "Bitte wählen Sie die Ausgangssprache:",
163 + "seed_choose" : "Wählen Sie die Ausgangssprache",
164 "seed_language_next" : "Nächster",
165 "seed_language_english" : "Englisch",
166 "seed_language_chinese" : "Chinesisch",
res/values/strings_en.arb
+3 -1
@@ -107,6 +107,7 @@
107 "new_wallet" : "New Wallet",
108 "wallet_name" : "Wallet name",
109 "continue_text" : "Continue",
110 + "choose_wallet_currency" : "Please choose wallet currency:",
111
112
113 "node_new" : "New Node",
@@ -158,7 +159,8 @@
159 "copy" : "Copy",
160
161
161 - "seed_language_choose" : "Please choose seed language",
162 + "seed_language_choose" : "Please choose seed language:",
163 + "seed_choose" : "Choose seed language",
164 "seed_language_next" : "Next",
165 "seed_language_english" : "English",
166 "seed_language_chinese" : "Chinese",
res/values/strings_es.arb
+3 -1
@@ -107,6 +107,7 @@
107 "new_wallet" : "Nueva billetera",
108 "wallet_name" : "Nombre de la billetera",
109 "continue_text" : "Continuar",
110 + "choose_wallet_currency" : "Por favor, elija la moneda de la billetera:",
111
112
113 "node_new" : "Nuevo nodo",
@@ -158,7 +159,8 @@
159 "copy" : "Dupdo",
160
161
161 - "seed_language_choose" : "Por favor elija el idioma semilla",
162 + "seed_language_choose" : "Por favor elija el idioma semilla:",
163 + "seed_choose" : "Elige el idioma semilla",
164 "seed_language_next" : "Próximo",
165 "seed_language_english" : "Inglés",
166 "seed_language_chinese" : "Chino",
res/values/strings_hi.arb
+3 -1
@@ -107,6 +107,7 @@
107 "new_wallet" : "नया बटुआ",
108 "wallet_name" : "बटुए का नाम",
109 "continue_text" : "जारी रहना",
110 + "choose_wallet_currency" : "कृपया बटुआ मुद्रा चुनें:",
111
112
113 "node_new" : "नया नोड",
@@ -158,7 +159,8 @@
159 "copy" : "प्रतिलिपि",
160
161
161 - "seed_language_choose" : "कृपया बीज भाषा चुनें",
162 + "seed_language_choose" : "कृपया बीज भाषा चुनें:",
163 + "seed_choose" : "बीज भाषा चुनें",
164 "seed_language_next" : "आगामी",
165 "seed_language_english" : "अंग्रेज़ी",
166 "seed_language_chinese" : "चीनी",
res/values/strings_ja.arb
+3 -1
@@ -107,6 +107,7 @@
107 "new_wallet" : "新しいウォレット",
108 "wallet_name" : "ウォレット名",
109 "continue_text" : "持続する",
110 + "choose_wallet_currency" : "ウォレット通貨を選択してください:",
111
112
113 "node_new" : "新しいノード",
@@ -158,7 +159,8 @@
159 "copy" : "コピー",
160
161
161 - "seed_language_choose" : "シード言語を選択してください",
162 + "seed_language_choose" : "シード言語を選択してください:",
163 + "seed_choose" : "シード言語を選択してください",
164 "seed_language_next" : "次",
165 "seed_language_english" : "英語",
166 "seed_language_chinese" : "中国語",
res/values/strings_ko.arb
+3 -1
@@ -107,6 +107,7 @@
107 "new_wallet" : "새 월렛",
108 "wallet_name" : "지갑 이름",
109 "continue_text" : "잇다",
110 + "choose_wallet_currency" : "지갑 통화를 선택하십시오:",
111
112
113 "node_new" : "새로운 노드",
@@ -158,7 +159,8 @@
159 "copy" : "부",
160
161
161 - "seed_language_choose" : "종자 언어를 선택하십시오",
162 + "seed_language_choose" : "종자 언어를 선택하십시오:",
163 + "seed_choose" : "시드 언어를 선택하십시오",
164 "seed_language_next" : "다음 것",
165 "seed_language_english" : "영어",
166 "seed_language_chinese" : "중국말",
res/values/strings_nl.arb
+3 -1
@@ -107,6 +107,7 @@
107 "new_wallet" : "Nieuwe portemonnee",
108 "wallet_name" : "Portemonnee naam",
109 "continue_text" : "Doorgaan met",
110 + "choose_wallet_currency" : "Kies een portemonnee-valuta:",
111
112
113 "node_new" : "Nieuw knooppunt",
@@ -158,7 +159,8 @@
159 "copy" : "Kopiëren",
160
161
161 - "seed_language_choose" : "Kies een starttaal",
162 + "seed_language_choose" : "Kies een starttaal:",
163 + "seed_choose" : "Kies een starttaal",
164 "seed_language_next" : "Volgende",
165 "seed_language_english" : "Engels",
166 "seed_language_chinese" : "Chinese",
res/values/strings_pl.arb
+3 -1
@@ -107,6 +107,7 @@
107 "new_wallet" : "Nowy portfel",
108 "wallet_name" : "Nazwa portfela",
109 "continue_text" : "Dalej",
110 + "choose_wallet_currency" : "Wybierz walutę portfela:",
111
112
113 "node_new" : "Nowy węzeł",
@@ -158,7 +159,8 @@
159 "copy" : "Kopiuj",
160
161
161 - "seed_language_choose" : "Proszę wybrać język początkowy",
162 + "seed_language_choose" : "Proszę wybrać język początkowy:",
163 + "seed_choose" : "Wybierz język początkowy",
164 "seed_language_next" : "Kolejny",
165 "seed_language_english" : "Angielski",
166 "seed_language_chinese" : "Chiński",
res/values/strings_pt.arb
+3 -1
@@ -107,6 +107,7 @@
107 "new_wallet" : "Nova carteira",
108 "wallet_name" : "Nome da carteira",
109 "continue_text" : "Continuar",
110 + "choose_wallet_currency" : "Escolha a moeda da carteira:",
111
112
113 "node_new" : "Novo nó",
@@ -158,7 +159,8 @@
159 "copy" : "Copiar",
160
161
161 - "seed_language_choose" : "Por favor, escolha o idioma da semente",
162 + "seed_language_choose" : "Por favor, escolha o idioma da semente:",
163 + "seed_choose" : "Escolha o idioma da semente",
164 "seed_language_next" : "Próximo",
165 "seed_language_english" : "Inglesa",
166 "seed_language_chinese" : "Chinesa",
res/values/strings_ru.arb
+3 -1
@@ -107,6 +107,7 @@
107 "new_wallet" : "Новый кошелёк",
108 "wallet_name" : "Имя кошелька",
109 "continue_text" : "Продолжить",
110 + "choose_wallet_currency" : "Пожалуйста, выберите валюту кошелька:",
111
112
113 "node_new" : "Новая нода",
@@ -158,7 +159,8 @@
159 "copy" : "Скопировать",
160
161
161 - "seed_language_choose" : "Пожалуйста, выберите язык мнемонической фразы",
162 + "seed_language_choose" : "Пожалуйста, выберите язык мнемонической фразы:",
163 + "seed_choose" : "Выберите язык мнемонической фразы",
164 "seed_language_next" : "Продолжить",
165 "seed_language_english" : "Английский",
166 "seed_language_chinese" : "Китайский",
res/values/strings_uk.arb
+3 -1
@@ -107,6 +107,7 @@
107 "new_wallet" : "Новий гаманець",
108 "wallet_name" : "Ім'я гаманця",
109 "continue_text" : "Продовжити",
110 + "choose_wallet_currency" : "Будь ласка, виберіть валюту гаманця:",
111
112
113 "node_new" : "Новий вузол",
@@ -158,7 +159,8 @@
159 "copy" : "Скопіювати",
160
161
161 - "seed_language_choose" : "Будь ласка, виберіть мову мнемонічної фрази",
162 + "seed_language_choose" : "Будь ласка, виберіть мову мнемонічної фрази:",
163 + "seed_choose" : "Виберіть мову мнемонічної фрази",
164 "seed_language_next" : "Продовжити",
165 "seed_language_english" : "Англійська",
166 "seed_language_chinese" : "Китайська",
res/values/strings_zh.arb
+3 -1
@@ -107,6 +107,7 @@
107 "new_wallet" : "新钱包",
108 "wallet_name" : "钱包名称",
109 "continue_text" : "继续",
110 + "choose_wallet_currency" : "請選擇錢包貨幣:",
111
112
113 "node_new" : "新节点",
@@ -158,7 +159,8 @@
159 "copy" : "复制",
160
161
161 - "seed_language_choose" : "請選擇種子語言",
162 + "seed_language_choose" : "請選擇種子語言:",
163 + "seed_choose" : "選擇種子語言",
164 "seed_language_next" : "下一个",
165 "seed_language_english" : "英語",
166 "seed_language_chinese" : "中文",