From 9cca03fff34350da7d0f0c5fa5d0c6ee220c6273 Mon Sep 17 00:00:00 2001 From: dab246 Date: Wed, 23 Feb 2022 17:10:35 +0700 Subject: [PATCH] TF-35 Add presentation for search mailbox --- assets/images/ic_clear_text_search.svg | 3 + .../presentation/resources/image_paths.dart | 1 + .../presentation/mailbox_bindings.dart | 5 + .../presentation/mailbox_controller.dart | 42 +++++++- .../mailbox/presentation/mailbox_view.dart | 79 ++++++++++++-- .../presentation/mailbox_creator_view.dart | 1 + .../mailbox_dashboard_bindings.dart | 1 + .../mailbox_dashboard_controller.dart | 16 +-- .../thread/domain/model/search_query.dart | 4 + .../thread/presentation/thread_view.dart | 14 +-- .../widgets/search_app_bar_widget.dart | 102 ++++++++++-------- .../search_bar_thread_view_widget.dart | 1 - .../widgets/suggestion_box_widget.dart | 2 +- lib/main/localizations/app_localizations.dart | 7 ++ 14 files changed, 206 insertions(+), 72 deletions(-) create mode 100644 assets/images/ic_clear_text_search.svg diff --git a/assets/images/ic_clear_text_search.svg b/assets/images/ic_clear_text_search.svg new file mode 100644 index 000000000..2ae9d2da1 --- /dev/null +++ b/assets/images/ic_clear_text_search.svg @@ -0,0 +1,3 @@ + + + diff --git a/core/lib/presentation/resources/image_paths.dart b/core/lib/presentation/resources/image_paths.dart index 392313734..33b64b49b 100644 --- a/core/lib/presentation/resources/image_paths.dart +++ b/core/lib/presentation/resources/image_paths.dart @@ -80,6 +80,7 @@ class ImagePaths { String get icFilterMessageAttachments => _getImagePath('ic_filter_message_attachments.svg'); String get icLogoTMailV2 => _getImagePath('logo_tmail_v2.png'); String get icSendToast => _getImagePath('ic_send_toast.svg'); + String get icClearTextSearch => _getImagePath('ic_clear_text_search.svg'); String _getImagePath(String imageName) { return AssetsPaths.images + imageName; diff --git a/lib/features/mailbox/presentation/mailbox_bindings.dart b/lib/features/mailbox/presentation/mailbox_bindings.dart index ab0ba1b47..223cddba9 100644 --- a/lib/features/mailbox/presentation/mailbox_bindings.dart +++ b/lib/features/mailbox/presentation/mailbox_bindings.dart @@ -1,4 +1,5 @@ import 'package:core/core.dart'; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:tmail_ui_user/features/caching/caching_manager.dart'; @@ -46,6 +47,8 @@ class MailboxBindings extends Bindings { Get.lazyPut(() => TreeBuilder()); Get.lazyPut(() => CreateNewMailboxInteractor(Get.find())); Get.lazyPut(() => Uuid()); + Get.lazyPut(() => TextEditingController()); + Get.lazyPut(() => FocusNode()); Get.put(MailboxController( Get.find(), Get.find(), @@ -56,6 +59,8 @@ class MailboxBindings extends Bindings { Get.find(), Get.find(), Get.find(), + Get.find(), + Get.find(), Get.find())); } } \ No newline at end of file diff --git a/lib/features/mailbox/presentation/mailbox_controller.dart b/lib/features/mailbox/presentation/mailbox_controller.dart index 66ccbc7e3..ba1d37877 100644 --- a/lib/features/mailbox/presentation/mailbox_controller.dart +++ b/lib/features/mailbox/presentation/mailbox_controller.dart @@ -27,8 +27,11 @@ import 'package:tmail_ui_user/features/mailbox_creator/presentation/model/mailbo import 'package:tmail_ui_user/features/mailbox_creator/presentation/model/new_mailbox_arguments.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_email_drafts_state.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mailbox_dashboard_controller.dart'; +import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart'; import 'package:tmail_ui_user/features/thread/domain/state/mark_as_multiple_email_read_state.dart'; import 'package:tmail_ui_user/features/thread/domain/state/move_multiple_email_to_mailbox_state.dart'; +import 'package:tmail_ui_user/features/thread/presentation/model/search_state.dart'; +import 'package:tmail_ui_user/features/thread/presentation/model/search_status.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/routes/app_routes.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; @@ -47,12 +50,17 @@ class MailboxController extends BaseController { final AppToast _appToast; final ImagePaths _imagePaths; final ResponsiveUtils responsiveUtils; + final TextEditingController searchInputController; + final FocusNode searchFocus; final CachingManager _cachingManager; final defaultMailboxList = [].obs; final folderMailboxNodeList = [].obs; + final searchState = SearchState.initial().obs; + final searchQuery = SearchQuery.initial().obs; List allMailboxes = []; + List listMailboxSearched = []; jmapState.State? currentMailboxState; @@ -66,6 +74,8 @@ class MailboxController extends BaseController { this._appToast, this._imagePaths, this.responsiveUtils, + this.searchInputController, + this.searchFocus, this._cachingManager, ); @@ -101,6 +111,7 @@ class MailboxController extends BaseController { @override void onClose() { mailboxDashBoardController.accountId.close(); + searchFocus.dispose(); super.onClose(); } @@ -142,9 +153,11 @@ class MailboxController extends BaseController { } void refreshAllMailbox() { - final accountId = mailboxDashBoardController.accountId.value; - if (accountId != null) { - consumeState(_getAllMailboxInteractor.execute(accountId)); + if (!isSearchActive()) { + final accountId = mailboxDashBoardController.accountId.value; + if (accountId != null) { + consumeState(_getAllMailboxInteractor.execute(accountId)); + } } } @@ -287,7 +300,28 @@ class MailboxController extends BaseController { } } - void closeMailboxScreen() { + bool isSearchActive() => searchState.value.searchStatus == SearchStatus.ACTIVE; + + void enableSearch() => searchState.value = searchState.value.enableSearchState(); + + void disableSearch(BuildContext context) { + listMailboxSearched.clear(); + searchState.value = searchState.value.disableSearchState(); + searchQuery.value = SearchQuery.initial(); + searchInputController.clear(); + FocusScope.of(context).unfocus(); + } + + void clearSearchText() { + searchQuery.value = SearchQuery.initial(); + searchFocus.requestFocus(); + } + + void searchMailbox(String value) { + searchQuery.value = SearchQuery(value); + } + + void closeMailboxScreen(BuildContext context) { mailboxDashBoardController.closeDrawer(); } diff --git a/lib/features/mailbox/presentation/mailbox_view.dart b/lib/features/mailbox/presentation/mailbox_view.dart index 451900307..c6a254e2c 100644 --- a/lib/features/mailbox/presentation/mailbox_view.dart +++ b/lib/features/mailbox/presentation/mailbox_view.dart @@ -8,6 +8,7 @@ import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.d import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_tile_builder.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/widgets/user_information_widget_builder.dart'; +import 'package:tmail_ui_user/features/thread/presentation/widgets/search_app_bar_widget.dart'; import 'package:tmail_ui_user/features/thread/presentation/widgets/search_bar_thread_view_widget.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; @@ -33,12 +34,15 @@ class MailboxView extends GetWidget { body: Column( children: [ _buildHeaderMailbox(context), + Obx(() => controller.isSearchActive() ? _buildInputSearchFormWidget(context) : SizedBox.shrink()), Expanded(child: Container( - color: AppColor.colorBgMailbox, + color: controller.isSearchActive() ? Colors.white : AppColor.colorBgMailbox, child: RefreshIndicator( color: AppColor.primaryColor, onRefresh: () async => controller.refreshAllMailbox(), - child: _buildListMailbox(context)), + child: Obx(() => controller.isSearchActive() + ? _buildListMailboxSearched(context, controller.listMailboxSearched) + : _buildListMailbox(context))), )) ] ), @@ -75,7 +79,7 @@ class MailboxView extends GetWidget { padding: EdgeInsets.only(left: 16, right: 16), child: IconButton( key: Key('mailbox_close_button'), - onPressed: () => controller.closeMailboxScreen(), + onPressed: () => controller.closeMailboxScreen(context), icon: SvgPicture.asset(imagePaths.icCloseMailbox, width: 30, height: 30, fit: BoxFit.fill))); } @@ -99,12 +103,12 @@ class MailboxView extends GetWidget { .build())); } - Widget _buildSearchFormWidget(BuildContext context) { + Widget _buildSearchBarWidget(BuildContext context) { return Padding( padding: EdgeInsets.only(top: 12), child: (SearchBarThreadViewWidget(imagePaths) ..hintTextSearch(AppLocalizations.of(context).hint_search_mailboxes) - ..addOnOpenSearchViewAction(() {})) + ..addOnOpenSearchViewAction(() => controller.enableSearch())) .build()); } @@ -132,7 +136,7 @@ class MailboxView extends GetWidget { Padding( padding: EdgeInsets.only(top: 16), child: Divider(color: AppColor.colorDividerMailbox, height: 0.5, thickness: 0.2)), - _buildSearchFormWidget(context), + _buildSearchBarWidget(context), _buildLoadingView(), Obx(() => controller.defaultMailboxList.isNotEmpty ? Container( @@ -230,5 +234,66 @@ class MailboxView extends GetWidget { .toList(); } - // Widget _buildStorageWidget(BuildContext context) => StorageWidgetBuilder(context).build(); + Widget _buildInputSearchFormWidget(BuildContext context) { + return Padding( + padding: EdgeInsets.only(top: 16, bottom: 16), + child: Row( + children: [ + _buildBackSearchButton(context), + Expanded(child: (SearchAppBarWidget( + imagePaths, + controller.searchQuery.value, + controller.searchFocus, + controller.searchInputController, + hasBackButton: false, + hasSearchButton: true) + ..addPadding(EdgeInsets.zero) + ..setMargin(EdgeInsets.only(right: 16)) + ..addDecoration(BoxDecoration(borderRadius: BorderRadius.circular(12), color: AppColor.colorBgSearchBar)) + ..addIconClearText(SvgPicture.asset(imagePaths.icClearTextSearch, width: 20, height: 20, fit: BoxFit.fill)) + ..setHintText(AppLocalizations.of(context).hint_search_mailboxes) + ..addOnCancelSearchPressed(() => controller.disableSearch(context)) + ..addOnClearTextSearchAction(() => controller.clearSearchText()) + ..addOnTextChangeSearchAction((query) => controller.searchMailbox(query)) + ..addOnSearchTextAction((query) => controller.searchMailbox(query))) + .build()) + ] + ) + ); + } + + Widget _buildBackSearchButton(BuildContext context) { + return Padding( + padding: EdgeInsets.only(left: 5), + child: Material( + borderRadius: BorderRadius.circular(12), + color: Colors.transparent, + child: IconButton( + color: AppColor.colorTextButton, + icon: SvgPicture.asset( + imagePaths.icBack, + width: 20, + height: 20, + color: AppColor.colorTextButton, + fit: BoxFit.fill), + onPressed: () => controller.disableSearch(context) + ) + )); + } + + Widget _buildListMailboxSearched(BuildContext context, List listMailbox) { + return ListView.builder( + padding: EdgeInsets.all(8), + key: Key('list_mailbox_searched'), + itemCount: listMailbox.length, + shrinkWrap: true, + primary: false, + itemBuilder: (context, index) => + Obx(() => (MailboxTileBuilder( + imagePaths, + listMailbox[index], + isLastElement: index == listMailbox.length - 1) + ..onOpenMailboxAction((mailbox) => controller.selectMailbox(context, mailbox))) + .build())); + } } \ No newline at end of file diff --git a/lib/features/mailbox_creator/presentation/mailbox_creator_view.dart b/lib/features/mailbox_creator/presentation/mailbox_creator_view.dart index 9ccf5df59..8548fcc5e 100644 --- a/lib/features/mailbox_creator/presentation/mailbox_creator_view.dart +++ b/lib/features/mailbox_creator/presentation/mailbox_creator_view.dart @@ -114,6 +114,7 @@ class MailboxCreatorView extends GetWidget { ..autoFocus(true) ..textStyle(TextStyle(color: AppColor.colorNameEmail, fontSize: 16)) ..textDecoration((CreateMailboxNameInputDecorationBuilder() + ..setHintText(AppLocalizations.of(context).hint_input_create_new_mailbox) ..setErrorText(controller.getErrorInputNameString(context))) .build())) .build()) diff --git a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_bindings.dart b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_bindings.dart index cb8cb90fe..a65c6b0aa 100644 --- a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_bindings.dart +++ b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_bindings.dart @@ -1,4 +1,5 @@ import 'package:core/core.dart'; +import 'package:flutter/cupertino.dart'; import 'package:get/get.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:tmail_ui_user/features/base/base_bindings.dart'; diff --git a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_controller.dart index c7c3a7c49..461689c43 100644 --- a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_controller.dart @@ -28,6 +28,8 @@ class MailboxDashBoardController extends BaseController { final AppToast _appToast; final ImagePaths _imagePaths; final RemoveEmailDraftsInteractor _removeEmailDraftsInteractor; + final TextEditingController searchInputController; + final FocusNode searchFocus; final scaffoldKey = GlobalKey(); final selectedMailbox = Rxn(); @@ -37,8 +39,6 @@ class MailboxDashBoardController extends BaseController { final searchState = SearchState.initial().obs; final suggestionSearch = [].obs; - TextEditingController searchInputController = TextEditingController(); - FocusNode searchFocus = FocusNode(); SearchQuery? searchQuery; Session? sessionCurrent; Map mapDefaultMailboxId = Map(); @@ -48,6 +48,8 @@ class MailboxDashBoardController extends BaseController { this._getUserProfileInteractor, this._appToast, this._imagePaths, + this.searchInputController, + this.searchFocus, this._removeEmailDraftsInteractor, ); @@ -176,14 +178,14 @@ class MailboxDashBoardController extends BaseController { void disableSearch() { searchState.value = searchState.value.disableSearchState(); - searchQuery = SearchQuery(''); + searchQuery = SearchQuery.initial(); clearSuggestionSearch(); searchInputController.clear(); FocusManager.instance.primaryFocus?.unfocus(); } void clearSearchText() { - searchQuery = SearchQuery(''); + searchQuery = SearchQuery.initial(); clearSuggestionSearch(); searchFocus.requestFocus(); } @@ -200,11 +202,11 @@ class MailboxDashBoardController extends BaseController { } } - void searchEmail(String value) { + void searchEmail(BuildContext context, String value) { searchQuery = SearchQuery(value); - dispatchState(Right(SearchEmailNewQuery(searchQuery ?? SearchQuery('')))); + dispatchState(Right(SearchEmailNewQuery(searchQuery ?? SearchQuery.initial()))); clearSuggestionSearch(); - FocusManager.instance.primaryFocus?.unfocus(); + FocusScope.of(context).unfocus(); } void _saveEmailAsDraftsSuccess(SaveEmailAsDraftsSuccess success) { diff --git a/lib/features/thread/domain/model/search_query.dart b/lib/features/thread/domain/model/search_query.dart index 711e88a34..ec9f2bf2d 100644 --- a/lib/features/thread/domain/model/search_query.dart +++ b/lib/features/thread/domain/model/search_query.dart @@ -6,6 +6,10 @@ class SearchQuery with EquatableMixin { SearchQuery(this.value); + factory SearchQuery.initial() { + return SearchQuery(''); + } + @override List get props => [value]; } \ No newline at end of file diff --git a/lib/features/thread/presentation/thread_view.dart b/lib/features/thread/presentation/thread_view.dart index 81e065b4d..5f4053c94 100644 --- a/lib/features/thread/presentation/thread_view.dart +++ b/lib/features/thread/presentation/thread_view.dart @@ -128,17 +128,18 @@ class ThreadView extends GetWidget { Widget _buildSearchForm(BuildContext context) { return (SearchAppBarWidget( - context, imagePaths, controller.searchQuery, - controller.mailboxDashBoardController.suggestionSearch, controller.mailboxDashBoardController.searchFocus, - controller.mailboxDashBoardController.searchInputController) + controller.mailboxDashBoardController.searchInputController, + suggestionSearch: controller.mailboxDashBoardController.suggestionSearch,) ..addDecoration(BoxDecoration(color: Colors.white)) + ..setMargin(EdgeInsets.only(right: 10)) + ..setHintText(AppLocalizations.of(context).search_mail) ..addOnCancelSearchPressed(() => controller.disableSearch()) ..addOnClearTextSearchAction(() => controller.mailboxDashBoardController.clearSearchText()) - ..addOnSuggestionSearchQuery((query) => controller.mailboxDashBoardController.addSuggestionSearch(query)) - ..addOnSearchTextAction((query) => controller.mailboxDashBoardController.searchEmail(query))) + ..addOnTextChangeSearchAction((query) => controller.mailboxDashBoardController.addSuggestionSearch(query)) + ..addOnSearchTextAction((query) => controller.mailboxDashBoardController.searchEmail(context, query))) .build(); } @@ -409,7 +410,8 @@ class ThreadView extends GetWidget { context, imagePaths, controller.mailboxDashBoardController.suggestionSearch) - ..addOnSelectedSuggestion((suggestion) => controller.mailboxDashBoardController.searchEmail(suggestion))) + ..addOnSelectedSuggestion((suggestion) => + controller.mailboxDashBoardController.searchEmail(context, suggestion))) .build() : SizedBox.shrink() ); diff --git a/lib/features/thread/presentation/widgets/search_app_bar_widget.dart b/lib/features/thread/presentation/widgets/search_app_bar_widget.dart index 9d9745d47..e0a8b85ff 100644 --- a/lib/features/thread/presentation/widgets/search_app_bar_widget.dart +++ b/lib/features/thread/presentation/widgets/search_app_bar_widget.dart @@ -3,45 +3,51 @@ import 'package:core/core.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart'; -import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; typedef OnCancelSearchPressed = Function(); typedef OnClearTextSearchAction = Function(); -typedef OnSuggestionSearchQuery = Function(String); +typedef OnTextChangeSearchAction = Function(String); typedef OnSearchTextAction = Function(String); class SearchAppBarWidget { OnCancelSearchPressed? _onCancelSearchPressed; - OnSuggestionSearchQuery? _onSuggestionSearchQuery; + OnTextChangeSearchAction? _onTextChangeSearchAction; OnClearTextSearchAction? _onClearTextSearchAction; OnSearchTextAction? _onSearchTextAction; - final BuildContext _context; final ImagePaths _imagePaths; final SearchQuery? _searchQuery; final TextEditingController? _searchInputController; final FocusNode? _searchFocusNode; - final List? _suggestionSearch; + final List? suggestionSearch; + final bool hasBackButton; + final bool hasSearchButton; double? _heightSearchBar; Decoration? _decoration; EdgeInsets? _padding; + EdgeInsets? _margin; + String? _hintText; + Widget? _iconClearText; SearchAppBarWidget( - this._context, this._imagePaths, this._searchQuery, - this._suggestionSearch, this._searchFocusNode, this._searchInputController, + { + this.hasBackButton = true, + this.suggestionSearch, + this.hasSearchButton = false, + } ); void addOnCancelSearchPressed(OnCancelSearchPressed onCancelSearchPressed) { _onCancelSearchPressed = onCancelSearchPressed; } - void addOnSuggestionSearchQuery(OnSuggestionSearchQuery onSuggestionSearchQuery) { - _onSuggestionSearchQuery = onSuggestionSearchQuery; + void addOnTextChangeSearchAction(OnTextChangeSearchAction onTextChangeSearchAction) { + _onTextChangeSearchAction = onTextChangeSearchAction; } void addOnClearTextSearchAction(OnClearTextSearchAction onClearTextSearchAction) { @@ -64,6 +70,18 @@ class SearchAppBarWidget { _padding = padding; } + void setMargin(EdgeInsets margin) { + _margin = margin; + } + + void setHintText(String text) { + _hintText = text; + } + + void addIconClearText(Widget? icon) { + _iconClearText = icon; + } + Widget build() { return Container( key: Key('search_app_bar_widget'), @@ -71,15 +89,16 @@ class SearchAppBarWidget { height: _heightSearchBar, decoration: _decoration, padding: _padding ?? EdgeInsets.symmetric(vertical: 8), + margin: _margin, child: MediaQuery( data: MediaQueryData(padding: EdgeInsets.zero), child: Row( - crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ - _buildBackButton(), + if (hasBackButton) _buildBackButton(), + if (hasSearchButton) _buildSearchButton(), Expanded(child: _buildSearchInputForm()), - if (_suggestionSearch?.isNotEmpty == true || (_searchQuery != null && _searchQuery!.value.isNotEmpty)) + if (suggestionSearch?.isNotEmpty == true || (_searchQuery != null && _searchQuery!.value.isNotEmpty)) _buildClearTextSearchButton(), ] ) @@ -109,56 +128,47 @@ class SearchAppBarWidget { return Material( borderRadius: BorderRadius.circular(12), color: Colors.transparent, - child: Padding( - padding: EdgeInsets.only(right: 8), - child: IconButton( - color: AppColor.baseTextColor, - icon: SvgPicture.asset(_imagePaths.icComposerClose, color: AppColor.baseTextColor, fit: BoxFit.fill), + child: IconButton( + padding: EdgeInsets.zero, + icon: _iconClearText ?? SvgPicture.asset(_imagePaths.icComposerClose, fit: BoxFit.fill), onPressed: () { _searchInputController?.clear(); - if (_onClearTextSearchAction != null) { - _onClearTextSearchAction!(); - } + _onClearTextSearchAction?.call(); } - ))); + ) + ); } Widget _buildSearchInputForm() { return (TextFieldBuilder() ..key(Key('search_input_form')) ..textInputAction(TextInputAction.done) - ..onChange((value) { - if (_onSuggestionSearchQuery != null) { - _onSuggestionSearchQuery!(value); - }}) - ..onSubmitted((value) { - if (_onSearchTextAction != null) { - _onSearchTextAction!(value); - }}) - ..cursorColor(AppColor.baseTextColor) + ..onChange((value) => _onTextChangeSearchAction?.call(value)) + ..onSubmitted((value) => _onSearchTextAction?.call(value)) + ..cursorColor(AppColor.colorTextButton) ..autoFocus(true) ..addFocusNode(_searchFocusNode) - ..textStyle(TextStyle( - color: _searchQuery != null && _searchQuery!.value.isNotEmpty && _suggestionSearch?.isEmpty == true - ? AppColor.nameUserColor - : AppColor.baseTextColor, - fontSize: 15, - fontWeight: FontWeight.w500)) + ..textStyle(TextStyle(color: AppColor.colorNameEmail, fontSize: 17)) ..textDecoration(InputDecoration( border: InputBorder.none, focusedBorder: InputBorder.none, enabledBorder: InputBorder.none, - contentPadding: EdgeInsets.symmetric(vertical: 15), - hintText: AppLocalizations.of(_context).search_mail, - hintStyle: TextStyle( - color: AppColor.baseTextColor, - fontWeight: FontWeight.w500, - fontSize: 15.0), - labelStyle: TextStyle( - color: AppColor.baseTextColor, - fontWeight: FontWeight.w500, - fontSize: 15.0))) + contentPadding: EdgeInsets.symmetric(vertical: 7), + hintText: _hintText, + hintStyle: TextStyle(color: AppColor.colorHintSearchBar, fontSize: 17.0), + labelStyle: TextStyle(color: AppColor.colorHintSearchBar, fontSize: 17.0))) ..addController(_searchInputController)) .build(); } + + Widget _buildSearchButton() { + return Material( + borderRadius: BorderRadius.circular(12), + color: Colors.transparent, + child: IconButton( + icon: SvgPicture.asset(_imagePaths.icSearchBar, width: 18, height: 18, fit: BoxFit.fill), + onPressed: () => _onSearchTextAction?.call(_searchInputController?.text ?? '') + ) + ); + } } \ No newline at end of file diff --git a/lib/features/thread/presentation/widgets/search_bar_thread_view_widget.dart b/lib/features/thread/presentation/widgets/search_bar_thread_view_widget.dart index bdc0372e7..040b89d0b 100644 --- a/lib/features/thread/presentation/widgets/search_bar_thread_view_widget.dart +++ b/lib/features/thread/presentation/widgets/search_bar_thread_view_widget.dart @@ -73,7 +73,6 @@ class SearchBarThreadViewWidget { child: Padding( padding: EdgeInsets.only(left: 2), child: IconButton( - color: AppColor.appColor, icon: SvgPicture.asset(_imagePaths.icSearchBar, width: 18, height: 18, fit: BoxFit.fill), onPressed: () => _onOpenSearchViewAction?.call() ) diff --git a/lib/features/thread/presentation/widgets/suggestion_box_widget.dart b/lib/features/thread/presentation/widgets/suggestion_box_widget.dart index f9bd2237a..78a00eb25 100644 --- a/lib/features/thread/presentation/widgets/suggestion_box_widget.dart +++ b/lib/features/thread/presentation/widgets/suggestion_box_widget.dart @@ -75,7 +75,7 @@ class SuggestionBoxWidget { '"${_listData[index]}"', maxLines: 1, overflow: TextOverflow.ellipsis, - style: TextStyle(fontSize: 15, color: AppColor.nameUserColor, fontWeight: FontWeight.w500), + style: TextStyle(fontSize: 15, color: AppColor.colorNameEmail), )) ], ) diff --git a/lib/main/localizations/app_localizations.dart b/lib/main/localizations/app_localizations.dart index 5be1ec439..4be9449b4 100644 --- a/lib/main/localizations/app_localizations.dart +++ b/lib/main/localizations/app_localizations.dart @@ -663,4 +663,11 @@ class AppLocalizations { name: 'discard' ); } + + String get hint_input_create_new_mailbox { + return Intl.message( + 'Enter name of mailbox', + name: 'hint_input_create_new_mailbox' + ); + } } \ No newline at end of file