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