TF-3408 Auto load more when user uses arrow down of keyboard

This commit is contained in:
dab246
2025-01-16 14:52:11 +07:00
committed by Dat H. Pham
parent b73784742a
commit aceaebe869
18 changed files with 134 additions and 301 deletions
@@ -17,6 +17,7 @@ import 'package:super_tag_editor/tag_editor.dart';
import 'package:tmail_ui_user/features/base/mixin/message_dialog_action_mixin.dart';
import 'package:tmail_ui_user/features/base/widget/material_text_icon_button.dart';
import 'package:tmail_ui_user/features/composer/presentation/model/suggestion_email_address.dart';
import 'package:tmail_ui_user/features/composer/presentation/styles/composer_style.dart';
import 'package:tmail_ui_user/features/contact/presentation/widgets/contact_input_tag_item.dart';
import 'package:tmail_ui_user/features/contact/presentation/widgets/contact_suggestion_box_item.dart';
import 'package:tmail_ui_user/features/email/presentation/utils/email_utils.dart';
@@ -62,6 +63,7 @@ class _AutocompleteContactTextFieldWithTagsState extends State<AutocompleteConta
final _responsiveUtils = Get.find<ResponsiveUtils>();
final _imagePaths = Get.find<ImagePaths>();
final GlobalKey<TagsEditorState> keyToEmailTagEditor = GlobalKey<TagsEditorState>();
final FocusNode _focusNodeKeyboard = FocusNode();
late List<EmailAddress> listEmailAddress;
@@ -73,12 +75,19 @@ class _AutocompleteContactTextFieldWithTagsState extends State<AutocompleteConta
listEmailAddress = widget.listEmailAddress;
}
@override
void dispose() {
_focusNodeKeyboard.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
final itemTagEditor = TagEditor<SuggestionEmailAddress>(
key: keyToEmailTagEditor,
length: listEmailAddress.length,
controller: widget.controller,
focusNodeKeyboard: _focusNodeKeyboard,
borderRadius: 12,
backgroundColor: AppColor.colorInputBackgroundCreateMailbox,
focusedBorderColor: AppColor.colorTextButton,
@@ -144,14 +153,16 @@ class _AutocompleteContactTextFieldWithTagsState extends State<AutocompleteConta
queryString,
limit: AppConfig.defaultLimitAutocomplete,
),
suggestionItemHeight: ComposerStyle.suggestionItemHeight,
isLoadMoreOnlyOnce: true,
isLoadMoreReplaceAllOld: false,
loadMoreSuggestions: _findSuggestions,
suggestionBuilder: (context, tagEditorState, suggestionEmailAddress, index, length, highlight, suggestionValid) {
return Container(
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 12),
child: ContactSuggestionBoxItem(
suggestionEmailAddress,
_imagePaths,
shapeBorder: const RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(12))),
selectedContactCallbackAction: (contact) {