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