refactor code UI follow refactor code controller

This commit is contained in:
ManhNT
2022-06-24 17:14:47 +07:00
committed by Dat H. Pham
parent 2cbe5f163c
commit 203f93ae7f
6 changed files with 76 additions and 118 deletions
@@ -20,14 +20,16 @@ abstract class BaseMailboxDashBoardView extends GetWidget<MailboxDashBoardContro
Widget buildQuickSearchFilterButton(
BuildContext context, QuickSearchFilter filter) {
return Obx(() {
final isSelected = controller.searchController.checkQuickSearchFilterSelected(quickSearchFilter: filter);
return Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: filter.getBackgroundColor(controller.listFilterQuickSearch)),
color: filter.getBackgroundColor(isSelected)),
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
SvgPicture.asset(
filter.getIcon(imagePaths, controller.listFilterQuickSearch),
filter.getIcon(imagePaths, isSelected),
width: 16,
height: 16,
fit: BoxFit.fill),
@@ -36,7 +38,7 @@ abstract class BaseMailboxDashBoardView extends GetWidget<MailboxDashBoardContro
filter.getTitle(context, receiveTimeType: controller.emailReceiveTimeType.value),
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: filter.getTextStyle(controller.listFilterQuickSearch),
style: filter.getTextStyle(isSelected),
)
]));
});
@@ -72,23 +72,20 @@ class SearchController extends BaseController {
required QuickSearchFilter quickSearchFilter,
bool fromSuggestionBox = false,
}) {
final isSelected = checkQuickSearchFilterSelected(
quickSearchFilter,
fromSuggestionBox,
);
final quickSearchFilterSelected = checkQuickSearchFilterSelected(quickSearchFilter: quickSearchFilter, fromSuggestionBox: fromSuggestionBox);
switch (quickSearchFilter) {
case QuickSearchFilter.hasAttachment:
updateFilterEmail(hasAttachment: !isSelected);
updateFilterEmail(hasAttachment: !quickSearchFilterSelected);
return;
case QuickSearchFilter.last7Days:
final EmailReceiveTimeType? emailReceiveTimeType = isSelected
final EmailReceiveTimeType? emailReceiveTimeType = quickSearchFilterSelected
? EmailReceiveTimeType.allTime
: EmailReceiveTimeType.last7Days;
updateFilterEmail(emailReceiveTimeType: emailReceiveTimeType);
return;
case QuickSearchFilter.fromMe:
isSelected
quickSearchFilterSelected
? searchEmailFilter.value.from.remove(_userProfile.email)
: searchEmailFilter.value.from.add(_userProfile.email);
updateFilterEmail(from: searchEmailFilter.value.from);
@@ -179,13 +176,12 @@ class SearchController extends BaseController {
searchInputController.text = value;
}
bool checkQuickSearchFilterSelected(
QuickSearchFilter quickSearchFilter, bool fromSuggestBox) {
bool checkQuickSearchFilterSelected({required QuickSearchFilter quickSearchFilter, bool fromSuggestionBox = false}) {
switch (quickSearchFilter) {
case QuickSearchFilter.hasAttachment:
return searchEmailFilter.value.hasAttachment == true;
case QuickSearchFilter.last7Days:
if (fromSuggestBox) {
if (fromSuggestionBox) {
return true;
}
return searchEmailFilter.value.emailReceiveTimeType == EmailReceiveTimeType.last7Days;
@@ -150,21 +150,21 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
if (controller.isSelectionEnabled()) {
return _buildListButtonTopBarSelection(context);
} else {
return controller.isSearchActive()
return controller.searchController.isSearchActive()
? _buildListButtonTopBarSearchActive(context)
: _buildListButtonTopBar(context);
}
}),
const SizedBox(width: 16),
Obx(() => !controller.isSearchActive() ? const Spacer() : const SizedBox.shrink()),
Obx(() => controller.isSearchActive()
Obx(() => !controller.searchController.isSearchActive() ? const Spacer() : const SizedBox.shrink()),
Obx(() => controller.searchController.isSearchActive()
? Expanded(child: _buildSearchForm(context))
: (SearchBarView(imagePaths)
..hintTextSearch(AppLocalizations.of(context).search_emails)
..maxSizeWidth(240)
..addOnOpenSearchViewAction(() => controller.enableSearch()))
..addOnOpenSearchViewAction(() => controller.searchController.enableSearch()))
.build()),
Obx(() => !controller.isSearchActive() ? const SizedBox(width: 16) : const SizedBox.shrink()),
Obx(() => !controller.searchController.isSearchActive() ? const SizedBox(width: 16) : const SizedBox.shrink()),
Obx(() => (AvatarBuilder()
..text(controller.userProfile.value?.getAvatarText() ?? '')
..backgroundColor(Colors.white)
@@ -410,19 +410,19 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
height: 45,
child: QuickSearchInputForm<PresentationEmail, RecentSearch>(
textFieldConfiguration: QuickSearchTextFieldConfiguration(
controller: controller.searchInputController,
controller: controller.searchController.searchInputController,
autofocus: true,
focusNode: controller.searchFocus,
focusNode: controller.searchController.searchFocus,
textInputAction: TextInputAction.done,
onSubmitted: (keyword) {
if (keyword.trim().isNotEmpty) {
controller.saveRecentSearch(RecentSearch.now(keyword));
controller.searchController.saveRecentSearch(RecentSearch.now(keyword));
}
controller.searchEmail(context, keyword);
controller.searchEmail(context);
},
onChanged: (query) {
log('MailboxDashBoardView::_buildSearchForm(): onChanged: $query');
controller.onChangeTextSearch(query);
controller.searchController.onChangeTextSearch(query);
},
decoration: InputDecoration(
border: InputBorder.none,
@@ -444,11 +444,11 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
height: 16,
fit: BoxFit.fill),
onTap: () {
final keyword = controller.searchInputController.text;
final keyword = controller.searchController.searchInputController.text;
if (keyword.trim().isNotEmpty) {
controller.saveRecentSearch(RecentSearch.now(keyword));
controller.searchController.saveRecentSearch(RecentSearch.now(keyword));
}
controller.searchEmail(context, keyword);
controller.searchEmail(context);
}),
clearTextButton: buildIconWeb(
icon: SvgPicture.asset(
@@ -457,7 +457,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
height: 16,
fit: BoxFit.fill),
onTap: () {
controller.clearTextSearch();
controller.searchController.clearTextSearch();
})
),
suggestionsBoxDecoration: QuickSearchSuggestionsBoxDecoration(
@@ -482,8 +482,8 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
},
buttonActionCallback: (filterAction) {
if (filterAction is QuickSearchFilter) {
controller.selectQuickSearchFilter(
filterAction,
controller.searchController.selectQuickSearchFilter(
quickSearchFilter: filterAction,
fromSuggestionBox: true);
}
},
@@ -505,9 +505,9 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
return InkWell(
onTap: () {
if (keyword.trim().isNotEmpty) {
controller.saveRecentSearch(RecentSearch.now(keyword));
controller.searchController.saveRecentSearch(RecentSearch.now(keyword));
}
controller.searchEmail(context, keyword);
controller.searchEmail(context);
},
child: Padding(
padding: const EdgeInsets.symmetric(
@@ -537,17 +537,17 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
child: loadingWidget,
),
fetchRecentActionCallback: (pattern) async {
return controller.getAllRecentSearchAction(pattern);
return controller.searchController.getAllRecentSearchAction(pattern);
},
itemRecentBuilder: (context, recent) {
return RecentSearchItemTileWidget(recent);
},
onRecentSelected: (recent) {
controller.searchInputController.text = recent.value;
controller.searchEmail(context, recent.value);
controller.searchController.searchInputController.text = recent.value;
controller.searchEmail(context);
},
suggestionsCallback: (pattern) async {
return controller.quickSearchEmailsAction(pattern);
return controller.searchController.quickSearchEmails();
},
itemBuilder: (context, email) {
return EmailQuickSearchItemTileWidget(