TF-460 Implement get identity for mobile

This commit is contained in:
dab246
2022-04-26 11:16:43 +07:00
committed by Dat H. Pham
parent f432dfb376
commit c9a579091a
20 changed files with 221 additions and 159 deletions
@@ -5,18 +5,25 @@ import 'package:flutter_svg/flutter_svg.dart';
@immutable
class PopupMenuItemWidget extends StatelessWidget {
final Function onCallBack;
final Function onTapCallback;
final String icon;
final String name;
final Color? iconColor;
final String? iconSelection;
PopupMenuItemWidget(this.icon, this.name, this.onCallBack, {this.iconSelection, this.iconColor});
PopupMenuItemWidget(
this.icon,
this.name,
this.onTapCallback,
{
this.iconSelection,
this.iconColor
});
@override
Widget build(BuildContext context) {
return InkWell(
onTap: () => onCallBack.call(),
onTap: () => onTapCallback.call(),
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 16),
child: SizedBox(
@@ -45,38 +45,37 @@ class SearchBarView {
}
Widget build() {
return InkWell(
onTap: () => _onOpenSearchViewAction?.call(),
borderRadius: BorderRadius.all(Radius.circular(10)),
child: Container(
key: Key('search_bar_widget'),
alignment: Alignment.topCenter,
height: _heightSearchBar ?? 40,
width: _maxSizeWidth ?? double.infinity,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: AppColor.colorBgSearchBar),
padding: _padding ?? EdgeInsets.zero,
margin: _margin ?? EdgeInsets.zero,
child: MediaQuery(
data: MediaQueryData(padding: EdgeInsets.zero),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
buildIconWeb(
splashRadius: 12,
icon: SvgPicture.asset(_imagePaths.icSearchBar, width: 16, height: 16, fit: BoxFit.fill),
onTap: () => _onOpenSearchViewAction?.call()),
Expanded(child:
Transform(transform: Matrix4.translationValues(-5, 0.0, 0.0),
child: Text(
_hintTextSearch ?? '',
maxLines: 1,
style: TextStyle(fontSize: kIsWeb ? 15 : 17, color: AppColor.colorHintSearchBar))))
]
)
)
),
return Container(
key: Key('search_bar_widget'),
alignment: Alignment.topCenter,
height: _heightSearchBar ?? 40,
width: _maxSizeWidth ?? double.infinity,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: AppColor.colorBgSearchBar),
padding: _padding ?? EdgeInsets.zero,
margin: _margin ?? EdgeInsets.zero,
child: InkWell(
onTap: () => _onOpenSearchViewAction?.call(),
borderRadius: BorderRadius.all(Radius.circular(10)),
child: MediaQuery(
data: MediaQueryData(padding: EdgeInsets.zero),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
buildIconWeb(
splashRadius: 12,
icon: SvgPicture.asset(_imagePaths.icSearchBar, width: 16, height: 16, fit: BoxFit.fill),
onTap: () => _onOpenSearchViewAction?.call()),
Expanded(child:
Transform(transform: Matrix4.translationValues(-5, 0.0, 0.0),
child: Text(
_hintTextSearch ?? '',
maxLines: 1,
style: TextStyle(fontSize: kIsWeb ? 15 : 17, color: AppColor.colorHintSearchBar))))
]
)
)),
);
}
}
@@ -17,7 +17,7 @@ mixin PopupContextMenuActionMixin {
void openPopupMenuAction(BuildContext context, RelativeRect? position, List<PopupMenuEntry> popupMenuItems) async {
await showMenu(
context: context,
position: position ?? RelativeRect.fromLTRB(16, 40, 16, 16),
position: position ?? const RelativeRect.fromLTRB(16, 40, 16, 16),
color: Colors.white,
elevation: 4,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)),
@@ -28,7 +28,7 @@ mixin PopupContextMenuActionMixin {
return CupertinoActionSheetAction(
child: Text(
AppLocalizations.of(context).cancel,
style: TextStyle(fontWeight: FontWeight.w500, fontSize: 20, color: AppColor.colorTextButton)),
style: const TextStyle(fontWeight: FontWeight.w500, fontSize: 20, color: AppColor.colorTextButton)),
onPressed: () => popBack(),
);
}
@@ -112,7 +112,7 @@ class MailboxController extends BaseMailboxController {
@override
void onReady() {
_openMailboxEventController.stream.throttleTime(Duration(milliseconds: 800)).listen((event) {
_openMailboxEventController.stream.throttleTime(const Duration(milliseconds: 800)).listen((event) {
_handleOpenMailbox(event.buildContext, event.presentationMailbox);
});
@@ -304,7 +304,7 @@ class MailboxController extends BaseMailboxController {
}
if (!_responsiveUtils.isDesktop(context) && !_responsiveUtils.isTabletLarge(context)) {
mailboxDashBoardController.closeDrawer();
mailboxDashBoardController.closeMailboxMenuDrawer();
} else {
mailboxDashBoardController.dispatchRoute(AppRoutes.THREAD);
}
@@ -679,7 +679,7 @@ class MailboxController extends BaseMailboxController {
void closeMailboxScreen(BuildContext context) {
_cancelSelectMailbox();
mailboxDashBoardController.closeDrawer();
mailboxDashBoardController.closeMailboxMenuDrawer();
}
@override
@@ -222,7 +222,7 @@ class MailboxView extends GetWidget<MailboxController> {
left: _responsiveUtils.isMobile(context) && _responsiveUtils.isLandscape(context) ? 0 : 16,
right: 16),
child: (UserInformationWidgetBuilder(_imagePaths, context, controller.mailboxDashBoardController.userProfile.value)
..addOnLogoutAction(() => controller.mailboxDashBoardController.logoutAction()))
..addOnLogoutAction(() => controller.mailboxDashBoardController.goToSettings()))
.build()),
const Divider(color: AppColor.colorDividerMailbox, height: 0.5, thickness: 0.2)
]);
@@ -191,7 +191,7 @@ class MailboxView extends GetWidget<MailboxController> {
Padding(
padding: const EdgeInsets.only(left: 16, bottom: 10),
child: (UserInformationWidgetBuilder(_imagePaths, context, controller.mailboxDashBoardController.userProfile.value)
..addOnLogoutAction(() => controller.mailboxDashBoardController.logoutAction()))
..addOnLogoutAction(() => controller.mailboxDashBoardController.goToSettings()))
.build()),
const Divider(color: AppColor.colorDividerMailbox, height: 0.5, thickness: 0.2)
]),
@@ -248,11 +248,11 @@ class MailboxDashBoardController extends ReloadableController {
selectedEmail.value = null;
}
void openDrawer() {
void openMailboxMenuDrawer() {
scaffoldKey.currentState?.openDrawer();
}
void closeDrawer() {
void closeMailboxMenuDrawer() {
scaffoldKey.currentState?.openEndDrawer();
}
@@ -424,6 +424,10 @@ class MailboxDashBoardController extends ReloadableController {
}
void goToSettings() {
if (currentContext != null && (_responsiveUtils.isMobile(currentContext!)
|| _responsiveUtils.isTablet(currentContext!))) {
closeMailboxMenuDrawer();
}
push(AppRoutes.MANAGE_ACCOUNT,
arguments: ManageAccountArguments(accountId.value, userProfile.value));
}
@@ -86,7 +86,7 @@ class MailboxDashBoardView extends GetWidget<MailboxDashBoardController> with Ne
Widget _buildLargeScreenView(BuildContext context) {
if (controller.isDrawerOpen && (_responsiveUtils.isDesktop(context) || _responsiveUtils.isTabletLarge(context))) {
WidgetsBinding.instance?.addPostFrameCallback((_) {
controller.closeDrawer();
controller.closeMailboxMenuDrawer();
});
}
@@ -32,7 +32,7 @@ class MailboxDashBoardView extends GetWidget<MailboxDashBoardController> with Ne
Widget build(BuildContext context) {
if (controller.isDrawerOpen && (_responsiveUtils.isDesktop(context) || _responsiveUtils.isTabletLarge(context))) {
WidgetsBinding.instance?.addPostFrameCallback((_) {
controller.closeDrawer();
controller.closeMailboxMenuDrawer();
});
}
@@ -401,7 +401,10 @@ class MailboxDashBoardView extends GetWidget<MailboxDashBoardController> with Ne
..setMargin(const EdgeInsets.only(right: 10))
..setHeightSearchBar(45)
..setHintText(AppLocalizations.of(context).search_mail)
..addOnCancelSearchPressed(() => controller.disableSearch())
..addOnCancelSearchPressed(() {
controller.disableSearch();
controller.dispatchAction(CancelSelectionAllEmailAction());
})
..addOnClearTextSearchAction(() => controller.clearSearchText())
..addOnTextChangeSearchAction((query) => controller.addSuggestionSearch(query))
..addOnSearchTextAction((query) => controller.searchEmail(context, query)))
@@ -98,4 +98,11 @@ class ManageAccountDashBoardController extends ReloadableController {
pushAndPop(AppRoutes.MANAGE_ACCOUNT,
arguments: ManageAccountArguments(accountId.value, userProfile.value));
}
void backToMailboxDashBoard() {
if (currentContext != null && !_responsiveUtils.isDesktop(currentContext!)) {
closeMenuDrawer();
}
popBack();
}
}
@@ -77,19 +77,27 @@ class ManageAccountDashBoardView extends GetWidget<ManageAccountDashBoardControl
],
))
]),
mobile: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
Padding(
padding: const EdgeInsets.only(top: 16, bottom: 16, left: 24, right: 32),
child: _buildAppbar(context)),
(SearchBarView(_imagePaths)
..hintTextSearch(AppLocalizations.of(context).search_emails)
..addMargin(const EdgeInsets.only(left: 32, right: 32))
..addOnOpenSearchViewAction(() => {}))
.build(),
Expanded(child: Padding(
padding: const EdgeInsets.only(left: 24, right: 24, bottom: 16),
child: _viewDisplayedOfAccountMenuItem()))
])
mobile: SafeArea(
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
Padding(
padding: !BuildUtils.isWeb && _responsiveUtils.isPortraitMobile(context)
? const EdgeInsets.only(bottom: 16, left: 4, right: 8)
: const EdgeInsets.only(top: 16, bottom: 16, left: 24, right: 32),
child: _buildAppbar(context)),
(SearchBarView(_imagePaths)
..hintTextSearch(AppLocalizations.of(context).search_emails)
..addMargin(!BuildUtils.isWeb && _responsiveUtils.isPortraitMobile(context)
? const EdgeInsets.only(left: 16, right: 16)
: const EdgeInsets.only(left: 32, right: 32))
..addOnOpenSearchViewAction(() => {}))
.build(),
Expanded(child: Padding(
padding: !BuildUtils.isWeb && _responsiveUtils.isPortraitMobile(context)
? const EdgeInsets.only(left: 8)
: const EdgeInsets.only(left: 24),
child: _viewDisplayedOfAccountMenuItem()))
])
)
),
]),
);
@@ -23,4 +23,8 @@ class ManageAccountMenuController extends BaseController {
void selectAccountMenuItem(AccountMenuItem newAccountMenuItem) {
dashBoardController.selectAccountMenuItem(newAccountMenuItem);
}
void backToMailboxDashBoard() {
dashBoardController.backToMailboxDashBoard();
}
}
@@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/menu/manage_account_menu_controller.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/menu/widgets/account_property_tile_builder.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/menu/widgets/account_menu_item_tile_builder.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
class ManageAccountMenuView extends GetWidget<ManageAccountMenuController> {
@@ -20,77 +20,94 @@ class ManageAccountMenuView extends GetWidget<ManageAccountMenuController> {
elevation: _responsiveUtils.isDesktop(context) ? 0 : 16.0,
child: Scaffold(
backgroundColor: Colors.white,
body: Column(
children: [
if (!_responsiveUtils.isDesktop(context))
Container(
color: Colors.white,
padding: const EdgeInsets.only(top: 16, bottom: 16, left: 16),
child: Row(children: [
(SloganBuilder(arrangedByHorizontal: true)
..setSloganText(AppLocalizations.of(context).app_name)
..setSloganTextAlign(TextAlign.center)
..setSloganTextStyle(const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold))
..setSizeLogo(24)
..setLogo(_imagePaths.icLogoTMail))
.build(),
Obx(() {
if (controller.dashBoardController.appInformation.value != null) {
return Padding(
padding: const EdgeInsets.only(top: 4),
child: Text(
'v.${controller.dashBoardController.appInformation.value!.version}',
textAlign: TextAlign.center,
style: const TextStyle(fontSize: 13, color: AppColor.colorContentEmail, fontWeight: FontWeight.w500),
),
);
} else {
return const SizedBox.shrink();
}
}),
])
),
if (!_responsiveUtils.isDesktop(context))
const Divider(color: AppColor.colorDividerMailbox, height: 0.5, thickness: 0.2),
Expanded(child: Container(
color: _responsiveUtils.isDesktop(context) ? AppColor.colorBgDesktop : Colors.white,
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
Padding(
padding: const EdgeInsets.only(left: 32, top: 34),
child: Text(
AppLocalizations.of(context).manage_account,
style: const TextStyle(color: Colors.black, fontWeight: FontWeight.bold, fontSize: 17))),
const SizedBox(height: 12),
ListView.builder(
padding: const EdgeInsets.only(left: 16, right: 8),
key: const Key('list_manage_account_property'),
shrinkWrap: true,
itemCount: controller.listAccountMenuItem.length,
itemBuilder: (context, index) => Obx(() => AccountMenuItemTileBuilder(
context,
_imagePaths,
_responsiveUtils,
controller.listAccountMenuItem[index],
controller.dashBoardController.accountMenuItemSelected.value,
onSelectAccountMenuItemAction: (newAccountMenuItem) =>
controller.selectAccountMenuItem(newAccountMenuItem)))),
const Padding(
padding: EdgeInsets.symmetric(vertical: 16),
child: Divider(color: AppColor.lineItemListColor, height: 0.5, thickness: 0.2)),
Padding(padding: const EdgeInsets.only(left: 32),
child: InkWell(
onTap: () => controller.dashBoardController.logoutAction(),
child: Row(children: [
SvgPicture.asset(_imagePaths.icLogout, fit: BoxFit.fill),
const SizedBox(width: 12),
Expanded(child: Text(AppLocalizations.of(context).sign_out,
style: const TextStyle(fontWeight: FontWeight.normal, fontSize: 15, color: Colors.black)))
])
)
),
]),
)),
]
body: SafeArea(right: false, bottom: false,
child: Column(
children: [
if (!_responsiveUtils.isDesktop(context))
Container(
color: Colors.white,
padding: const EdgeInsets.only(top: 16, bottom: 16, left: 16),
child: Row(children: [
(SloganBuilder(arrangedByHorizontal: true)
..setSloganText(AppLocalizations.of(context).app_name)
..setSloganTextAlign(TextAlign.center)
..setSloganTextStyle(const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold))
..setSizeLogo(24)
..setLogo(_imagePaths.icLogoTMail))
.build(),
Obx(() {
if (controller.dashBoardController.appInformation.value != null) {
return Padding(
padding: const EdgeInsets.only(top: 4),
child: Text(
'v.${controller.dashBoardController.appInformation.value!.version}',
textAlign: TextAlign.center,
style: const TextStyle(fontSize: 13, color: AppColor.colorContentEmail, fontWeight: FontWeight.w500),
),
);
} else {
return const SizedBox.shrink();
}
}),
])
),
if (!_responsiveUtils.isDesktop(context))
const Divider(color: AppColor.colorDividerMailbox, height: 0.5, thickness: 0.2),
Expanded(child: Container(
color: _responsiveUtils.isDesktop(context) ? AppColor.colorBgDesktop : Colors.white,
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
Padding(
padding: const EdgeInsets.only(left: 20, top: 24),
child: (ButtonBuilder(_imagePaths.icBack)
..key(const Key('button_back'))
..decoration(BoxDecoration(borderRadius: BorderRadius.circular(10), color: AppColor.colorBgMailboxSelected))
..paddingIcon(const EdgeInsets.only(right: 8))
..iconColor(AppColor.colorTextButton)
..maxWidth(85)
..size(16)
..radiusSplash(10)
..padding(const EdgeInsets.symmetric(vertical: 10))
..textStyle(const TextStyle(fontSize: 15, color: AppColor.colorTextButton, fontWeight: FontWeight.normal))
..onPressActionClick(() => controller.backToMailboxDashBoard())
..text(AppLocalizations.of(context).back, isVertical: false))
.build()),
Padding(
padding: const EdgeInsets.only(left: 32, top: 20),
child: Text(
AppLocalizations.of(context).manage_account,
style: const TextStyle(color: Colors.black, fontWeight: FontWeight.bold, fontSize: 17))),
const SizedBox(height: 12),
ListView.builder(
padding: const EdgeInsets.only(left: 16, right: 8),
key: const Key('list_manage_account_property'),
shrinkWrap: true,
itemCount: controller.listAccountMenuItem.length,
itemBuilder: (context, index) => Obx(() => AccountMenuItemTileBuilder(
context,
_imagePaths,
_responsiveUtils,
controller.listAccountMenuItem[index],
controller.dashBoardController.accountMenuItemSelected.value,
onSelectAccountMenuItemAction: (newAccountMenuItem) =>
controller.selectAccountMenuItem(newAccountMenuItem)))),
const Padding(
padding: EdgeInsets.symmetric(vertical: 16),
child: Divider(color: AppColor.lineItemListColor, height: 0.5, thickness: 0.2)),
Padding(padding: const EdgeInsets.only(left: 32),
child: InkWell(
onTap: () => controller.dashBoardController.logoutAction(),
child: Row(children: [
SvgPicture.asset(_imagePaths.icLogout, fit: BoxFit.fill),
const SizedBox(width: 12),
Expanded(child: Text(AppLocalizations.of(context).sign_out,
style: const TextStyle(fontWeight: FontWeight.normal, fontSize: 15, color: Colors.black)))
])
)
),
]),
)),
]
)
),
)
);
@@ -33,7 +33,7 @@ class IdentitiesController extends BaseController {
if (success is GetAllIdentitiesSuccess) {
if (success.identities?.isNotEmpty == true) {
listIdentities.value = success.identities ?? [];
selectIdentity(listIdentities.first);
setIdentityDefault();
}
}
}
@@ -57,6 +57,15 @@ class IdentitiesController extends BaseController {
consumeState(_getAllIdentitiesInteractor.execute(accountId));
}
void setIdentityDefault() {
try {
final identityDefault = listIdentities.firstWhere((identity) => identity.mayDelete == false);
selectIdentity(identityDefault);
} catch (exception) {
selectIdentity(listIdentities.first);
}
}
void selectIdentity(Identity? newIdentity) {
identitySelected.value = newIdentity;
}
@@ -82,8 +82,8 @@ class IdentitiesView extends GetWidget<IdentitiesController> {
responsiveUtils: _responsiveUtils,
mobile: Scaffold(
body: Container(
margin: const EdgeInsets.symmetric(vertical: 16),
child: Column(
margin: const EdgeInsets.only(top: 16, bottom: 16, right: 24),
child: SingleChildScrollView(child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
buttonSelectIdentity,
@@ -91,7 +91,8 @@ class IdentitiesView extends GetWidget<IdentitiesController> {
_imagePaths,
controller.identitySelected.value)),
]
)),
))
),
floatingActionButton: _responsiveUtils.isMobile(context)
? FloatingActionButton(
key: const Key('add_new_identity'),
@@ -101,7 +102,7 @@ class IdentitiesView extends GetWidget<IdentitiesController> {
: null),
desktop: Container(
margin: const EdgeInsets.symmetric(vertical: 24, horizontal: 16),
child: Column(
child: SingleChildScrollView(child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
@@ -112,7 +113,7 @@ class IdentitiesView extends GetWidget<IdentitiesController> {
controller.identitySelected.value,
maxWidth: constraints.maxWidth / 2)),
]
)
))
)
));
}
@@ -837,6 +837,7 @@ class ThreadController extends BaseController {
void disableSearch() {
emailListSearch.clear();
mailboxDashBoardController.disableSearch();
cancelSelectEmail();
}
void _searchEmail() {
@@ -892,7 +893,7 @@ class ThreadController extends BaseController {
_isLoadingMore = false;
}
bool isSelectionEnabled() => mailboxDashBoardController.currentSelectMode.value == SelectMode.ACTIVE;
bool isSelectionEnabled() => mailboxDashBoardController.isSelectionEnabled();
void pressEmailSelectionAction(BuildContext context, EmailActionType actionType, List<PresentationEmail> selectionEmail) {
log('ThreadController::pressEmailSelectionAction(): selectionEmail: ${selectionEmail.length}');
@@ -1226,7 +1227,7 @@ class ThreadController extends BaseController {
}
void openMailboxLeftMenu() {
mailboxDashBoardController.openDrawer();
mailboxDashBoardController.openMailboxMenuDrawer();
}
void goToEmail(BuildContext context) {
@@ -75,7 +75,7 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin {
),
_buildSuggestionBox(context)
]))),
if (!kIsWeb) _buildListButtonSelectionForMobile(context),
_buildListButtonSelectionForMobile(context),
]
)
))
@@ -87,7 +87,10 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin {
Widget _buildListButtonSelectionForMobile(BuildContext context) {
return Obx(() {
if (controller.isSelectionEnabled() && !_responsiveUtils.isDesktop(context) && controller.listEmailSelected.isNotEmpty) {
if (controller.isSelectionEnabled()
&& controller.isSearchActive()
&& !_responsiveUtils.isDesktop(context)
&& controller.listEmailSelected.isNotEmpty) {
return Column(children: [
const Divider(color: AppColor.lineItemListColor, height: 1, thickness: 0.2),
Padding(
@@ -61,8 +61,8 @@ class EmailTileBuilder {
Widget _wrapContainerForTile(Widget tile) {
if (_responsiveUtils.isDesktop(_context)) {
return Container(
margin: _selectModeAll == SelectMode.ACTIVE ? EdgeInsets.only(top: 3, left: 8, right: 8) : EdgeInsets.zero,
padding: _selectModeAll == SelectMode.ACTIVE ? EdgeInsets.symmetric(vertical: 8) : EdgeInsets.zero,
margin: _selectModeAll == SelectMode.ACTIVE ? const EdgeInsets.only(top: 3, left: 8, right: 8) : EdgeInsets.zero,
padding: _selectModeAll == SelectMode.ACTIVE ? const EdgeInsets.symmetric(vertical: 8) : EdgeInsets.zero,
decoration: _selectModeAll == SelectMode.ACTIVE && _presentationEmail.selectMode == SelectMode.ACTIVE
? BoxDecoration(borderRadius: BorderRadius.circular(14), color: AppColor.colorItemEmailSelectedDesktop)
: null,
@@ -70,7 +70,7 @@ class EmailTileBuilder {
} else {
return Container(
margin: EdgeInsets.zero,
padding: EdgeInsets.only(bottom: 10, left: 16, right: 16),
padding: const EdgeInsets.only(bottom: 10, left: 16, right: 16),
decoration: BoxDecoration(borderRadius: BorderRadius.circular(0), color: Colors.white),
alignment: Alignment.center,
child: tile);
@@ -61,8 +61,8 @@ class EmailTileBuilder {
Widget _wrapContainerForTile(Widget tile) {
if (_responsiveUtils.isDesktop(_context)) {
return Container(
margin: _selectModeAll == SelectMode.ACTIVE ? EdgeInsets.only(top: 3, left: 8, right: 8) : EdgeInsets.zero,
padding: _selectModeAll == SelectMode.ACTIVE ? EdgeInsets.symmetric(vertical: 8) : EdgeInsets.zero,
margin: _selectModeAll == SelectMode.ACTIVE ? const EdgeInsets.only(top: 3, left: 8, right: 8) : EdgeInsets.zero,
padding: _selectModeAll == SelectMode.ACTIVE ? const EdgeInsets.symmetric(vertical: 8) : EdgeInsets.zero,
decoration: _selectModeAll == SelectMode.ACTIVE && _presentationEmail.selectMode == SelectMode.ACTIVE
? BoxDecoration(borderRadius: BorderRadius.circular(14), color: AppColor.colorItemEmailSelectedDesktop)
: null,
@@ -71,11 +71,11 @@ class EmailTileBuilder {
} else {
return Container(
margin: _selectModeAll == SelectMode.ACTIVE
? EdgeInsets.only(top: 3, left: 16, right: 16)
? const EdgeInsets.only(top: 3, left: 16, right: 16)
: EdgeInsets.zero,
padding: _selectModeAll == SelectMode.ACTIVE
? EdgeInsets.only(top: 8, bottom: 16, right: 8)
: EdgeInsets.only(bottom: 10, left: 16, right: 16),
? const EdgeInsets.only(top: 8, bottom: 16, right: 8)
: const EdgeInsets.only(bottom: 10, left: 16, right: 16),
decoration: _selectModeAll == SelectMode.ACTIVE && _presentationEmail.selectMode == SelectMode.ACTIVE
? BoxDecoration(borderRadius: BorderRadius.circular(14), color: AppColor.colorItemEmailSelectedDesktop)
: BoxDecoration(borderRadius: BorderRadius.circular(0), color: Colors.white),
@@ -198,14 +198,13 @@ class EmailTileBuilder {
onLongPress: () => _emailActionClick?.call(EmailActionType.selection, _presentationEmail),
onHover: (value) => setState(() => isHoverItem = value),
child: Row(crossAxisAlignment: CrossAxisAlignment.start, children: [
Padding(
padding: const EdgeInsets.only(top: 8),
child: GestureDetector(
onTap: () => _emailActionClick?.call(
_selectModeAll == SelectMode.ACTIVE ? EmailActionType.selection : EmailActionType.preview,
_presentationEmail),
child: _buildAvatarIcon())),
const SizedBox(width: 12),
GestureDetector(
onTap: () => _emailActionClick?.call(
_selectModeAll == SelectMode.ACTIVE ? EmailActionType.selection : EmailActionType.preview,
_presentationEmail),
child: Padding(
padding: const EdgeInsets.only(top: 8, right: 12),
child: _buildAvatarIcon())),
Expanded(child: Column(children: [
Transform(
transform: Matrix4.translationValues(0.0, isHoverItem ? -10.0 : 0.0, 0.0),
@@ -507,7 +506,7 @@ class EmailTileBuilder {
}) {
if (_selectModeAll == SelectMode.ACTIVE) {
return Padding(
padding: EdgeInsets.all(12),
padding: const EdgeInsets.all(12),
child: SvgPicture.asset(
_presentationEmail.selectMode == SelectMode.ACTIVE
? _imagePaths.icSelected