TF-2877 Create notification setting view
This commit is contained in:
@@ -29,6 +29,7 @@ import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visib
|
|||||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/account_menu_item.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/model/account_menu_item.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/manage_account_arguments.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/model/manage_account_arguments.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/settings_page_level.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/model/settings_page_level.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/presentation/notification/bindings/notification_binding.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/profiles_bindings.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/profiles_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/vacation_controller_bindings.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/vacation_controller_bindings.dart';
|
||||||
import 'package:tmail_ui_user/main/error/capability_validator.dart';
|
import 'package:tmail_ui_user/main/error/capability_validator.dart';
|
||||||
@@ -189,6 +190,9 @@ class ManageAccountDashBoardController extends ReloadableController {
|
|||||||
case AccountMenuItem.mailboxVisibility:
|
case AccountMenuItem.mailboxVisibility:
|
||||||
MailboxVisibilityBindings().dependencies();
|
MailboxVisibilityBindings().dependencies();
|
||||||
break;
|
break;
|
||||||
|
case AccountMenuItem.notification:
|
||||||
|
NotificationBinding().dependencies();
|
||||||
|
break;
|
||||||
case AccountMenuItem.vacation:
|
case AccountMenuItem.vacation:
|
||||||
case AccountMenuItem.none:
|
case AccountMenuItem.none:
|
||||||
break;
|
break;
|
||||||
@@ -295,6 +299,7 @@ class ManageAccountDashBoardController extends ReloadableController {
|
|||||||
clearInputFormView();
|
clearInputFormView();
|
||||||
selectAccountMenuItem(AccountMenuItem.none);
|
selectAccountMenuItem(AccountMenuItem.none);
|
||||||
settingsPageLevel.value = SettingsPageLevel.universal;
|
settingsPageLevel.value = SettingsPageLevel.universal;
|
||||||
|
NotificationBinding().close();
|
||||||
_replaceBrowserHistory();
|
_replaceBrowserHistory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
|
import 'package:core/utils/platform_info.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/user_information_widget.dart';
|
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/user_information_widget.dart';
|
||||||
@@ -138,6 +139,20 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
|
|||||||
AccountMenuItem.languageAndRegion.getIcon(controller.imagePaths),
|
AccountMenuItem.languageAndRegion.getIcon(controller.imagePaths),
|
||||||
() => controller.selectSettings(AccountMenuItem.languageAndRegion)
|
() => controller.selectSettings(AccountMenuItem.languageAndRegion)
|
||||||
),
|
),
|
||||||
|
if (PlatformInfo.isMobile) ...[
|
||||||
|
Divider(
|
||||||
|
color: AppColor.colorDividerHorizontal,
|
||||||
|
height: 1,
|
||||||
|
indent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils),
|
||||||
|
endIndent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils)
|
||||||
|
),
|
||||||
|
SettingFirstLevelTileBuilder(
|
||||||
|
AppLocalizations.of(context).notification,
|
||||||
|
controller.imagePaths.icNotification,
|
||||||
|
() => controller.selectSettings(AccountMenuItem.notification),
|
||||||
|
subtitle: AppLocalizations.of(context).allowsTwakeMailToNotifyYouWhenANewMessageArrivesOnYourPhone,
|
||||||
|
)
|
||||||
|
],
|
||||||
Divider(
|
Divider(
|
||||||
color: AppColor.colorDividerHorizontal,
|
color: AppColor.colorDividerHorizontal,
|
||||||
height: 1,
|
height: 1,
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings
|
|||||||
import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings_utils.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings_utils.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/account_menu_item.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/model/account_menu_item.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/settings_page_level.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/model/settings_page_level.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/presentation/notification/notification_view.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/profiles_view.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/profiles_view.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/vacation_view.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/vacation_view.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/widgets/vacation_notification_message_widget.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/widgets/vacation_notification_message_widget.dart';
|
||||||
@@ -228,6 +229,8 @@ class SettingsView extends GetWidget<SettingsController> {
|
|||||||
}
|
}
|
||||||
case AccountMenuItem.mailboxVisibility:
|
case AccountMenuItem.mailboxVisibility:
|
||||||
return MailboxVisibilityView();
|
return MailboxVisibilityView();
|
||||||
|
case AccountMenuItem.notification:
|
||||||
|
return const NotificationView();
|
||||||
default:
|
default:
|
||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ enum AccountMenuItem {
|
|||||||
forward,
|
forward,
|
||||||
vacation,
|
vacation,
|
||||||
mailboxVisibility,
|
mailboxVisibility,
|
||||||
|
notification,
|
||||||
none;
|
none;
|
||||||
|
|
||||||
String getIcon(ImagePaths imagePaths) {
|
String getIcon(ImagePaths imagePaths) {
|
||||||
@@ -29,6 +30,8 @@ enum AccountMenuItem {
|
|||||||
return imagePaths.icVacation;
|
return imagePaths.icVacation;
|
||||||
case AccountMenuItem.mailboxVisibility:
|
case AccountMenuItem.mailboxVisibility:
|
||||||
return imagePaths.icMailboxVisibility;
|
return imagePaths.icMailboxVisibility;
|
||||||
|
case AccountMenuItem.notification:
|
||||||
|
return imagePaths.icNotification;
|
||||||
case AccountMenuItem.none:
|
case AccountMenuItem.none:
|
||||||
return imagePaths.icProfiles;
|
return imagePaths.icProfiles;
|
||||||
}
|
}
|
||||||
@@ -50,6 +53,8 @@ enum AccountMenuItem {
|
|||||||
return AppLocalizations.of(context).vacation;
|
return AppLocalizations.of(context).vacation;
|
||||||
case AccountMenuItem.mailboxVisibility:
|
case AccountMenuItem.mailboxVisibility:
|
||||||
return AppLocalizations.of(context).folderVisibility;
|
return AppLocalizations.of(context).folderVisibility;
|
||||||
|
case AccountMenuItem.notification:
|
||||||
|
return AppLocalizations.of(context).notification;
|
||||||
case AccountMenuItem.none:
|
case AccountMenuItem.none:
|
||||||
return AppLocalizations.of(context).profiles;
|
return AppLocalizations.of(context).profiles;
|
||||||
}
|
}
|
||||||
@@ -71,6 +76,8 @@ enum AccountMenuItem {
|
|||||||
return 'vacation';
|
return 'vacation';
|
||||||
case AccountMenuItem.mailboxVisibility:
|
case AccountMenuItem.mailboxVisibility:
|
||||||
return 'folder-visibility';
|
return 'folder-visibility';
|
||||||
|
case AccountMenuItem.notification:
|
||||||
|
return 'notification';
|
||||||
case AccountMenuItem.none:
|
case AccountMenuItem.none:
|
||||||
return 'profiles';
|
return 'profiles';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,69 @@
|
|||||||
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
|
import 'package:core/presentation/resources/image_paths.dart';
|
||||||
|
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||||
|
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/settings_utils.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/presentation/notification/notification_controller.dart';
|
||||||
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
|
|
||||||
|
class NotificationView extends GetWidget<NotificationController> {
|
||||||
|
const NotificationView({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Container(
|
||||||
|
color: SettingsUtils.getBackgroundColor(context, Get.find<ResponsiveUtils>()),
|
||||||
|
padding: SettingsUtils.getMarginViewForSettingDetails(context, Get.find<ResponsiveUtils>()),
|
||||||
|
child: Obx(() {
|
||||||
|
if (controller.notificationSettingEnabled.value == null) {
|
||||||
|
return const SizedBox.shrink();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
const SizedBox(height: 10),
|
||||||
|
Text(
|
||||||
|
AppLocalizations.of(context).showNotifications,
|
||||||
|
style: const TextStyle(
|
||||||
|
fontSize: 17,
|
||||||
|
height: 22 / 17,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
color: Colors.black)),
|
||||||
|
const SizedBox(height: 12),
|
||||||
|
Text(
|
||||||
|
AppLocalizations.of(context).allowsTwakeMailToNotifyYouWhenANewMessageArrivesOnYourPhone,
|
||||||
|
style: const TextStyle(
|
||||||
|
fontSize: 15,
|
||||||
|
height: 20 / 15,
|
||||||
|
color: AppColor.colorSettingExplanation),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
),
|
||||||
|
const SizedBox(width: 12),
|
||||||
|
InkWell(
|
||||||
|
onTap: controller.toggleNotificationSetting,
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(4),
|
||||||
|
child: SvgPicture.asset(
|
||||||
|
controller.notificationSettingEnabled.value!
|
||||||
|
? Get.find<ImagePaths>().icSwitchOn
|
||||||
|
: Get.find<ImagePaths>().icSwitchOff,
|
||||||
|
fit: BoxFit.contain,
|
||||||
|
width: 52,
|
||||||
|
height: 32),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user