Merged with dev

This commit is contained in:
Abdullah Alassaf
2025-01-23 01:18:30 +03:00
173 changed files with 13556 additions and 564 deletions

View File

@ -3,6 +3,7 @@ import 'package:syncrow_web/pages/access_management/view/access_management.dart'
import 'package:syncrow_web/pages/auth/view/login_page.dart';
import 'package:syncrow_web/pages/device_managment/all_devices/view/device_managment_page.dart';
import 'package:syncrow_web/pages/home/view/home_page.dart';
import 'package:syncrow_web/pages/roles_and_permission/view/roles_and_permission_page.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/view/spaces_management_page.dart';
import 'package:syncrow_web/pages/visitor_password/view/visitor_password_dialog.dart';
import 'package:syncrow_web/utils/constants/routes_const.dart';
@ -32,7 +33,10 @@ class AppRoutes {
),
GoRoute(
path: RoutesConst.spacesManagementPage,
builder: (context, state) => const SpaceManagementPage()),
builder: (context, state) => const SpaceManagementPage()),
GoRoute(
path: RoutesConst.rolesAndPermissions,
builder: (context, state) => const RolesAndPermissionPage()),
];
}
}

View File

@ -0,0 +1,15 @@
import 'package:flutter/services.dart';
class AssetValidator {
static Future<bool> isValidAsset(String? assetPath) async {
if (assetPath == null || assetPath.isEmpty) {
return false;
}
try {
await rootBundle.load(assetPath);
return true;
} catch (_) {
return false;
}
}
}

View File

@ -5,8 +5,11 @@ abstract class ColorsManager {
static const Color switchOffColor = Color(0x7F8D99AE);
static const Color primaryColor = Color(0xFF0030CB); //023DFE
static const Color secondaryTextColor = Color(0xFF848484);
static Color primaryColorWithOpacity = const Color(0xFF023DFE).withOpacity(0.6);
static Color primaryColorWithOpacity =
const Color(0xFF023DFE).withOpacity(0.6);
static const Color whiteColors = Colors.white;
static Color whiteColorsWithOpacity = Colors.white.withOpacity(0.6);
static const Color secondaryColor = Color(0xFF023DFE);
static const Color onSecondaryColor = Color(0xFF023DFE);
static Color shadowBlackColor = Colors.black.withOpacity(0.2);
@ -54,5 +57,18 @@ abstract class ColorsManager {
static const Color warningRed = Color(0xFFFF6465);
static const Color borderColor = Color(0xFFE5E5E5);
static const Color CircleImageBackground = Color(0xFFF4F4F4);
static const Color softGray = Color(0xFFD5D5D5);
static const Color semiTransparentBlack = Color(0x19000000);
static const Color dataHeaderGrey = Color(0x33999999);
static const Color circleImageBackground = Color(0xFFF4F4F4);
static const Color circleRolesBackground = Color(0xFFF8F8F8);
static const Color activeGreen = Color(0xFF99FF93);
static const Color activeGreenText = Color(0xFF008905);
static const Color disabledPink = Color(0xFFFF9395);
static const Color disabledRedText = Color(0xFF890002);
static const Color invitedOrange = Color(0xFFFFE193);
static const Color invitedOrangeText = Color(0xFFFFBF00);
static const Color lightGrayBorderColor = Color(0xB2D5D5D5);
//background: #F8F8F8;
}
//background: #background: #5D5D5D;

View File

@ -0,0 +1,31 @@
enum Action {
update,
add,
delete,
}
extension ActionExtension on Action {
String get value {
switch (this) {
case Action.update:
return 'update';
case Action.add:
return 'add';
case Action.delete:
return 'delete';
}
}
static Action fromValue(String value) {
switch (value) {
case 'update':
return Action.update;
case 'add':
return Action.add;
case 'delete':
return Action.delete;
default:
throw ArgumentError('Invalid action: $value');
}
}
}

View File

@ -1,6 +1,7 @@
import 'package:flutter_dotenv/flutter_dotenv.dart';
abstract class ApiEndpoints {
static const String projectUuid = "0e62577c-06fa-41b9-8a92-99a21fbaf51c";
static String baseUrl = dotenv.env['BASE_URL'] ?? '';
static const String signUp = '/authentication/user/signup';
static const String login = '/authentication/user/login';
@ -72,7 +73,7 @@ abstract class ApiEndpoints {
static const String getIconScene = '/scene/icon';
static const String createScene = '/scene/tap-to-run';
static const String createAutomation = '/automation';
static const String getScenes =
static const String getUnitScenes =
'/projects/{projectId}/communities/{communityUuid}/spaces/{spaceUuid}/scenes';
static const String getAutomationDetails = '/automation/details/{automationId}';
static const String getScene = '/scene/tap-to-run/{sceneId}';
@ -82,4 +83,24 @@ abstract class ApiEndpoints {
static const String updateScene = '/scene/tap-to-run/{sceneId}';
static const String updateAutomation = '/automation/{automationId}';
//space model
static const String listSpaceModels = '/projects/{projectId}/space-models';
static const String createSpaceModel = '/projects/{projectId}/space-models';
static const String getSpaceModel = '/projects/{projectId}/space-models/{spaceModelUuid}';
static const String updateSpaceModel = '/projects/{projectId}/space-models/{spaceModelUuid}';
static const String roleTypes = '/role/types';
static const String permission = '/permission/{roleUuid}';
static const String inviteUser = '/invite-user';
static const String checkEmail = '/invite-user/check-email';
static const String getUsers = '/projects/${projectUuid}/user';
static const String getUserById = '/projects/${projectUuid}/user/{userUuid}';
static const String editUser = '/invite-user/{inviteUserUuid}';
static const String deleteUser = '/invite-user/{inviteUserUuid}';
static const String changeUserStatus = '/invite-user/{invitedUserUuid}/disable';
static const String terms = '/terms';
static const String policy = '/policy';
static const String userAgreements = '/user/agreements/web/{userUuid}';
}

View File

@ -13,10 +13,12 @@ class Assets {
static const String rightLine = "assets/images/right_line.png";
static const String google = "assets/images/google.svg";
static const String facebook = "assets/images/facebook.svg";
static const String invisiblePassword = "assets/images/Password_invisible.svg";
static const String invisiblePassword =
"assets/images/Password_invisible.svg";
static const String visiblePassword = "assets/images/password_visible.svg";
static const String accessIcon = "assets/images/access_icon.svg";
static const String spaseManagementIcon = "assets/images/spase_management_icon.svg";
static const String spaseManagementIcon =
"assets/images/spase_management_icon.svg";
static const String devicesIcon = "assets/images/devices_icon.svg";
static const String moveinIcon = "assets/images/movein_icon.svg";
static const String constructionIcon = "assets/images/construction_icon.svg";
@ -29,13 +31,15 @@ class Assets {
static const String emptyTable = "assets/images/empty_table.svg";
// General assets
static const String motionlessDetection = "assets/icons/motionless_detection.svg";
static const String motionlessDetection =
"assets/icons/motionless_detection.svg";
static const String acHeating = "assets/icons/ac_heating.svg";
static const String acPowerOff = "assets/icons/ac_power_off.svg";
static const String acFanMiddle = "assets/icons/ac_fan_middle.svg";
static const String switchAlarmSound = "assets/icons/switch_alarm_sound.svg";
static const String resetOff = "assets/icons/reset_off.svg";
static const String sensitivityOperationIcon = "assets/icons/sesitivity_operation_icon.svg";
static const String sensitivityOperationIcon =
"assets/icons/sesitivity_operation_icon.svg";
static const String motionDetection = "assets/icons/motion_detection.svg";
static const String freezing = "assets/icons/freezing.svg";
static const String indicator = "assets/icons/indicator.svg";
@ -56,7 +60,8 @@ class Assets {
static const String celsiusDegrees = "assets/icons/celsius_degrees.svg";
static const String masterState = "assets/icons/master_state.svg";
static const String acPower = "assets/icons/ac_power.svg";
static const String farDetectionFunction = "assets/icons/far_detection_function.svg";
static const String farDetectionFunction =
"assets/icons/far_detection_function.svg";
static const String nobodyTime = "assets/icons/nobody_time.svg";
// Automation functions
@ -64,33 +69,47 @@ class Assets {
"assets/icons/automation_functions/temp_password_unlock.svg";
static const String doorlockNormalOpen =
"assets/icons/automation_functions/doorlock_normal_open.svg";
static const String doorbell = "assets/icons/automation_functions/doorbell.svg";
static const String doorbell =
"assets/icons/automation_functions/doorbell.svg";
static const String remoteUnlockViaApp =
"assets/icons/automation_functions/remote_unlock_via_app.svg";
static const String doubleLock = "assets/icons/automation_functions/double_lock.svg";
static const String selfTestResult = "assets/icons/automation_functions/self_test_result.svg";
static const String lockAlarm = "assets/icons/automation_functions/lock_alarm.svg";
static const String presenceState = "assets/icons/automation_functions/presence_state.svg";
static const String currentTemp = "assets/icons/automation_functions/current_temp.svg";
static const String presence = "assets/icons/automation_functions/presence.svg";
static const String doubleLock =
"assets/icons/automation_functions/double_lock.svg";
static const String selfTestResult =
"assets/icons/automation_functions/self_test_result.svg";
static const String lockAlarm =
"assets/icons/automation_functions/lock_alarm.svg";
static const String presenceState =
"assets/icons/automation_functions/presence_state.svg";
static const String currentTemp =
"assets/icons/automation_functions/current_temp.svg";
static const String presence =
"assets/icons/automation_functions/presence.svg";
static const String residualElectricity =
"assets/icons/automation_functions/residual_electricity.svg";
static const String hijackAlarm = "assets/icons/automation_functions/hijack_alarm.svg";
static const String passwordUnlock = "assets/icons/automation_functions/password_unlock.svg";
static const String hijackAlarm =
"assets/icons/automation_functions/hijack_alarm.svg";
static const String passwordUnlock =
"assets/icons/automation_functions/password_unlock.svg";
static const String remoteUnlockRequest =
"assets/icons/automation_functions/remote_unlock_req.svg";
static const String cardUnlock = "assets/icons/automation_functions/card_unlock.svg";
static const String cardUnlock =
"assets/icons/automation_functions/card_unlock.svg";
static const String motion = "assets/icons/automation_functions/motion.svg";
static const String fingerprintUnlock =
"assets/icons/automation_functions/fingerprint_unlock.svg";
// Presence Sensor Assets
static const String sensorMotionIcon = "assets/icons/sensor_motion_ic.svg";
static const String sensorPresenceIcon = "assets/icons/sensor_presence_ic.svg";
static const String sensorPresenceIcon =
"assets/icons/sensor_presence_ic.svg";
static const String sensorVacantIcon = "assets/icons/sensor_vacant_ic.svg";
static const String illuminanceRecordIcon = "assets/icons/illuminance_record_ic.svg";
static const String presenceRecordIcon = "assets/icons/presence_record_ic.svg";
static const String helpDescriptionIcon = "assets/icons/help_description_ic.svg";
static const String illuminanceRecordIcon =
"assets/icons/illuminance_record_ic.svg";
static const String presenceRecordIcon =
"assets/icons/presence_record_ic.svg";
static const String helpDescriptionIcon =
"assets/icons/help_description_ic.svg";
static const String lightPulp = "assets/icons/light_pulb.svg";
static const String acDevice = "assets/icons/ac_device.svg";
@ -140,10 +159,12 @@ class Assets {
static const String unit = 'assets/icons/unit_icon.svg';
static const String villa = 'assets/icons/villa_icon.svg';
static const String iconEdit = 'assets/icons/icon_edit_icon.svg';
static const String textFieldSearch = 'assets/icons/textfield_search_icon.svg';
static const String textFieldSearch =
'assets/icons/textfield_search_icon.svg';
static const String roundedAddIcon = 'assets/icons/rounded_add_icon.svg';
static const String addIcon = 'assets/icons/add_icon.svg';
static const String smartThermostatIcon = 'assets/icons/smart_thermostat_icon.svg';
static const String smartThermostatIcon =
'assets/icons/smart_thermostat_icon.svg';
static const String smartLightIcon = 'assets/icons/smart_light_icon.svg';
static const String presenceSensor = 'assets/icons/presence_sensor.svg';
static const String Gang3SwitchIcon = 'assets/icons/3_Gang_switch_icon.svg';
@ -191,7 +212,8 @@ class Assets {
//assets/icons/water_leak_normal.svg
static const String waterLeakNormal = 'assets/icons/water_leak_normal.svg';
//assets/icons/water_leak_detected.svg
static const String waterLeakDetected = 'assets/icons/water_leak_detected.svg';
static const String waterLeakDetected =
'assets/icons/water_leak_detected.svg';
//assets/icons/automation_records.svg
static const String automationRecords = 'assets/icons/automation_records.svg';
@ -256,40 +278,64 @@ class Assets {
static const String delay = 'assets/icons/routine/delay.svg';
// Assets for functions_icons
static const String assetsSensitivityFunction = "assets/icons/functions_icons/sensitivity.svg";
static const String assetsSensitivityFunction =
"assets/icons/functions_icons/sensitivity.svg";
static const String assetsSensitivityOperationIcon =
"assets/icons/functions_icons/sesitivity_operation_icon.svg";
static const String assetsAcPower = "assets/icons/functions_icons/ac_power.svg";
static const String assetsAcPowerOFF = "assets/icons/functions_icons/ac_power_off.svg";
static const String assetsChildLock = "assets/icons/functions_icons/child_lock.svg";
static const String assetsFreezing = "assets/icons/functions_icons/freezing.svg";
static const String assetsFanSpeed = "assets/icons/functions_icons/fan_speed.svg";
static const String assetsAcCooling = "assets/icons/functions_icons/ac_cooling.svg";
static const String assetsAcHeating = "assets/icons/functions_icons/ac_heating.svg";
static const String assetsCelsiusDegrees = "assets/icons/functions_icons/celsius_degrees.svg";
static const String assetsTempreture = "assets/icons/functions_icons/tempreture.svg";
static const String assetsAcFanLow = "assets/icons/functions_icons/ac_fan_low.svg";
static const String assetsAcFanMiddle = "assets/icons/functions_icons/ac_fan_middle.svg";
static const String assetsAcFanHigh = "assets/icons/functions_icons/ac_fan_high.svg";
static const String assetsAcFanAuto = "assets/icons/functions_icons/ac_fan_auto.svg";
static const String assetsSceneChildLock = "assets/icons/functions_icons/scene_child_lock.svg";
static const String assetsAcPower =
"assets/icons/functions_icons/ac_power.svg";
static const String assetsAcPowerOFF =
"assets/icons/functions_icons/ac_power_off.svg";
static const String assetsChildLock =
"assets/icons/functions_icons/child_lock.svg";
static const String assetsFreezing =
"assets/icons/functions_icons/freezing.svg";
static const String assetsFanSpeed =
"assets/icons/functions_icons/fan_speed.svg";
static const String assetsAcCooling =
"assets/icons/functions_icons/ac_cooling.svg";
static const String assetsAcHeating =
"assets/icons/functions_icons/ac_heating.svg";
static const String assetsCelsiusDegrees =
"assets/icons/functions_icons/celsius_degrees.svg";
static const String assetsTempreture =
"assets/icons/functions_icons/tempreture.svg";
static const String assetsAcFanLow =
"assets/icons/functions_icons/ac_fan_low.svg";
static const String assetsAcFanMiddle =
"assets/icons/functions_icons/ac_fan_middle.svg";
static const String assetsAcFanHigh =
"assets/icons/functions_icons/ac_fan_high.svg";
static const String assetsAcFanAuto =
"assets/icons/functions_icons/ac_fan_auto.svg";
static const String assetsSceneChildLock =
"assets/icons/functions_icons/scene_child_lock.svg";
static const String assetsSceneChildUnlock =
"assets/icons/functions_icons/scene_child_unlock.svg";
static const String assetsSceneRefresh = "assets/icons/functions_icons/scene_refresh.svg";
static const String assetsLightCountdown = "assets/icons/functions_icons/light_countdown.svg";
static const String assetsFarDetection = "assets/icons/functions_icons/far_detection.svg";
static const String assetsSceneRefresh =
"assets/icons/functions_icons/scene_refresh.svg";
static const String assetsLightCountdown =
"assets/icons/functions_icons/light_countdown.svg";
static const String assetsFarDetection =
"assets/icons/functions_icons/far_detection.svg";
static const String assetsFarDetectionFunction =
"assets/icons/functions_icons/far_detection_function.svg";
static const String assetsIndicator = "assets/icons/functions_icons/indicator.svg";
static const String assetsMotionDetection = "assets/icons/functions_icons/motion_detection.svg";
static const String assetsIndicator =
"assets/icons/functions_icons/indicator.svg";
static const String assetsMotionDetection =
"assets/icons/functions_icons/motion_detection.svg";
static const String assetsMotionlessDetection =
"assets/icons/functions_icons/motionless_detection.svg";
static const String assetsNobodyTime = "assets/icons/functions_icons/nobody_time.svg";
static const String assetsFactoryReset = "assets/icons/functions_icons/factory_reset.svg";
static const String assetsMasterState = "assets/icons/functions_icons/master_state.svg";
static const String assetsNobodyTime =
"assets/icons/functions_icons/nobody_time.svg";
static const String assetsFactoryReset =
"assets/icons/functions_icons/factory_reset.svg";
static const String assetsMasterState =
"assets/icons/functions_icons/master_state.svg";
static const String assetsSwitchAlarmSound =
"assets/icons/functions_icons/switch_alarm_sound.svg";
static const String assetsResetOff = "assets/icons/functions_icons/reset_off.svg";
static const String assetsResetOff =
"assets/icons/functions_icons/reset_off.svg";
// Assets for automation_functions
static const String assetsCardUnlock =
@ -320,11 +366,37 @@ class Assets {
"assets/icons/functions_icons/automation_functions/self_test_result.svg";
static const String assetsPresence =
"assets/icons/functions_icons/automation_functions/presence.svg";
static const String assetsMotion = "assets/icons/functions_icons/automation_functions/motion.svg";
static const String assetsMotion =
"assets/icons/functions_icons/automation_functions/motion.svg";
static const String assetsCurrentTemp =
"assets/icons/functions_icons/automation_functions/current_temp.svg";
static const String assetsPresenceState =
"assets/icons/functions_icons/automation_functions/presence_state.svg";
//assets/icons/routine/automation.svg
static const String automation = 'assets/icons/routine/automation.svg';
static const String searchIconUser = 'assets/icons/search_icon_user.svg';
static const String searchIcoUser = 'assets/icons/search_icon_user.svg';
static const String activeUser = 'assets/icons/active_user.svg';
static const String deActiveUser = 'assets/icons/deactive_user.svg';
static const String invitedIcon = 'assets/icons/invited_icon.svg';
static const String rectangleCheckBox =
'assets/icons/rectangle_check_box.png';
static const String CheckBoxChecked = 'assets/icons/box_checked.png';
static const String emptyBox = 'assets/icons/empty_box.png';
static const String completeProcessIcon =
'assets/icons/compleate_process_icon.svg';
static const String currentProcessIcon =
'assets/icons/current_process_icon.svg';
static const String uncomplete_ProcessIcon =
'assets/icons/uncompleate_process_icon.svg';
static const String wrongProcessIcon = 'assets/icons/wrong_process_icon.svg';
static const String arrowForward = 'assets/icons/arrow_forward.svg';
static const String arrowDown = 'assets/icons/arrow_down.svg';
static const String userManagement = 'assets/icons/user_management.svg';
static const String filterTableIcon = 'assets/icons/filter_table_icon.svg';
static const String ZtoAIcon = 'assets/icons/ztoa_icon.png';
static const String AtoZIcon = 'assets/icons/atoz_icon.png';
static const String link = 'assets/icons/link.svg';
}
//user_management.svg

View File

@ -5,4 +5,5 @@ class RoutesConst {
static const String accessManagementPage = '/access-management-page';
static const String deviceManagementPage = '/device-management-page';
static const String spacesManagementPage = '/spaces_management-page';
static const String rolesAndPermissions = '/roles_and_Permissions-page';
}

View File

@ -2,51 +2,59 @@ import 'package:flutter/material.dart';
import 'color_manager.dart';
InputDecoration? textBoxDecoration({bool suffixIcon = false}) => InputDecoration(
InputDecoration? textBoxDecoration(
{bool suffixIcon = false, double radios = 8}) =>
InputDecoration(
focusColor: ColorsManager.grayColor,
suffixIcon: suffixIcon ? const Icon(Icons.search) : null,
hintText: 'Search',
filled: true, // Enable background filling
fillColor: const Color(0xffF5F6F7), // Set the background color
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(8), // Add border radius
borderRadius: BorderRadius.circular(radios), // Add border radius
borderSide: BorderSide.none, // Remove the underline
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(8), // Add border radius
borderRadius: BorderRadius.circular(radios), // Add border radius
borderSide: BorderSide.none, // Remove the underline
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(8), // Add border radius
borderRadius: BorderRadius.circular(radios), // Add border radius
borderSide: BorderSide.none, // Remove the underline
),
errorBorder: OutlineInputBorder(
borderSide: const BorderSide(color: Colors.red, width: 2),
borderRadius: BorderRadius.circular(8),
borderRadius: BorderRadius.circular(radios),
),
focusedErrorBorder: OutlineInputBorder(
borderSide: const BorderSide(color: Colors.red, width: 2),
borderRadius: BorderRadius.circular(8),
borderRadius: BorderRadius.circular(radios),
),
);
BoxDecoration containerDecoration = BoxDecoration(boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.3),
spreadRadius: 2,
blurRadius: 4,
offset: const Offset(0, 5), // changes position of shadow
),
], color: ColorsManager.boxColor, borderRadius: const BorderRadius.all(Radius.circular(10)));
BoxDecoration containerDecoration = BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.3),
spreadRadius: 2,
blurRadius: 4,
offset: const Offset(0, 5), // changes position of shadow
),
],
color: ColorsManager.boxColor,
borderRadius: const BorderRadius.all(Radius.circular(10)));
BoxDecoration containerWhiteDecoration = BoxDecoration(boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.3),
spreadRadius: 2,
blurRadius: 4,
offset: const Offset(0, 5), // changes position of shadow
),
], color: ColorsManager.whiteColors, borderRadius: const BorderRadius.all(Radius.circular(15)));
BoxDecoration containerWhiteDecoration = BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.3),
spreadRadius: 2,
blurRadius: 4,
offset: const Offset(0, 5), // changes position of shadow
),
],
color: ColorsManager.whiteColors,
borderRadius: const BorderRadius.all(Radius.circular(15)));
BoxDecoration subSectionContainerDecoration = BoxDecoration(
color: ColorsManager.whiteColors,
@ -59,3 +67,30 @@ BoxDecoration subSectionContainerDecoration = BoxDecoration(
),
],
);
InputDecoration inputTextFormDeco({hintText}) => InputDecoration(
hintText: hintText,
border: const OutlineInputBorder(
borderSide: BorderSide(
width: 1,
color: ColorsManager.textGray, // Border color for unfocused state
),
borderRadius: BorderRadius.all(Radius.circular(10)),
),
focusedBorder: const OutlineInputBorder(
borderSide: BorderSide(
width: 2,
color: ColorsManager.textGray, // Border color when focused
),
borderRadius: BorderRadius.all(Radius.circular(10)),
),
enabledBorder: const OutlineInputBorder(
borderSide: BorderSide(
width: 1,
color: ColorsManager
.textGray // Border color for enabled (but unfocused) state
),
borderRadius: BorderRadius.all(Radius.circular(10)),
),
);

View File

@ -53,7 +53,8 @@ class _UserDropdownMenuState extends State<UserDropdownMenu> {
}
Future<void> _showPopupMenu(BuildContext context) async {
final RenderBox overlay = Overlay.of(context).context.findRenderObject() as RenderBox;
final RenderBox overlay =
Overlay.of(context).context.findRenderObject() as RenderBox;
final RelativeRect position = RelativeRect.fromRect(
Rect.fromLTRB(
overlay.size.width,
@ -85,29 +86,31 @@ class _UserDropdownMenuState extends State<UserDropdownMenu> {
// ),
// ),
// ),
// PopupMenuItem(
// onTap: () {},
// child: ListTile(
// leading: SvgPicture.asset(Assets.settings),
// title: Text(
// "Settings",
// style: context.textTheme.bodyMedium,
// ),
// ),
// ),
PopupMenuItem(
onTap: () {
context.go(RoutesConst.rolesAndPermissions);
},
child: ListTile(
leading: SvgPicture.asset(Assets.userManagement),
title: Text(
"User Management",
style: context.textTheme.bodyMedium,
),
),
),
PopupMenuItem(
onTap: () {
showDialog(
context: context,
builder: (BuildContext context) {
final size = MediaQuery.of(context).size;
return AlertDialog(
alignment: Alignment.center,
content: SizedBox(
height: 200,
width: 400,
child: Padding(
padding: const EdgeInsets.only(top: 24, left: 24, right: 24),
padding:
const EdgeInsets.only(top: 24, left: 24, right: 24),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
@ -120,7 +123,10 @@ class _UserDropdownMenuState extends State<UserDropdownMenu> {
padding: const EdgeInsets.only(top: 16),
child: Text(
'Log out of your Syncrow account',
style: Theme.of(context).textTheme.bodyMedium!.copyWith(
style: Theme.of(context)
.textTheme
.bodyMedium!
.copyWith(
fontSize: 14,
fontWeight: FontWeight.w400,
color: Colors.black,
@ -151,11 +157,15 @@ class _UserDropdownMenuState extends State<UserDropdownMenu> {
),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Text(
'${widget.user?.firstName ?? ''} ${widget.user?.lastName}',
style: Theme.of(context).textTheme.titleMedium!.copyWith(
style: Theme.of(context)
.textTheme
.titleMedium!
.copyWith(
color: Colors.black,
fontWeight: FontWeight.bold,
fontSize: 20,
@ -163,7 +173,10 @@ class _UserDropdownMenuState extends State<UserDropdownMenu> {
),
Text(
' ${widget.user?.email}',
style: Theme.of(context).textTheme.bodySmall!.copyWith(
style: Theme.of(context)
.textTheme
.bodySmall!
.copyWith(
color: Colors.black,
),
),
@ -189,7 +202,10 @@ class _UserDropdownMenuState extends State<UserDropdownMenu> {
elevation: 1,
child: Text(
'Cancel',
style: Theme.of(context).textTheme.bodyMedium!.copyWith(
style: Theme.of(context)
.textTheme
.bodyMedium!
.copyWith(
fontSize: 12,
color: Colors.black,
),