Add done button for amount text fields on exchange templates
M committed
Jan 31, 2022 at 14:42 UTC
83c976d12d004ca5f07397e9c72cc83469a99d18
1 file changed
+25
-4
lib/src/screens/exchange/exchange_template_page.dart
+25
-4
@@ -3,9 +3,13 @@ import 'package:cake_wallet/exchange/exchange_provider.dart';
3
import 'package:cake_wallet/exchange/exchange_template.dart';
4
import 'package:cake_wallet/src/screens/base_page.dart';
5
import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
6
+import 'package:cake_wallet/src/widgets/keyboard_done_button.dart';
7
import 'package:flutter/cupertino.dart';
8
import 'package:flutter/material.dart';
9
import 'package:flutter_mobx/flutter_mobx.dart';
10
+import 'package:keyboard_actions/keyboard_actions.dart';
11
+import 'package:keyboard_actions/keyboard_actions_config.dart';
12
+import 'package:keyboard_actions/keyboard_actions_item.dart';
13
import 'package:mobx/mobx.dart';
14
import 'package:cake_wallet/generated/i18n.dart';
15
import 'package:cw_core/crypto_currency.dart';
@@ -28,6 +32,8 @@ class ExchangeTemplatePage extends BasePage {
32
final depositKey = GlobalKey<ExchangeCardState>();
33
final receiveKey = GlobalKey<ExchangeCardState>();
34
final _formKey = GlobalKey<FormState>();
35
+ final _depositAmountFocus = FocusNode();
36
+ final _receiveAmountFocus = FocusNode();
37
var _isReactionsSet = false;
38
39
@override
@@ -36,9 +42,6 @@ class ExchangeTemplatePage extends BasePage {
42
@override
43
Color get titleColor => Colors.white;
44
39
- @override
40
- bool get resizeToAvoidBottomInset => false;
41
-
45
@override
46
bool get extendBodyBehindAppBar => true;
47
@@ -74,7 +77,22 @@ class ExchangeTemplatePage extends BasePage {
77
WidgetsBinding.instance
78
.addPostFrameCallback((_) => _setReactions(context, exchangeViewModel));
79
77
- return Container(
80
+ return KeyboardActions(
81
+ disableScroll: true,
82
+ config: KeyboardActionsConfig(
83
+ keyboardActionsPlatform: KeyboardActionsPlatform.IOS,
84
+ keyboardBarColor:
85
+ Theme.of(context).accentTextTheme.body2.backgroundColor,
86
+ nextFocus: false,
87
+ actions: [
88
+ KeyboardActionsItem(
89
+ focusNode: _depositAmountFocus,
90
+ toolbarButtons: [(_) => KeyboardDoneButton()]),
91
+ KeyboardActionsItem(
92
+ focusNode: _receiveAmountFocus,
93
+ toolbarButtons: [(_) => KeyboardDoneButton()])
94
+ ]),
95
+ child: Container(
96
color: Theme.of(context).backgroundColor,
97
child: Form(
98
key: _formKey,
@@ -121,6 +139,7 @@ class ExchangeTemplatePage extends BasePage {
139
padding: EdgeInsets.fromLTRB(24, 90, 24, 32),
140
child: Observer(
141
builder: (_) => ExchangeCard(
142
+ amountFocusNode: _depositAmountFocus,
143
key: depositKey,
144
title: S.of(context).you_will_send,
145
initialCurrency:
@@ -160,6 +179,7 @@ class ExchangeTemplatePage extends BasePage {
179
padding: EdgeInsets.only(top: 29, left: 24, right: 24),
180
child: Observer(
181
builder: (_) => ExchangeCard(
182
+ amountFocusNode: _receiveAmountFocus,
183
key: receiveKey,
184
title: S.of(context).you_will_get,
185
initialCurrency:
@@ -244,6 +264,7 @@ class ExchangeTemplatePage extends BasePage {
264
textColor: Colors.white),
265
]),
266
))
267
+ )
268
);
269
}
270