From 4d4d1b778ff989d1ce1896adfde3f1a42c59e03e Mon Sep 17 00:00:00 2001 From: Ethan Lee Date: Mon, 19 Aug 2024 11:50:50 -0700 Subject: [PATCH 1/2] add `dapText` hook --- lib/features/send/send_page.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/features/send/send_page.dart b/lib/features/send/send_page.dart index 32232e0..fedf0e2 100644 --- a/lib/features/send/send_page.dart +++ b/lib/features/send/send_page.dart @@ -23,6 +23,7 @@ class SendPage extends HookConsumerWidget { final featureFlags = ref.watch(featureFlagsProvider); final dap = useState?>(null); + final dapText = useState(null); return Scaffold( appBar: _buildAppBar(context, featureFlags), @@ -47,6 +48,7 @@ class SendPage extends HookConsumerWidget { Expanded( child: DapForm( buttonTitle: Loc.of(context).next, + dapText: dapText, dap: dap, onSubmit: (recipientDap, moneyAddresses) async { await Navigator.of(context).push( From cd3b50479be9e8a73e313a168616f175e8ea61ff Mon Sep 17 00:00:00 2001 From: Ethan Lee Date: Mon, 19 Aug 2024 11:51:18 -0700 Subject: [PATCH 2/2] use `dapText` as initial text for text controller --- lib/features/dap/dap_form.dart | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/lib/features/dap/dap_form.dart b/lib/features/dap/dap_form.dart index 97d7200..d7f517e 100644 --- a/lib/features/dap/dap_form.dart +++ b/lib/features/dap/dap_form.dart @@ -9,11 +9,13 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; class DapForm extends HookConsumerWidget { final String buttonTitle; + final ValueNotifier dapText; final ValueNotifier?> dap; final Future Function(Dap, List) onSubmit; DapForm({ required this.buttonTitle, + required this.dapText, required this.dap, required this.onSubmit, super.key, @@ -26,9 +28,19 @@ class DapForm extends HookConsumerWidget { final errorText = useState(null); final focusNode = useFocusNode(); - final textController = useTextEditingController(); + final textController = useTextEditingController(text: dapText.value); final errorMessage = Loc.of(context).invalidDap; + useEffect( + () { + if (dapText.value != null && dapText.value!.isNotEmpty) { + focusNode.requestFocus(); + } + return null; + }, + [], + ); + return Form( key: _formKey, child: Column( @@ -46,11 +58,13 @@ class DapForm extends HookConsumerWidget { controller: textController, onTap: () => errorText.value = null, onTapOutside: (_) { - _parseDap( - textController.text, - errorMessage, - errorText, - ); + if (textController.text.isNotEmpty) { + _parseDap( + textController.text, + errorMessage, + errorText, + ); + } focusNode.unfocus(); }, @@ -82,6 +96,8 @@ class DapForm extends HookConsumerWidget { errorText, ); + dapText.value = textController.text; + if (errorText.value == null) { await _resolveDap(parsedDap); }