TF-3087 [MOBILE] Apply new design suggestions search for email address in search bar

This commit is contained in:
dab246
2024-08-30 14:45:30 +07:00
committed by Dat H. Pham
parent 208a6cde0d
commit 4494f7bdaf
2 changed files with 56 additions and 1 deletions
@@ -8,6 +8,7 @@ import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
import 'package:model/model.dart';
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/email_action_cupertino_action_sheet_action_builder.dart';
@@ -15,6 +16,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/recent_sea
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_sort_order_type.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/quick_search/contact_quick_search_item.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/quick_search/email_quick_search_item_tile_widget.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/quick_search/recent_search_item_tile_widget.dart';
import 'package:tmail_ui_user/features/search/email/presentation/model/search_more_state.dart';
@@ -80,6 +82,12 @@ class SearchEmailView extends GetWidget<SearchEmailController>
child: Column(children: [
if (controller.currentSearchText.value.isNotEmpty)
_buildShowAllResultSearchButton(context, controller.currentSearchText.value),
if (controller.listContactSuggestionSearch.isNotEmpty
&& controller.currentSearchText.isNotEmpty)
_buildListContactSuggestionSearch(context, controller.listContactSuggestionSearch),
if (controller.listContactSuggestionSearch.isNotEmpty
&& controller.listSuggestionSearch.isNotEmpty)
const Divider(),
if (controller.listSuggestionSearch.isNotEmpty && controller.currentSearchText.isNotEmpty)
_buildListSuggestionSearch(context, controller.listSuggestionSearch)
else if (controller.listRecentSearch.isNotEmpty && controller.listSuggestionSearch.isEmpty)
@@ -463,6 +471,30 @@ class SearchEmailView extends GetWidget<SearchEmailController>
});
}
Widget _buildListContactSuggestionSearch(
BuildContext context,
List<EmailAddress> listContactSuggestionSearch
) {
return ListView.builder(
shrinkWrap: true,
primary: false,
itemCount: listContactSuggestionSearch.length,
itemBuilder: (context, index) {
final emailAddress = listContactSuggestionSearch[index];
return Material(
type: MaterialType.transparency,
child: InkWell(
child: ContactQuickSearchItem(emailAddress: emailAddress),
onTap: () => controller.searchEmailByEmailAddressAction(
context,
emailAddress
),
),
);
}
);
}
Widget _buildEmptyEmail(BuildContext context) {
return Obx(() => controller.viewState.value.fold(
(failure) => const SizedBox.shrink(),