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" : "中文",