From fb690ea07897412784ebdbb68244c7cfa27d7ae1 Mon Sep 17 00:00:00 2001 From: dab246 Date: Wed, 11 Jan 2023 09:51:18 +0700 Subject: [PATCH] TF-1354 Support use Up/Down in keyboard to move selection in the list --- .../widgets/email_address_input_builder.dart | 11 +++++-- ...complete_contact_text_field_with_tags.dart | 10 ++++-- pubspec.lock | 32 +++++++++---------- pubspec.yaml | 2 +- 4 files changed, 34 insertions(+), 21 deletions(-) diff --git a/lib/features/composer/presentation/widgets/email_address_input_builder.dart b/lib/features/composer/presentation/widgets/email_address_input_builder.dart index ca49ff485..efc9dc9b9 100644 --- a/lib/features/composer/presentation/widgets/email_address_input_builder.dart +++ b/lib/features/composer/presentation/widgets/email_address_input_builder.dart @@ -149,6 +149,12 @@ class EmailAddressInputBuilder { suggestionsBoxMaxHeight: 300, textStyle: const TextStyle(color: AppColor.colorEmailAddress, fontSize: 14, fontWeight: FontWeight.w500), onDeleteTagAction: () => _handleDeleteTagAction(setState), + onSelectOptionAction: (item) { + if (!_isDuplicatedRecipient(item.emailAddress.emailAddress)) { + setState(() => listEmailAddress.add(item.emailAddress)); + _onUpdateListEmailAddressAction?.call(_prefixEmailAddress, listEmailAddress); + } + }, onSubmitted: (value) { log('EmailAddressInputBuilder::_buildTagEditor(): onSubmitted: $value'); if (!_isDuplicatedRecipient(value)) { @@ -201,7 +207,7 @@ class EmailAddressInputBuilder { _handleGapBetweenTagChangedAndFindSuggestion); }, findSuggestions: _findSuggestions, - suggestionBuilder: (context, tagEditorState, suggestionEmailAddress) { + suggestionBuilder: (context, tagEditorState, suggestionEmailAddress, highlight) { switch (suggestionEmailAddress.state) { case SuggestionEmailState.duplicated: return _buildExistedSuggestionItem(setState, context, suggestionEmailAddress); @@ -315,7 +321,8 @@ class EmailAddressInputBuilder { log('EmailAddressInputBuilder::_buildSuggestionItem(): onTap: $suggestionEmailAddress'); setState(() => listEmailAddress.add(suggestionEmailAddress.emailAddress)); _onUpdateListEmailAddressAction?.call(_prefixEmailAddress, listEmailAddress); - tagEditorState.selectSuggestion(suggestionEmailAddress); + tagEditorState.closeSuggestionBox(); + tagEditorState.resetTextField(); }, ); } diff --git a/lib/features/contact/presentation/widgets/autocomplete_contact_text_field_with_tags.dart b/lib/features/contact/presentation/widgets/autocomplete_contact_text_field_with_tags.dart index ba87f990a..2c9f9ddf3 100644 --- a/lib/features/contact/presentation/widgets/autocomplete_contact_text_field_with_tags.dart +++ b/lib/features/contact/presentation/widgets/autocomplete_contact_text_field_with_tags.dart @@ -123,7 +123,7 @@ class _AutocompleteContactTextFieldWithTagsState extends State listEmailAddress.add(contact)); - tagEditorState.selectSuggestion(suggestionEmailAddress); + tagEditorState.closeSuggestionBox(); + tagEditorState.resetTextField(); }, ), ); @@ -199,6 +200,11 @@ class _AutocompleteContactTextFieldWithTagsState extends State