diff --git a/assets/images/drawer/help.png b/assets/images/drawer/help.png new file mode 100644 index 0000000..89e95d1 Binary files /dev/null and b/assets/images/drawer/help.png differ diff --git a/assets/images/drawer/hierarchy.png b/assets/images/drawer/hierarchy.png new file mode 100644 index 0000000..5c194f6 Binary files /dev/null and b/assets/images/drawer/hierarchy.png differ diff --git a/assets/images/drawer/moe_logo.png b/assets/images/drawer/moe_logo.png new file mode 100644 index 0000000..da66b11 Binary files /dev/null and b/assets/images/drawer/moe_logo.png differ diff --git a/assets/images/drawer/moe_logo_full.png b/assets/images/drawer/moe_logo_full.png new file mode 100644 index 0000000..537de9c Binary files /dev/null and b/assets/images/drawer/moe_logo_full.png differ diff --git a/assets/images/drawer/my_team_icon.png b/assets/images/drawer/my_team_icon.png new file mode 100644 index 0000000..980c59c Binary files /dev/null and b/assets/images/drawer/my_team_icon.png differ diff --git a/assets/images/drawer/notices.png b/assets/images/drawer/notices.png new file mode 100644 index 0000000..15927f5 Binary files /dev/null and b/assets/images/drawer/notices.png differ diff --git a/assets/images/drawer/profile_icon.png b/assets/images/drawer/profile_icon.png new file mode 100644 index 0000000..596d11a Binary files /dev/null and b/assets/images/drawer/profile_icon.png differ diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index ee021ee..57996d1 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -307,6 +307,7 @@ "actionBy": "الرد بواسطة", "pending": "معلق", "pendingTransactions": "المعاملات المعلقه", + "notices": "إشعارات", "selectRequestType": "الرجاء اختيار نوع الطلب", "dateFrom": "من تاريخ", "dateTo": "الى تاريخ", @@ -538,5 +539,6 @@ "assistant": "للحصول على المساعدة ، يمكنك تقديم الطلب على نظام سعيد أو الاتصال بمركز الاتصال الموحد على 8310200", "employee_leaves_calender": "تقويم أوراق الموظفين", "view_your_leave_information": "عرض معلومات إجازتك", - "view_details": "عرض التفاصيل" + "view_details": "عرض التفاصيل", + "hierarchy": "تَسَلسُل" } \ No newline at end of file diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 7b01275..3ef5f7a 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -303,6 +303,7 @@ "topic": "Topic", "actionBy": "Action By", "pendingTransactions": "Pending Transactions", + "notices": "Notices", "selectRequestType": "Please select request type", "dateFrom": "Date From", "dateTo": "Date To", @@ -538,6 +539,7 @@ "assistant": "For assistance, you can submit the request on the Saeed system or call the unified call center on 8310200", "employee_leaves_calender": "Employee Leaves Calender", "view_your_leave_information": "View Your Leave Information", - "view_details": "View Details" + "view_details": "View Details", + "hierarchy": "Hierarchy" } \ No newline at end of file diff --git a/lib/classes/notifications.dart b/lib/classes/notifications.dart index 2d46642..b06bfbb 100644 --- a/lib/classes/notifications.dart +++ b/lib/classes/notifications.dart @@ -1,10 +1,151 @@ +// import 'dart:io'; +// +// import 'package:firebase_core/firebase_core.dart'; +// import 'package:firebase_messaging/firebase_messaging.dart'; +// import 'package:flutter/foundation.dart'; +// import 'package:flutter_local_notifications/flutter_local_notifications.dart'; +// import 'package:huawei_hmsavailability/huawei_hmsavailability.dart'; +// import 'package:huawei_push/huawei_push.dart' as huawei_push; +// import 'package:mohem_flutter_app/app_state/app_state.dart'; +// import 'package:mohem_flutter_app/classes/utils.dart'; +// import 'package:permission_handler/permission_handler.dart'; +// +// final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); +// +// class AppNotifications { +// static final AppNotifications _instance = AppNotifications._internal(); +// +// AppNotifications._internal(); +// +// factory AppNotifications() => _instance; +// +// late HmsApiAvailability hmsApiAvailability; +// +// String _huaweiToken = ''; +// +// Future requestPermissions() async { +// if (Platform.isIOS) { +// await flutterLocalNotificationsPlugin.resolvePlatformSpecificImplementation()?.requestPermissions(alert: true, badge: true, sound: true); +// } else if (Platform.isAndroid) { +// AndroidFlutterLocalNotificationsPlugin? androidImplementation = flutterLocalNotificationsPlugin.resolvePlatformSpecificImplementation(); +// bool? granted = await androidImplementation?.requestPermission(); +// if (granted == false) { +// if (kDebugMode) { +// print("-------------------- Permission Granted ------------------------"); +// print(granted); +// } +// await Permission.notification.request(); +// } +// } +// } +// +// void init(String? firebaseToken) async { +// hmsApiAvailability = HmsApiAvailability(); +// await requestPermissions(); +// AppState().setDeviceToken = firebaseToken; +// await Permission.notification.isDenied.then((bool value) { +// if (value) { +// Permission.notification.request(); +// } +// }); +// RemoteMessage? initialMessage = await FirebaseMessaging.instance.getInitialMessage(); +// +// if (initialMessage != null) _handleMessage(initialMessage); +// +// FirebaseMessaging.onMessage.listen((RemoteMessage message) { +// if (message.notification != null) _handleMessage(message); +// }); +// +// FirebaseMessaging.onMessageOpenedApp.listen(_handleOpenApp); +// +// FirebaseMessaging.onBackgroundMessage(backgroundMessageHandler); +// +// FirebaseMessaging.instance.onTokenRefresh.listen((String token) { +// AppState().setDeviceToken = token; +// }); +// +// if (Platform.isAndroid) { +// await hmsApiAvailability.isHMSAvailable().then((value) async { +// if (value == 0) { +// huawei_push.Push.enableLogger(); +// var result = await huawei_push.Push.setAutoInitEnabled(true); +// +// huawei_push.Push.onNotificationOpenedApp.listen((message) { +// // newMessage(toFirebaseRemoteMessage(message)); +// }, onError: (e) => print(e.toString())); +// +// huawei_push.Push.onMessageReceivedStream.listen((message) { +// // newMessage(toFirebaseRemoteMessage(message)); +// }, onError: (e) => print(e.toString())); +// } +// }).catchError((err) { +// print(err); +// }); +// } +// } +// +// void initHuaweiPush(Function loginCallback) { +// AppState().setIsHuawei = true; +// initTokenStream(loginCallback); +// huawei_push.Push.getToken(""); +// } +// +// // HUAWEI PUSH TOKEN IMPLEMENTATION +// void _onTokenEvent(String event) { +// _huaweiToken = event; +// AppState().setHuaweiPushToken = _huaweiToken; +// debugPrint("HUAWEI PUSH TOKEN: $_huaweiToken"); +// } +// +// void _onTokenError(Object error) {} +// +// Future initTokenStream(Function loginCallback) async { +// huawei_push.Push.getTokenStream.listen(_onTokenEvent, onError: _onTokenError).onData((data) { +// AppState().setHuaweiPushToken = data; +// debugPrint("HUAWEI PUSH TOKEN: $data"); +// loginCallback(); +// }); +// } +// +// void _handleMessage(RemoteMessage message) { +// Utils.saveStringFromPrefs("isAppOpendByChat", "false"); +// } +// +// void _handleOpenApp(RemoteMessage message) { +// Utils.saveStringFromPrefs("isAppOpendByChat", "true"); +// Utils.saveStringFromPrefs("notificationData", message.data["user_chat_history_response"].toString()); +// } +// } +// +// AndroidNotificationChannel channel = const AndroidNotificationChannel( +// "high_importance_channel", +// "High Importance Notifications", +// importance: Importance.high, +// ); +// +// Future backgroundMessageHandler(RemoteMessage message) async { +// await Firebase.initializeApp(); +// Utils.saveStringFromPrefs("isAppOpendByChat", "false"); +// Utils.saveStringFromPrefs("notificationData", message.data["user_chat_history_response"].toString()); +// } + + + + + +//************** NEW fILE ***************** + + + + import 'dart:io'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; -import 'package:huawei_hmsavailability/huawei_hmsavailability.dart'; + +// import 'package:huawei_hmsavailability/huawei_hmsavailability.dart'; import 'package:huawei_push/huawei_push.dart' as huawei_push; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; @@ -19,7 +160,7 @@ class AppNotifications { factory AppNotifications() => _instance; - late HmsApiAvailability hmsApiAvailability; + // late HmsApiAvailability hmsApiAvailability; String _huaweiToken = ''; @@ -40,7 +181,10 @@ class AppNotifications { } void init(String? firebaseToken) async { - hmsApiAvailability = HmsApiAvailability(); + // if (Platform.isAndroid) { + // hmsApiAvailability = HmsApiAvailability(); + // } + await requestPermissions(); AppState().setDeviceToken = firebaseToken; await Permission.notification.isDenied.then((bool value) { @@ -65,22 +209,22 @@ class AppNotifications { }); if (Platform.isAndroid) { - await hmsApiAvailability.isHMSAvailable().then((value) async { - if (value == 0) { - huawei_push.Push.enableLogger(); - var result = await huawei_push.Push.setAutoInitEnabled(true); - - huawei_push.Push.onNotificationOpenedApp.listen((message) { - // newMessage(toFirebaseRemoteMessage(message)); - }, onError: (e) => print(e.toString())); - - huawei_push.Push.onMessageReceivedStream.listen((message) { - // newMessage(toFirebaseRemoteMessage(message)); - }, onError: (e) => print(e.toString())); - } - }).catchError((err) { - print(err); - }); + // await hmsApiAvailability.isHMSAvailable().then((value) async { + if (!(await Utils.isGoogleServicesAvailable())) { + huawei_push.Push.enableLogger(); + var result = await huawei_push.Push.setAutoInitEnabled(true); + + huawei_push.Push.onNotificationOpenedApp.listen((message) { + // newMessage(toFirebaseRemoteMessage(message)); + }, onError: (e) => print(e.toString())); + + huawei_push.Push.onMessageReceivedStream.listen((message) { + // newMessage(toFirebaseRemoteMessage(message)); + }, onError: (e) => print(e.toString())); + } + // }).catchError((err) { + // print(err); + // }); } } @@ -112,8 +256,10 @@ class AppNotifications { } void _handleOpenApp(RemoteMessage message) { - Utils.saveStringFromPrefs("isAppOpendByChat", "true"); - Utils.saveStringFromPrefs("notificationData", message.data["user_chat_history_response"].toString()); + if (message.data.isNotEmpty && message.data["type"] == 'chat') { + Utils.saveStringFromPrefs("isAppOpendByChat", "true"); + Utils.saveStringFromPrefs("notificationData", message.data["user_chat_history_response"].toString()); + } } } @@ -127,4 +273,7 @@ Future backgroundMessageHandler(RemoteMessage message) async { await Firebase.initializeApp(); Utils.saveStringFromPrefs("isAppOpendByChat", "false"); Utils.saveStringFromPrefs("notificationData", message.data["user_chat_history_response"].toString()); -} + if (message.data.isNotEmpty && message.data["type"] == 'call') { + // ChatVoipCall().showCallkitIncoming(uuid: const Uuid().v4(), data: message); + } +} \ No newline at end of file diff --git a/lib/classes/utils.dart b/lib/classes/utils.dart index 1f29a29..17c8a12 100644 --- a/lib/classes/utils.dart +++ b/lib/classes/utils.dart @@ -7,6 +7,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:fluttertoast/fluttertoast.dart'; +import 'package:google_api_availability/google_api_availability.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -398,4 +399,15 @@ class Utils { print(err); }); } + + + //HUAWEI DECISION MAKING + static Future isGoogleServicesAvailable() async { + GooglePlayServicesAvailability availability = await GoogleApiAvailability.instance.checkGooglePlayServicesAvailability(); + String status = availability.toString().split('.').last; + if (status == "success") { + return true; + } + return false; + } } diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index be65f7a..ce64b6c 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -525,6 +525,8 @@ abstract class LocaleKeys { static const employee_leaves_calender = 'employee_leaves_calender'; static const view_your_leave_information = 'view_your_leave_information'; static const view_details = 'view_details'; + static const notices = 'notices'; + static const hierarchy = 'hierarchy'; static const create_absence_request = 'create_absence_request'; static const business_mission = 'business_mission'; diff --git a/lib/provider/dashboard_provider_model.dart b/lib/provider/dashboard_provider_model.dart index 46b3eea..4f64b2e 100644 --- a/lib/provider/dashboard_provider_model.dart +++ b/lib/provider/dashboard_provider_model.dart @@ -120,10 +120,10 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { getOffersList = []; drawerMenuItemList = [ - DrawerMenuItem("assets/images/drawer/my_profile.svg", LocaleKeys.myProfile.tr(), AppRoutes.profile), + DrawerMenuItem("assets/images/drawer/profile_icon.png", LocaleKeys.myProfile.tr(), AppRoutes.profile), // DrawerMenuItem("assets/images/drawer/performance_evaluation.svg", LocaleKeys.performanceEvaluation.tr(), AppRoutes.performanceEvaluation), // DrawerMenuItem("assets/images/drawer/mowadhafi.svg", LocaleKeys.mowadhafhi.tr(), AppRoutes.mowadhafhi), - // DrawerMenuItem("assets/images/drawer/pending_trasactions.svg", LocaleKeys.pendingTransactions.tr(), AppRoutes.pendingTransactions), + DrawerMenuItem("assets/images/drawer/notices.png", LocaleKeys.notices.tr(), AppRoutes.pendingTransactions), // // DrawerMenuItem("assets/images/drawer/drawer_marathon.svg", LocaleKeys.brainMarathon.tr(), AppRoutes.marathonIntroScreen), // DrawerMenuItem("assets/images/drawer/change_password.svg", LocaleKeys.changePassword.tr(), AppRoutes.changePassword), // @@ -237,7 +237,7 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { myRequest = menu; } else if (menu.menuType == "M") { AppState().setempStatusIsManager = true; - drawerMenuItemList.add(DrawerMenuItem("assets/images/drawer/my_team.svg", LocaleKeys.myTeamMembers.tr(), AppRoutes.myTeam)); + drawerMenuItemList.add(DrawerMenuItem("assets/images/drawer/my_team_icon.png", LocaleKeys.myTeamMembers.tr(), AppRoutes.myTeam)); } } isMyRequestLoading = false; diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 75b2449..ec9d8a3 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -17,7 +17,6 @@ import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; -import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/offers_and_discounts/get_offers_list.dart'; import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; @@ -210,10 +209,11 @@ class _DashboardScreenState extends State with WidgetsBindingOb body: Column( children: [ Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Builder(builder: (BuildContext context) { return Row( - mainAxisSize: MainAxisSize.min, + // mainAxisSize: MainAxisSize.min, children: [ Image.memory( Utils.dataFromBase64String( @@ -230,11 +230,6 @@ class _DashboardScreenState extends State with WidgetsBindingOb height: 34, fit: BoxFit.cover, ).circle(50), - // CircularAvatar( - // width: 34, - // height: 34, - // url: "https://cdn4.iconfinder.com/data/icons/professions-2-2/151/89-512.png", - // ), 8.width, SvgPicture.asset("assets/images/side_nav.svg"), ], @@ -242,7 +237,8 @@ class _DashboardScreenState extends State with WidgetsBindingOb _scaffoldState.currentState!.openDrawer(); }); }), - Image.asset("assets/images/logos/main_mohemm_logo.png", width: 134, height: 28).expanded, + Image.asset("assets/images/drawer/moe_logo_full.png", width: 130, height: 45), + SizedBox(width: 65), // SvgPicture.asset( // "assets/images/announcements.svg", // matchTextDirection: true, diff --git a/lib/ui/landing/widget/app_drawer.dart b/lib/ui/landing/widget/app_drawer.dart index 5512cf4..9d4a151 100644 --- a/lib/ui/landing/widget/app_drawer.dart +++ b/lib/ui/landing/widget/app_drawer.dart @@ -51,9 +51,9 @@ class _AppDrawerState extends State { child: Column( children: [ Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + mainAxisAlignment: MainAxisAlignment.end, children: [ - Image.asset("assets/images/logos/main_mohemm_logo.png", width: 134, height: 24), + // Image.asset("assets/images/logos/main_mohemm_logo.png", width: 134, height: 24), const Icon(Icons.clear).onPress(() => Navigator.pop(context)), ], ).paddingOnly(left: 4, right: 14), @@ -124,32 +124,33 @@ class _AppDrawerState extends State { // if (AppState().businessCardPrivilege) // menuItem("assets/images/drawer/view_business_card.svg", LocaleKeys.viewBusinessCard.tr(), "", closeDrawer: false, onPress: () => showMDialog(context, child: BusinessCardDialog())), // - menuItem("assets/images/support.png", LocaleKeys.help.tr(), "", closeDrawer: true, onPress: () { + menuItem("assets/images/drawer/help.png", LocaleKeys.help.tr(), "", closeDrawer: true, onPress: () { Navigator.pushNamed(context, AppRoutes.help); }), - menuItem("assets/images/support.png", "Hierarchy", "", closeDrawer: true, onPress: () { + menuItem("assets/images/drawer/hierarchy.png", LocaleKeys.hierarchy.tr(), "", closeDrawer: true, onPress: () { Navigator.pushNamed(context, AppRoutes.hierarchy); }), menuItem("assets/images/drawer/logout.svg", LocaleKeys.logout.tr(), "", color: MyColors.redA3Color, closeDrawer: false, onPress: performLogout), // menuItem("assets/images/drawer/logout.svg", LocaleKeys.logout.tr(), "", color: MyColors.redA3Color, closeDrawer: false, onPress: () {Navigator.pushNamed(context, AppRoutes.survey,); ], ).expanded, - const Divider( - height: 1, - thickness: 1, - color: MyColors.lightGreyEFColor, - ), + // const Divider( + // height: 1, + // thickness: 1, + // color: MyColors.lightGreyEFColor, + // ), Row( + mainAxisAlignment: MainAxisAlignment.end, children: [ - RichText( - text: TextSpan(text: LocaleKeys.poweredBy.tr() + " ", style: const TextStyle(color: MyColors.grey98Color, fontSize: 14, letterSpacing: -0.56, fontWeight: FontWeight.w600), children: [ - TextSpan( - text: LocaleKeys.cloudSolutions.tr(), - style: const TextStyle(color: MyColors.grey3AColor, fontSize: 14, letterSpacing: -0.56, fontWeight: FontWeight.w600), - ), - ]), - ).expanded, - Image.asset("assets/images/logos/bn_cloud_soloution.jpg", width: 40, height: 40) + // RichText( + // text: TextSpan(text: LocaleKeys.poweredBy.tr() + " ", style: const TextStyle(color: MyColors.grey98Color, fontSize: 14, letterSpacing: -0.56, fontWeight: FontWeight.w600), children: [ + // TextSpan( + // text: LocaleKeys.cloudSolutions.tr(), + // style: const TextStyle(color: MyColors.grey3AColor, fontSize: 14, letterSpacing: -0.56, fontWeight: FontWeight.w600), + // ), + // ]), + // ).expanded, + Image.asset("assets/images/drawer/moe_logo.png", width: 60, height: 60) ], ).paddingOnly(left: 21, right: 21, top: 21) ], diff --git a/lib/ui/landing/widget/services_widget.dart b/lib/ui/landing/widget/services_widget.dart index 0d50df0..03ca381 100644 --- a/lib/ui/landing/widget/services_widget.dart +++ b/lib/ui/landing/widget/services_widget.dart @@ -80,7 +80,7 @@ class ServicesWidget extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.end, children: [ Expanded( - child: data.homeMenus![parentIndex].menuEntiesList[index].prompt!.toText11(isBold: true), + child: data.homeMenus![parentIndex].menuEntiesList[index].prompt!.toText10(isBold: true), ), RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg").paddingOnly(bottom: 4)), ], diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index a818fbb..d74ce0d 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -142,7 +142,7 @@ class _LoginScreenState extends State { Future checkPrefs() async { String username = await Utils.getStringFromPrefs(SharedPrefsConsts.username); - if (!username.isNotEmpty) { // for test purpose i added ! + if (username.isNotEmpty) { // for test purpose i added ! String password = await Utils.getStringFromPrefs(SharedPrefsConsts.password); // String firebaseToken = await Utils.getStringFromPrefs(SharedPrefsConsts.firebaseToken); // print("firebaseToken:$firebaseToken"); @@ -152,6 +152,7 @@ class _LoginScreenState extends State { } } + void performLogin() async { Utils.showLoading(context); try { @@ -229,24 +230,24 @@ class _LoginScreenState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Expanded(child: SizedBox()), - Row( - children: [ - LocaleKeys.english.tr().toText14(color: AppState().isArabic(context) ? null : MyColors.textMixColor).onPress(() { - context.setLocale(const Locale("en", "US")); - }), - Container( - width: 1, - color: MyColors.darkWhiteColor, - height: 16, - margin: const EdgeInsets.only(left: 10, right: 10), - ), - LocaleKeys.arabic.tr().toText14(color: !AppState().isArabic(context) ? null : MyColors.textMixColor).onPress(() { - context.setLocale(const Locale("ar", "SA")); - }), - ], - ), + Image.asset("assets/images/drawer/moe_logo.png", width: 60, height: 60), + + Row(children: [ + LocaleKeys.english.tr().toText14(color: AppState().isArabic(context) ? null : MyColors.textMixColor).onPress(() { + context.setLocale(const Locale("en", "US")); + }), + Container( + width: 1, + color: MyColors.darkWhiteColor, + height: 16, + margin: const EdgeInsets.only(left: 10, right: 10), + ), + LocaleKeys.arabic.tr().toText14(color: !AppState().isArabic(context) ? null : MyColors.textMixColor).onPress(() { + context.setLocale(const Locale("ar", "SA")); + }), + ],) ], ), Expanded( diff --git a/lib/ui/login/verify_last_login_screen.dart b/lib/ui/login/verify_last_login_screen.dart index 8eca069..e7caaff 100644 --- a/lib/ui/login/verify_last_login_screen.dart +++ b/lib/ui/login/verify_last_login_screen.dart @@ -21,10 +21,7 @@ import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/basic_member_information_model.dart'; import 'package:mohem_flutter_app/models/generic_response_model.dart'; import 'package:mohem_flutter_app/models/get_mobile_login_info_list_model.dart'; -import 'package:mohem_flutter_app/ui/dialogs/id/business_card_dialog.dart'; -import 'package:mohem_flutter_app/ui/dialogs/id/employee_digital_id_dialog.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; -import 'package:mohem_flutter_app/widgets/dialogs/dialogs.dart'; // WhatsApp 4 // SMS 1 @@ -63,29 +60,54 @@ class _VerifyLastLoginScreenState extends State { String empName = mobileLoginInfoListModel!.employeeName!; return Scaffold( - appBar: AppBar( - backgroundColor: Colors.transparent, - automaticallyImplyLeading: false, - title: (mobileLoginInfoListModel?.businessCardPrivilege ?? false) - ? LocaleKeys.viewBusinessCard.tr().toText12(color: MyColors.textMixColor, isUnderLine: true).onPress(() { - showMDialog(context, child: BusinessCardDialog()); - }) - : Container(), - actions: [ - Center( - child: LocaleKeys.employeeDigitalID.tr().toText12(color: MyColors.textMixColor, isUnderLine: true).onPress(() { - showMDialog(context, child: EmployeeDigitialIdDialog()); - })), - 21.width - ], - ), + // appBar: AppBar( + // + // backgroundColor: Colors.transparent, + // automaticallyImplyLeading: false, + // title: (mobileLoginInfoListModel?.businessCardPrivilege ?? false) + // ? LocaleKeys.viewBusinessCard.tr().toText12(color: MyColors.textMixColor, isUnderLine: true).onPress(() { + // showMDialog(context, child: BusinessCardDialog()); + // }) + // : Container(), + // actions: [ + // Center( + // child: LocaleKeys.employeeDigitalID.tr().toText12(color: MyColors.textMixColor, isUnderLine: true).onPress(() { + // showMDialog(context, child: EmployeeDigitialIdDialog()); + // })), + // 21.width + // ], + // ), body: Column( children: [ ListView( padding: const EdgeInsets.all(21), physics: const BouncingScrollPhysics(), children: [ - //12.height, + 12.height, + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Image.asset("assets/images/drawer/moe_logo.png", width: 60, height: 60), + Row( + children: [ + LocaleKeys.english.tr().toText14(color: AppState().isArabic(context) ? null : MyColors.textMixColor).onPress(() { + context.setLocale(const Locale("en", "US")); + }), + Container( + width: 1, + color: MyColors.darkWhiteColor, + height: 16, + margin: const EdgeInsets.only(left: 10, right: 10), + ), + LocaleKeys.arabic.tr().toText14(color: !AppState().isArabic(context) ? null : MyColors.textMixColor).onPress(() { + context.setLocale(const Locale("ar", "SA")); + }), + ], + ) + ], + ), + 12.height, + if (true) Column( mainAxisSize: MainAxisSize.min, @@ -290,7 +312,7 @@ class _VerifyLastLoginScreenState extends State { width: 38, color: isDisable ? MyColors.darkTextColor.withOpacity(0.7) : null, ), - _title.toText16(height: 20/16) + _title.toText16(height: 20 / 16, maxlines: 2), ], ), ), diff --git a/lib/ui/login/verify_login_screen.dart b/lib/ui/login/verify_login_screen.dart index febd06b..9e6dba1 100644 --- a/lib/ui/login/verify_login_screen.dart +++ b/lib/ui/login/verify_login_screen.dart @@ -14,7 +14,6 @@ import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/env.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/dialogs/otp_dialog.dart'; -import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/basic_member_information_model.dart'; @@ -573,7 +572,7 @@ class _VerifyLoginScreenState extends State { width: 38, color: isDisable ? MyColors.darkTextColor.withOpacity(0.7) : null, ), - _title.toText16(height: 20 / 16) + _title.toText16(height: 20 / 16, maxlines: 2) ], ), ), diff --git a/pubspec.yaml b/pubspec.yaml index 1a8b0ff..0ff3e5f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -64,7 +64,7 @@ dependencies: wifi_iot: ^0.3.18 flutter_html: ^3.0.0-alpha.6 # flutter_barcode_scanner: ^2.0.0 - qr_code_scanner: ^1.0.0 + qr_code_scanner: ^1.0.1 # qr_flutter: ^4.0.0 url_launcher: ^6.0.15 share: 2.0.4 @@ -86,7 +86,8 @@ dependencies: swipe_to: ^1.0.2 flutter_webrtc: ^0.9.16 camera: ^0.10.3 - flutter_local_notifications: any + flutter_local_notifications: 10.0.0 + google_api_availability: ^3.0.1 #firebase_analytics: any #Chat Voice Message Recoding & Play