create icon open advanced_search_filter_overlay for web
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import 'package:core/core.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_portal/flutter_portal.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:model/model.dart';
|
||||
@@ -12,6 +13,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/base_mailb
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/composer_overlay_state.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/advanced_search/advanced_search_filter_overlay.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/advanced_search/icon_open_advanced_search_widget.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/email_quick_search_item_tile_widget.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/recent_search_item_tile_widget.dart';
|
||||
@@ -49,7 +51,8 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
desktop: const SizedBox.shrink(),
|
||||
),
|
||||
drawerEnableOpenDragGesture: responsiveUtils.isMobile(context) || responsiveUtils.isTablet(context),
|
||||
body: Stack(children: [
|
||||
body: Portal(
|
||||
child: Stack(children: [
|
||||
ResponsiveWidget(
|
||||
responsiveUtils: responsiveUtils,
|
||||
desktop: Column(children: [
|
||||
@@ -109,6 +112,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
? const SizedBox.shrink()
|
||||
: Align(alignment: Alignment.bottomCenter, child: buildNetworkConnectionWidget(context))),
|
||||
]),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -412,11 +416,24 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
borderRadius: BorderRadius.all(Radius.circular(10)),
|
||||
color: AppColor.colorBgSearchBar),
|
||||
height: 45,
|
||||
child: PortalTarget(
|
||||
visible: controller.searchController.isAdvancedSearchViewOpen.isTrue,
|
||||
anchor: const Aligned(
|
||||
follower: Alignment.topLeft,
|
||||
target: Alignment.bottomLeft,
|
||||
widthFactor: 1,
|
||||
backup: Aligned(
|
||||
follower: Alignment.bottomLeft,
|
||||
target: Alignment.topLeft,
|
||||
widthFactor: 1,
|
||||
),
|
||||
),
|
||||
portalFollower:const AdvancedSearchFilterOverlay(),
|
||||
child: QuickSearchInputForm<PresentationEmail, RecentSearch>(
|
||||
textFieldConfiguration: QuickSearchTextFieldConfiguration(
|
||||
controller: searchController.searchInputController,
|
||||
controller: controller.searchController.searchInputController,
|
||||
autofocus: true,
|
||||
focusNode: searchController.searchFocus,
|
||||
focusNode: controller.searchController.searchFocus,
|
||||
textInputAction: TextInputAction.done,
|
||||
onSubmitted: (keyword) {
|
||||
if (keyword.trim().isNotEmpty) {
|
||||
@@ -426,7 +443,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
},
|
||||
onChanged: (query) {
|
||||
log('MailboxDashBoardView::_buildSearchForm(): onChanged: $query');
|
||||
searchController.onChangeTextSearch(query);
|
||||
controller.searchController.onChangeTextSearch(query);
|
||||
},
|
||||
decoration: InputDecoration(
|
||||
border: InputBorder.none,
|
||||
@@ -448,9 +465,9 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
height: 16,
|
||||
fit: BoxFit.fill),
|
||||
onTap: () {
|
||||
final keyword = searchController.searchInputController.text;
|
||||
final keyword = controller.searchController.searchInputController.text;
|
||||
if (keyword.trim().isNotEmpty) {
|
||||
searchController.saveRecentSearch(RecentSearch.now(keyword));
|
||||
controller.searchController.saveRecentSearch(RecentSearch.now(keyword));
|
||||
}
|
||||
controller.searchEmail(context, keyword);
|
||||
}),
|
||||
@@ -461,7 +478,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
height: 16,
|
||||
fit: BoxFit.fill),
|
||||
onTap: () {
|
||||
searchController.clearTextSearch();
|
||||
controller.searchController.clearTextSearch();
|
||||
}),
|
||||
rightButton: IconOpenAdvancedSearchWidget(context)
|
||||
),
|
||||
@@ -487,7 +504,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
},
|
||||
buttonActionCallback: (filterAction) {
|
||||
if (filterAction is QuickSearchFilter) {
|
||||
controller.selectQuickSearchFilter(
|
||||
controller.searchController.selectQuickSearchFilter(
|
||||
quickSearchFilter: filterAction,
|
||||
fromSuggestionBox: true,
|
||||
);
|
||||
@@ -511,7 +528,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
return InkWell(
|
||||
onTap: () {
|
||||
if (keyword.trim().isNotEmpty) {
|
||||
searchController.saveRecentSearch(RecentSearch.now(keyword));
|
||||
controller.searchController.saveRecentSearch(RecentSearch.now(keyword));
|
||||
}
|
||||
controller.searchEmail(context, keyword);
|
||||
},
|
||||
@@ -543,17 +560,17 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
child: loadingWidget,
|
||||
),
|
||||
fetchRecentActionCallback: (pattern) async {
|
||||
return searchController.getAllRecentSearchAction(pattern);
|
||||
return controller.searchController.getAllRecentSearchAction(pattern);
|
||||
},
|
||||
itemRecentBuilder: (context, recent) {
|
||||
return RecentSearchItemTileWidget(recent);
|
||||
},
|
||||
onRecentSelected: (recent) {
|
||||
searchController.searchInputController.text = recent.value;
|
||||
controller.searchController.searchInputController.text = recent.value;
|
||||
controller.searchEmail(context, recent.value);
|
||||
},
|
||||
suggestionsCallback: (pattern) async {
|
||||
return controller.quickSearchEmails();
|
||||
return controller.searchController.quickSearchEmails();
|
||||
},
|
||||
itemBuilder: (context, email) {
|
||||
return EmailQuickSearchItemTileWidget(
|
||||
@@ -563,6 +580,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
controller.dispatchAction(
|
||||
OpenEmailDetailedAction(context, presentationEmail));
|
||||
}),
|
||||
),
|
||||
)),
|
||||
const SizedBox(width: 16),
|
||||
]
|
||||
|
||||
+3
-2
@@ -14,7 +14,6 @@ class IconOpenAdvancedSearchWidget extends StatelessWidget {
|
||||
}) : super(key: key);
|
||||
|
||||
final _imagePaths = Get.find<ImagePaths>();
|
||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
||||
final controller = Get.find<SearchController>();
|
||||
final BuildContext _parentContext;
|
||||
|
||||
@@ -30,7 +29,9 @@ class IconOpenAdvancedSearchWidget extends StatelessWidget {
|
||||
: AppColor.colorFilterMessageDisabled,
|
||||
width: 16,
|
||||
height: 16),
|
||||
onTap: _responsiveUtils.isMobile(context) ? () {controller.showAdvancedFilterView(_parentContext);} : null),
|
||||
onTap: () {
|
||||
controller.showAdvancedFilterView(_parentContext);
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user