TF-933 Border color mailbox name on app bar thread view
This commit is contained in:
@@ -72,7 +72,7 @@ extension AppColor on Color {
|
|||||||
static const colorContentEmail = Color(0xFF6D7885);
|
static const colorContentEmail = Color(0xFF6D7885);
|
||||||
static const colorTextButton = Color(0xFF007AFF);
|
static const colorTextButton = Color(0xFF007AFF);
|
||||||
static const colorHintSearchBar = Color(0xFF818C99);
|
static const colorHintSearchBar = Color(0xFF818C99);
|
||||||
static const colorBgSearchBar = Color(0xFFEBEDF0);
|
static const colorBgSearchBar = Color(0x99EBEDF0);
|
||||||
static const colorShadowBgContentEmail = Color(0x14000000);
|
static const colorShadowBgContentEmail = Color(0x14000000);
|
||||||
static const colorDividerMailbox = Color(0xFF99A2AD);
|
static const colorDividerMailbox = Color(0xFF99A2AD);
|
||||||
static const colorCollapseMailbox = Color(0xFFB8C1CC);
|
static const colorCollapseMailbox = Color(0xFFB8C1CC);
|
||||||
|
|||||||
@@ -42,13 +42,13 @@ import 'package:tmail_ui_user/features/thread/domain/state/search_email_state.da
|
|||||||
import 'package:tmail_ui_user/features/thread/domain/state/search_more_email_state.dart';
|
import 'package:tmail_ui_user/features/thread/domain/state/search_more_email_state.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/usecases/search_email_interactor.dart';
|
import 'package:tmail_ui_user/features/thread/domain/usecases/search_email_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/usecases/search_more_email_interactor.dart';
|
import 'package:tmail_ui_user/features/thread/domain/usecases/search_more_email_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/presentation/mixin/base_email_action_controller.dart';
|
import 'package:tmail_ui_user/features/thread/presentation/mixin/email_action_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/presentation/model/delete_action_type.dart';
|
import 'package:tmail_ui_user/features/thread/presentation/model/delete_action_type.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
|
|
||||||
class SearchEmailController extends BaseController
|
class SearchEmailController extends BaseController
|
||||||
with BaseEmailActionController {
|
with EmailActionController {
|
||||||
|
|
||||||
final QuickSearchEmailInteractor _quickSearchEmailInteractor;
|
final QuickSearchEmailInteractor _quickSearchEmailInteractor;
|
||||||
final SaveRecentSearchInteractor _saveRecentSearchInteractor;
|
final SaveRecentSearchInteractor _saveRecentSearchInteractor;
|
||||||
|
|||||||
+1
-1
@@ -25,7 +25,7 @@ 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/app_routes.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
|
|
||||||
mixin BaseEmailActionController {
|
mixin EmailActionController {
|
||||||
|
|
||||||
final mailboxDashBoardController = Get.find<MailboxDashBoardController>();
|
final mailboxDashBoardController = Get.find<MailboxDashBoardController>();
|
||||||
final responsiveUtils = Get.find<ResponsiveUtils>();
|
final responsiveUtils = Get.find<ResponsiveUtils>();
|
||||||
@@ -373,33 +373,31 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
|
|||||||
|
|
||||||
Widget _buildAppBarNormal(BuildContext context) {
|
Widget _buildAppBarNormal(BuildContext context) {
|
||||||
return Obx(() {
|
return Obx(() {
|
||||||
return (AppBarThreadWidgetBuilder(
|
return AppBarThreadWidgetBuilder(
|
||||||
context,
|
controller.currentMailbox,
|
||||||
controller.currentMailbox,
|
controller.emailList.listEmailSelected,
|
||||||
controller.emailList.listEmailSelected,
|
controller.mailboxDashBoardController.currentSelectMode.value,
|
||||||
controller.mailboxDashBoardController.currentSelectMode.value,
|
controller.mailboxDashBoardController.filterMessageOption.value,
|
||||||
controller.mailboxDashBoardController.filterMessageOption.value)
|
onOpenMailboxMenuActionClick: controller.openMailboxLeftMenu,
|
||||||
..addOpenMailboxMenuActionClick(() => controller.openMailboxLeftMenu())
|
onCancelEditThread: controller.cancelSelectEmail,
|
||||||
..addOnEditThreadAction(() => controller.enableSelectionEmail())
|
onEditThreadAction: controller.enableSelectionEmail,
|
||||||
..addOnEmailSelectionAction((actionType, selectionEmail) =>
|
onEmailSelectionAction: (actionType, selectionEmail) =>
|
||||||
controller.pressEmailSelectionAction(context, actionType, selectionEmail))
|
controller.pressEmailSelectionAction(context, actionType, selectionEmail),
|
||||||
..addOnFilterEmailAction((filterMessageOption, position) {
|
onFilterEmailAction: (filterMessageOption, position) {
|
||||||
if (_responsiveUtils.isScreenWithShortestSide(context)) {
|
if (_responsiveUtils.isScreenWithShortestSide(context)) {
|
||||||
controller.openContextMenuAction(
|
controller.openContextMenuAction(
|
||||||
context,
|
context,
|
||||||
_filterMessagesCupertinoActionTile(context, filterMessageOption));
|
_filterMessagesCupertinoActionTile(context, filterMessageOption));
|
||||||
} else {
|
} else {
|
||||||
controller.openPopupMenuAction(
|
controller.openPopupMenuAction(
|
||||||
context,
|
context,
|
||||||
position,
|
position,
|
||||||
popupMenuFilterEmailActionTile(
|
popupMenuFilterEmailActionTile(
|
||||||
context,
|
context,
|
||||||
filterMessageOption,
|
filterMessageOption,
|
||||||
(option) => controller.filterMessagesAction(context, option)));
|
(option) => controller.filterMessagesAction(context, option)));
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
..addOnCancelEditThread(() => controller.cancelSelectEmail()))
|
|
||||||
.build();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
|
|
||||||
import 'package:core/core.dart';
|
import 'package:core/core.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.dart';
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
@@ -14,94 +13,81 @@ typedef OnOpenMailboxMenuActionClick = void Function();
|
|||||||
typedef OnCancelEditThread = void Function();
|
typedef OnCancelEditThread = void Function();
|
||||||
typedef OnEmailSelectionAction = void Function(EmailActionType actionType, List<PresentationEmail>);
|
typedef OnEmailSelectionAction = void Function(EmailActionType actionType, List<PresentationEmail>);
|
||||||
|
|
||||||
class AppBarThreadWidgetBuilder {
|
class AppBarThreadWidgetBuilder extends StatelessWidget {
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
final _imagePaths = Get.find<ImagePaths>();
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
||||||
|
|
||||||
OnFilterEmailAction? _onFilterEmailAction;
|
final OnFilterEmailAction? onFilterEmailAction;
|
||||||
OnOpenMailboxMenuActionClick? _onOpenMailboxMenuActionClick;
|
final OnOpenMailboxMenuActionClick? onOpenMailboxMenuActionClick;
|
||||||
OnEditThreadAction? _onEditThreadAction;
|
final OnEditThreadAction? onEditThreadAction;
|
||||||
OnCancelEditThread? _onCancelEditThread;
|
final OnCancelEditThread? onCancelEditThread;
|
||||||
OnEmailSelectionAction? _onEmailSelectionAction;
|
final OnEmailSelectionAction? onEmailSelectionAction;
|
||||||
|
|
||||||
final BuildContext _context;
|
|
||||||
final PresentationMailbox? _currentMailbox;
|
final PresentationMailbox? _currentMailbox;
|
||||||
final List<PresentationEmail> _listSelectionEmail;
|
final List<PresentationEmail> _listSelectionEmail;
|
||||||
final SelectMode _selectMode;
|
final SelectMode _selectMode;
|
||||||
final FilterMessageOption _filterMessageOption;
|
final FilterMessageOption _filterMessageOption;
|
||||||
|
|
||||||
AppBarThreadWidgetBuilder(
|
AppBarThreadWidgetBuilder(
|
||||||
this._context,
|
|
||||||
this._currentMailbox,
|
this._currentMailbox,
|
||||||
this._listSelectionEmail,
|
this._listSelectionEmail,
|
||||||
this._selectMode,
|
this._selectMode,
|
||||||
this._filterMessageOption,
|
this._filterMessageOption, {
|
||||||
);
|
Key? key,
|
||||||
|
this.onFilterEmailAction,
|
||||||
|
this.onOpenMailboxMenuActionClick,
|
||||||
|
this.onEditThreadAction,
|
||||||
|
this.onCancelEditThread,
|
||||||
|
this.onEmailSelectionAction,
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
void addOnFilterEmailAction(OnFilterEmailAction onFilterEmailAction) {
|
@override
|
||||||
_onFilterEmailAction = onFilterEmailAction;
|
Widget build(BuildContext context) {
|
||||||
|
return LayoutBuilder(builder: (context, constraints) {
|
||||||
|
return Container(
|
||||||
|
key: const Key('app_bar_thread_widget'),
|
||||||
|
alignment: Alignment.center,
|
||||||
|
height: 56,
|
||||||
|
color: Colors.white,
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||||
|
child: _buildAppBar(context, constraints)
|
||||||
|
);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void addOpenMailboxMenuActionClick(OnOpenMailboxMenuActionClick actionClick) {
|
Widget _buildAppBar(BuildContext context, BoxConstraints constraints) {
|
||||||
_onOpenMailboxMenuActionClick = actionClick;
|
|
||||||
}
|
|
||||||
|
|
||||||
void addOnEditThreadAction(OnEditThreadAction onEditThreadAction) {
|
|
||||||
_onEditThreadAction = onEditThreadAction;
|
|
||||||
}
|
|
||||||
|
|
||||||
void addOnCancelEditThread(OnCancelEditThread onCancelEditThread) {
|
|
||||||
_onCancelEditThread = onCancelEditThread;
|
|
||||||
}
|
|
||||||
|
|
||||||
void addOnEmailSelectionAction(OnEmailSelectionAction onEmailSelectionAction) {
|
|
||||||
_onEmailSelectionAction = onEmailSelectionAction;
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget build() {
|
|
||||||
return Container(
|
|
||||||
key: const Key('app_bar_thread_widget'),
|
|
||||||
alignment: Alignment.topCenter,
|
|
||||||
color: Colors.white,
|
|
||||||
margin: EdgeInsets.zero,
|
|
||||||
padding: EdgeInsets.symmetric(
|
|
||||||
vertical: _selectMode == SelectMode.INACTIVE ? 16 : 11,
|
|
||||||
horizontal: 8),
|
|
||||||
child: MediaQuery(
|
|
||||||
data: const MediaQueryData(padding: EdgeInsets.zero),
|
|
||||||
child: _buildAppBar()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget _buildAppBar() {
|
|
||||||
if (BuildUtils.isWeb) {
|
if (BuildUtils.isWeb) {
|
||||||
return _selectMode == SelectMode.INACTIVE
|
return _selectMode == SelectMode.INACTIVE
|
||||||
? _buildBodyAppBarForWeb()
|
? _buildBodyAppBarForWeb(context)
|
||||||
: _buildBodyAppBarForWebSelection();
|
: _buildBodyAppBarForWebSelection(context);
|
||||||
} else {
|
} else {
|
||||||
return _selectMode == SelectMode.INACTIVE
|
return _selectMode == SelectMode.INACTIVE
|
||||||
? _buildBodyAppBarForMobile()
|
? _buildBodyAppBarForMobile(context, constraints)
|
||||||
: _buildBodyAppBarForMobileSelection();
|
: _buildBodyAppBarForMobileSelection(context, constraints);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildBodyAppBarForWeb() {
|
Widget _buildBodyAppBarForWeb(BuildContext context) {
|
||||||
return Row(children: [
|
return Row(children: [
|
||||||
if (_responsiveUtils.hasLeftMenuDrawerActive(_context))
|
if (_responsiveUtils.hasLeftMenuDrawerActive(context))
|
||||||
_buildMenuButton(),
|
Padding(
|
||||||
if (_responsiveUtils.hasLeftMenuDrawerActive(_context))
|
padding: const EdgeInsets.only(right: 16),
|
||||||
const SizedBox(width: 16),
|
child: _buildMenuButton(),
|
||||||
|
),
|
||||||
Expanded(child: Text(
|
Expanded(child: Text(
|
||||||
_currentMailbox?.name?.name.capitalizeFirstEach ?? '',
|
_currentMailbox?.name?.name.capitalizeFirstEach ?? '',
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
overflow: TextOverflow.ellipsis,
|
overflow: CommonTextStyle.defaultTextOverFlow,
|
||||||
style: const TextStyle(fontSize: 21, color: Colors.black, fontWeight: FontWeight.bold))),
|
softWrap: CommonTextStyle.defaultSoftWrap,
|
||||||
_buildFilterButton(),
|
style: const TextStyle(
|
||||||
|
fontSize: 21,
|
||||||
|
color: Colors.black,
|
||||||
|
fontWeight: FontWeight.bold))),
|
||||||
|
_buildFilterButton(context),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildBodyAppBarForWebSelection() {
|
Widget _buildBodyAppBarForWebSelection(BuildContext context) {
|
||||||
return Row(children: [
|
return Row(children: [
|
||||||
buildIconWeb(
|
buildIconWeb(
|
||||||
icon: SvgPicture.asset(_imagePaths.icCloseComposer,
|
icon: SvgPicture.asset(_imagePaths.icCloseComposer,
|
||||||
@@ -111,10 +97,10 @@ class AppBarThreadWidgetBuilder {
|
|||||||
iconSize: 25,
|
iconSize: 25,
|
||||||
iconPadding: const EdgeInsets.all(5),
|
iconPadding: const EdgeInsets.all(5),
|
||||||
splashRadius: 15,
|
splashRadius: 15,
|
||||||
tooltip: AppLocalizations.of(_context).cancel,
|
tooltip: AppLocalizations.of(context).cancel,
|
||||||
onTap: () => _onCancelEditThread?.call()),
|
onTap: () => onCancelEditThread?.call()),
|
||||||
Expanded(child: Text(
|
Expanded(child: Text(
|
||||||
AppLocalizations.of(_context).count_email_selected(_listSelectionEmail.length),
|
AppLocalizations.of(context).count_email_selected(_listSelectionEmail.length),
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontSize: 17,
|
fontSize: 17,
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
@@ -130,9 +116,9 @@ class AppBarThreadWidgetBuilder {
|
|||||||
: _imagePaths.icUnread,
|
: _imagePaths.icUnread,
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
tooltip: _listSelectionEmail.isAllEmailRead
|
tooltip: _listSelectionEmail.isAllEmailRead
|
||||||
? AppLocalizations.of(_context).unread
|
? AppLocalizations.of(context).unread
|
||||||
: AppLocalizations.of(_context).read,
|
: AppLocalizations.of(context).read,
|
||||||
onTap: () => _onEmailSelectionAction?.call(
|
onTap: () => onEmailSelectionAction?.call(
|
||||||
_listSelectionEmail.isAllEmailRead
|
_listSelectionEmail.isAllEmailRead
|
||||||
? EmailActionType.markAsUnread
|
? EmailActionType.markAsUnread
|
||||||
: EmailActionType.markAsRead,
|
: EmailActionType.markAsRead,
|
||||||
@@ -149,9 +135,9 @@ class AppBarThreadWidgetBuilder {
|
|||||||
: _imagePaths.icStar,
|
: _imagePaths.icStar,
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
tooltip: _listSelectionEmail.isAllEmailStarred
|
tooltip: _listSelectionEmail.isAllEmailStarred
|
||||||
? AppLocalizations.of(_context).not_starred
|
? AppLocalizations.of(context).not_starred
|
||||||
: AppLocalizations.of(_context).starred,
|
: AppLocalizations.of(context).starred,
|
||||||
onTap: () => _onEmailSelectionAction?.call(
|
onTap: () => onEmailSelectionAction?.call(
|
||||||
_listSelectionEmail.isAllEmailStarred
|
_listSelectionEmail.isAllEmailStarred
|
||||||
? EmailActionType.unMarkAsStarred
|
? EmailActionType.unMarkAsStarred
|
||||||
: EmailActionType.markAsStarred,
|
: EmailActionType.markAsStarred,
|
||||||
@@ -165,8 +151,8 @@ class AppBarThreadWidgetBuilder {
|
|||||||
iconPadding: const EdgeInsets.all(5),
|
iconPadding: const EdgeInsets.all(5),
|
||||||
splashRadius: 15,
|
splashRadius: 15,
|
||||||
icon: SvgPicture.asset(_imagePaths.icMove, fit: BoxFit.fill),
|
icon: SvgPicture.asset(_imagePaths.icMove, fit: BoxFit.fill),
|
||||||
tooltip: AppLocalizations.of(_context).move,
|
tooltip: AppLocalizations.of(context).move,
|
||||||
onTap: () => _onEmailSelectionAction?.call(EmailActionType.moveToMailbox, _listSelectionEmail)),
|
onTap: () => onEmailSelectionAction?.call(EmailActionType.moveToMailbox, _listSelectionEmail)),
|
||||||
const SizedBox(width: 5),
|
const SizedBox(width: 5),
|
||||||
buildIconWeb(
|
buildIconWeb(
|
||||||
minSize: 25,
|
minSize: 25,
|
||||||
@@ -177,11 +163,11 @@ class AppBarThreadWidgetBuilder {
|
|||||||
? _imagePaths.icNotSpam : _imagePaths.icSpam,
|
? _imagePaths.icNotSpam : _imagePaths.icSpam,
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
tooltip: _currentMailbox?.isSpam == true
|
tooltip: _currentMailbox?.isSpam == true
|
||||||
? AppLocalizations.of(_context).un_spam
|
? AppLocalizations.of(context).un_spam
|
||||||
: AppLocalizations.of(_context).mark_as_spam,
|
: AppLocalizations.of(context).mark_as_spam,
|
||||||
onTap: () => _currentMailbox?.isSpam == true
|
onTap: () => _currentMailbox?.isSpam == true
|
||||||
? _onEmailSelectionAction?.call(EmailActionType.unSpam, _listSelectionEmail)
|
? onEmailSelectionAction?.call(EmailActionType.unSpam, _listSelectionEmail)
|
||||||
: _onEmailSelectionAction?.call(EmailActionType.moveToSpam, _listSelectionEmail)),
|
: onEmailSelectionAction?.call(EmailActionType.moveToSpam, _listSelectionEmail)),
|
||||||
const SizedBox(width: 5),
|
const SizedBox(width: 5),
|
||||||
],
|
],
|
||||||
buildIconWeb(
|
buildIconWeb(
|
||||||
@@ -196,11 +182,11 @@ class AppBarThreadWidgetBuilder {
|
|||||||
height: 20,
|
height: 20,
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
tooltip: canDeletePermanently
|
tooltip: canDeletePermanently
|
||||||
? AppLocalizations.of(_context).delete_permanently
|
? AppLocalizations.of(context).delete_permanently
|
||||||
: AppLocalizations.of(_context).move_to_trash,
|
: AppLocalizations.of(context).move_to_trash,
|
||||||
onTap: () => canDeletePermanently
|
onTap: () => canDeletePermanently
|
||||||
? _onEmailSelectionAction?.call(EmailActionType.deletePermanently, _listSelectionEmail)
|
? onEmailSelectionAction?.call(EmailActionType.deletePermanently, _listSelectionEmail)
|
||||||
: _onEmailSelectionAction?.call(EmailActionType.moveToTrash, _listSelectionEmail)),
|
: onEmailSelectionAction?.call(EmailActionType.moveToTrash, _listSelectionEmail)),
|
||||||
const SizedBox(width: 10),
|
const SizedBox(width: 10),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
@@ -209,123 +195,118 @@ class AppBarThreadWidgetBuilder {
|
|||||||
return _currentMailbox?.isTrash == true || _currentMailbox?.isDrafts == true;
|
return _currentMailbox?.isTrash == true || _currentMailbox?.isDrafts == true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildBodyAppBarForMobile() {
|
Widget _buildBodyAppBarForMobile(BuildContext context, BoxConstraints constraints) {
|
||||||
return Row(children: [
|
return Stack(
|
||||||
Expanded(child: Stack(
|
alignment: Alignment.center,
|
||||||
alignment: Alignment.center,
|
children: [
|
||||||
children: [
|
if (_filterMessageOption.getTitle(context).isNotEmpty)
|
||||||
Positioned(left: 0,child: _buildEditButton()),
|
Center(
|
||||||
Positioned(right: 0, child: _buildFilterButton()),
|
child: Column(
|
||||||
_filterMessageOption.getTitle(_context).isNotEmpty
|
mainAxisSize: MainAxisSize.min,
|
||||||
? Column(mainAxisAlignment: MainAxisAlignment.center, children: [
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
Padding(
|
children: [
|
||||||
padding: const EdgeInsets.only(left: 40, right: 40),
|
_buildContentCenterAppBar(context, constraints),
|
||||||
child: _buildContentCenterAppBar()),
|
Transform(
|
||||||
Transform(
|
transform: Matrix4.translationValues(
|
||||||
transform: Matrix4.translationValues(
|
_getXTranslationValues(context),
|
||||||
_getXTranslationValues(),
|
-8.0,
|
||||||
-8.0,
|
0.0),
|
||||||
0.0),
|
child: Text(
|
||||||
child: Text(
|
_filterMessageOption.getTitle(context),
|
||||||
_filterMessageOption.getTitle(_context),
|
style: const TextStyle(fontSize: 11, color: AppColor.colorContentEmail)))
|
||||||
style: const TextStyle(
|
]),
|
||||||
fontSize: 11,
|
|
||||||
color: AppColor.colorContentEmail)))
|
|
||||||
])
|
|
||||||
: Padding(
|
|
||||||
padding: const EdgeInsets.only(left: 60, right: 40),
|
|
||||||
child: _buildContentCenterAppBar()),
|
|
||||||
]
|
|
||||||
))
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget _buildBodyAppBarForMobileSelection() {
|
|
||||||
return Row(children: [
|
|
||||||
Expanded(child: Stack(
|
|
||||||
alignment: Alignment.center,
|
|
||||||
children: [
|
|
||||||
Positioned(left: 0, child: _buildBackButton()),
|
|
||||||
Positioned(left: 40, child: _buildCountItemSelected()),
|
|
||||||
Positioned(right: 0, child: _buildFilterButton()),
|
|
||||||
_filterMessageOption.getTitle(_context).isNotEmpty
|
|
||||||
? Column(mainAxisAlignment: MainAxisAlignment.center, children: [
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.only(left: 40, right: 40),
|
|
||||||
child: _buildContentCenterAppBar()),
|
|
||||||
Transform(
|
|
||||||
transform: Matrix4.translationValues(
|
|
||||||
_responsiveUtils.isDesktop(_context) ? -2.0 : -16.0,
|
|
||||||
-8.0,
|
|
||||||
0.0),
|
|
||||||
child: Text(
|
|
||||||
_filterMessageOption.getTitle(_context),
|
|
||||||
style: const TextStyle(
|
|
||||||
fontSize: 11,
|
|
||||||
color: AppColor.colorContentEmail)))
|
|
||||||
])
|
|
||||||
: Padding(
|
|
||||||
padding: const EdgeInsets.only(left: 60, right: 40),
|
|
||||||
child: _buildContentCenterAppBar()),
|
|
||||||
]
|
|
||||||
))
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget _buildEditButton() {
|
|
||||||
return Material(
|
|
||||||
borderRadius: BorderRadius.circular(12),
|
|
||||||
color: Colors.transparent,
|
|
||||||
child: Padding(
|
|
||||||
padding: const EdgeInsets.only(right: 16),
|
|
||||||
child: TextButton(
|
|
||||||
onPressed: () => _onEditThreadAction?.call(),
|
|
||||||
child: Text(
|
|
||||||
AppLocalizations.of(_context).edit,
|
|
||||||
style: const TextStyle(
|
|
||||||
fontSize: 17,
|
|
||||||
color: AppColor.colorTextButton),
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
|
else
|
||||||
|
Center(child: _buildContentCenterAppBar(context, constraints)),
|
||||||
|
Positioned(left: 0, child: _buildEditButton(context)),
|
||||||
|
Positioned(right: 0, child: _buildFilterButton(context))
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildBodyAppBarForMobileSelection(BuildContext context, BoxConstraints constraints) {
|
||||||
|
return Stack(
|
||||||
|
alignment: Alignment.center,
|
||||||
|
children: [
|
||||||
|
if (_filterMessageOption.getTitle(context).isNotEmpty)
|
||||||
|
Center(
|
||||||
|
child: Column(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
_buildContentCenterAppBar(context, constraints),
|
||||||
|
Transform(
|
||||||
|
transform: Matrix4.translationValues(
|
||||||
|
_responsiveUtils.isDesktop(context) ? -2.0 : -16.0,
|
||||||
|
-8.0,
|
||||||
|
0.0),
|
||||||
|
child: Text(
|
||||||
|
_filterMessageOption.getTitle(context),
|
||||||
|
style: const TextStyle(
|
||||||
|
fontSize: 11,
|
||||||
|
color: AppColor.colorContentEmail)))
|
||||||
|
]),
|
||||||
|
)
|
||||||
|
else
|
||||||
|
Center(child: _buildContentCenterAppBar(context, constraints)),
|
||||||
|
Positioned(left: 0, child: _buildCancelSelection()),
|
||||||
|
Positioned(right: 0, child: _buildFilterButton(context))
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildEditButton(BuildContext context) {
|
||||||
|
return Material(
|
||||||
|
borderRadius: BorderRadius.circular(15),
|
||||||
|
color: Colors.transparent,
|
||||||
|
child: TextButton(
|
||||||
|
onPressed: onEditThreadAction,
|
||||||
|
child: Text(
|
||||||
|
AppLocalizations.of(context).edit,
|
||||||
|
style: const TextStyle(
|
||||||
|
fontSize: 17,
|
||||||
|
color: AppColor.colorTextButton),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildFilterButton() {
|
Widget _buildFilterButton(BuildContext context) {
|
||||||
return Material(
|
return Material(
|
||||||
borderRadius: BorderRadius.circular(12),
|
borderRadius: BorderRadius.circular(15),
|
||||||
color: Colors.transparent,
|
color: Colors.transparent,
|
||||||
child: Padding(
|
child: InkWell(
|
||||||
padding: const EdgeInsets.only(left: 16, right: 16),
|
borderRadius: BorderRadius.circular(15),
|
||||||
child: InkWell(
|
onTap: () {
|
||||||
borderRadius: const BorderRadius.all(Radius.circular(12)),
|
if (onFilterEmailAction != null
|
||||||
onTap: () {
|
&& _responsiveUtils.isScreenWithShortestSide(context)) {
|
||||||
if (_onFilterEmailAction != null
|
onFilterEmailAction!.call(_filterMessageOption, null);
|
||||||
&& _responsiveUtils.isScreenWithShortestSide(_context)) {
|
}
|
||||||
_onFilterEmailAction!.call(_filterMessageOption, null);
|
},
|
||||||
}
|
child: Container(
|
||||||
},
|
color: Colors.transparent,
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 3),
|
||||||
child: SvgPicture.asset(
|
child: SvgPicture.asset(
|
||||||
_imagePaths.icFilter,
|
_imagePaths.icFilter,
|
||||||
color: _filterMessageOption == FilterMessageOption.all
|
color: _filterMessageOption == FilterMessageOption.all
|
||||||
? AppColor.colorFilterMessageDisabled
|
? AppColor.colorFilterMessageDisabled
|
||||||
: AppColor.colorFilterMessageEnabled,
|
: AppColor.colorFilterMessageEnabled,
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
onTapDown: (detail) {
|
),
|
||||||
if (_onFilterEmailAction != null
|
onTapDown: (detail) {
|
||||||
&& !_responsiveUtils.isScreenWithShortestSide(_context)) {
|
if (onFilterEmailAction != null
|
||||||
final screenSize = MediaQuery.of(_context).size;
|
&& !_responsiveUtils.isScreenWithShortestSide(context)) {
|
||||||
final offset = detail.globalPosition;
|
final screenSize = MediaQuery.of(context).size;
|
||||||
final position = RelativeRect.fromLTRB(
|
final offset = detail.globalPosition;
|
||||||
offset.dx,
|
final position = RelativeRect.fromLTRB(
|
||||||
offset.dy,
|
offset.dx,
|
||||||
screenSize.width - offset.dx,
|
offset.dy,
|
||||||
screenSize.height - offset.dy,
|
screenSize.width - offset.dx,
|
||||||
);
|
screenSize.height - offset.dy,
|
||||||
_onFilterEmailAction!.call(_filterMessageOption, position);
|
);
|
||||||
}
|
onFilterEmailAction!.call(_filterMessageOption, position);
|
||||||
})
|
}
|
||||||
)
|
})
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -336,17 +317,32 @@ class AppBarThreadWidgetBuilder {
|
|||||||
iconPadding: const EdgeInsets.all(3),
|
iconPadding: const EdgeInsets.all(3),
|
||||||
splashRadius: 15,
|
splashRadius: 15,
|
||||||
icon: SvgPicture.asset(_imagePaths.icMenuDrawer, fit: BoxFit.fill),
|
icon: SvgPicture.asset(_imagePaths.icMenuDrawer, fit: BoxFit.fill),
|
||||||
onTap:() => _onOpenMailboxMenuActionClick?.call());
|
onTap: onOpenMailboxMenuActionClick);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildBackButton() {
|
Widget _buildCancelSelection() {
|
||||||
return buildIconWeb(
|
return Material(
|
||||||
icon: SvgPicture.asset(_imagePaths.icBack,
|
borderRadius: BorderRadius.circular(15),
|
||||||
width: 20,
|
color: Colors.transparent,
|
||||||
height: 20,
|
child: InkWell(
|
||||||
color: AppColor.colorTextButton,
|
onTap: onCancelEditThread,
|
||||||
fit: BoxFit.fill),
|
borderRadius: BorderRadius.circular(15),
|
||||||
onTap:() => _onCancelEditThread?.call());
|
child: Container(
|
||||||
|
color: Colors.transparent,
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 5),
|
||||||
|
child: Row(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
SvgPicture.asset(_imagePaths.icBack,
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
color: AppColor.colorTextButton,
|
||||||
|
fit: BoxFit.fill),
|
||||||
|
const SizedBox(width: 8),
|
||||||
|
_buildCountItemSelected()
|
||||||
|
]),
|
||||||
|
)),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildCountItemSelected() {
|
Widget _buildCountItemSelected() {
|
||||||
@@ -355,84 +351,55 @@ class AppBarThreadWidgetBuilder {
|
|||||||
child: Text(
|
child: Text(
|
||||||
'${_listSelectionEmail.length}',
|
'${_listSelectionEmail.length}',
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
overflow: TextOverflow.ellipsis,
|
overflow: CommonTextStyle.defaultTextOverFlow,
|
||||||
|
softWrap: CommonTextStyle.defaultSoftWrap,
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontSize: 17,
|
fontSize: 17,
|
||||||
color: AppColor.colorTextButton)));
|
color: AppColor.colorTextButton)));
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildContentCenterAppBar() {
|
Widget _buildContentCenterAppBar(BuildContext context, BoxConstraints constraints) {
|
||||||
return Row(
|
if (_responsiveUtils.hasLeftMenuDrawerActive(context)) {
|
||||||
mainAxisSize: MainAxisSize.min,
|
return Material(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
color: Colors.transparent,
|
||||||
children: [
|
child: InkWell(
|
||||||
InkWell(
|
onTap: onOpenMailboxMenuActionClick,
|
||||||
onTap: () {
|
borderRadius: BorderRadius.circular(15),
|
||||||
if (_responsiveUtils.hasLeftMenuDrawerActive(_context)) {
|
child: Container(
|
||||||
_onOpenMailboxMenuActionClick?.call();
|
color: Colors.transparent,
|
||||||
}
|
height: 40,
|
||||||
},
|
padding: const EdgeInsets.symmetric(horizontal: 8),
|
||||||
child: Padding(
|
child: Row(
|
||||||
padding: (_responsiveUtils.hasLeftMenuDrawerActive(_context))
|
mainAxisSize: MainAxisSize.min,
|
||||||
? EdgeInsets.zero
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
: const EdgeInsets.only(bottom: 8, top: 8),
|
children: [
|
||||||
child: Container(
|
Container(
|
||||||
padding: EdgeInsets.zero,
|
constraints: BoxConstraints(maxWidth: constraints.maxWidth - 220),
|
||||||
margin: EdgeInsets.zero,
|
child: Text(
|
||||||
constraints: BoxConstraints(maxWidth: _getMaxWidthAppBarTitle()),
|
_currentMailbox?.name?.name.capitalizeFirstEach ?? '',
|
||||||
child: Text(
|
maxLines: 1,
|
||||||
_currentMailbox?.name?.name.capitalizeFirstEach ?? '',
|
softWrap: CommonTextStyle.defaultSoftWrap,
|
||||||
maxLines: 1,
|
overflow: CommonTextStyle.defaultTextOverFlow,
|
||||||
softWrap: CommonTextStyle.defaultSoftWrap,
|
style: const TextStyle(
|
||||||
overflow: CommonTextStyle.defaultTextOverFlow,
|
fontSize: 21,
|
||||||
style: const TextStyle(
|
color: AppColor.colorNameEmail,
|
||||||
fontSize: 21,
|
fontWeight: FontWeight.w700))),
|
||||||
color: AppColor.colorNameEmail,
|
SvgPicture.asset(_imagePaths.icChevronDown)
|
||||||
fontWeight: FontWeight.w700))
|
]
|
||||||
))),
|
),
|
||||||
if (_responsiveUtils.hasLeftMenuDrawerActive(_context))
|
),
|
||||||
Transform(
|
),
|
||||||
transform: Matrix4.translationValues(-8.0, 0.0, 0.0),
|
);
|
||||||
child: IconButton(
|
|
||||||
padding: EdgeInsets.zero,
|
|
||||||
color: AppColor.baseTextColor,
|
|
||||||
icon: SvgPicture.asset(_imagePaths.icChevronDown,
|
|
||||||
width: 20,
|
|
||||||
height: 16,
|
|
||||||
fit: BoxFit.fill),
|
|
||||||
onPressed: () => _onOpenMailboxMenuActionClick?.call()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
double _getMaxWidthAppBarTitle() {
|
|
||||||
var width = MediaQuery.of(_context).size.width;
|
|
||||||
var widthSiblingsWidget = 220;
|
|
||||||
if (_responsiveUtils.isTablet(_context) || _responsiveUtils.isLandscapeMobile(_context)) {
|
|
||||||
width = width * 0.7;
|
|
||||||
widthSiblingsWidget = 250;
|
|
||||||
} else if (_responsiveUtils.isTabletLarge(_context)) {
|
|
||||||
width = width * 0.6;
|
|
||||||
widthSiblingsWidget = 250;
|
|
||||||
} else if (_responsiveUtils.isDesktop(_context)) {
|
|
||||||
width = width * 0.25;
|
|
||||||
widthSiblingsWidget = 150;
|
|
||||||
}
|
|
||||||
final maxWidth = width > widthSiblingsWidget
|
|
||||||
? width - widthSiblingsWidget
|
|
||||||
: 0.0;
|
|
||||||
return maxWidth;
|
|
||||||
}
|
|
||||||
|
|
||||||
double _getXTranslationValues() {
|
|
||||||
if (BuildUtils.isWeb) {
|
|
||||||
return _responsiveUtils.isDesktop(_context) && BuildUtils.isWeb
|
|
||||||
? -2.0
|
|
||||||
: -16.0;
|
|
||||||
} else {
|
} else {
|
||||||
return _responsiveUtils.isTabletLarge(_context) ? 0.0 : -16.0;
|
return const SizedBox.shrink();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
double _getXTranslationValues(BuildContext context) {
|
||||||
|
if (BuildUtils.isWeb) {
|
||||||
|
return _responsiveUtils.isWebDesktop(context) ? -2.0 : -16.0;
|
||||||
|
} else {
|
||||||
|
return _responsiveUtils.isTabletLarge(context) ? 0.0 : -16.0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user