diff --git a/android/app/build.gradle b/android/app/build.gradle
index 9c3e91d..7f52936 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -34,7 +34,7 @@ apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
apply plugin: 'com.huawei.agconnect'
android {
- compileSdkVersion 33
+ compileSdkVersion 34
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
@@ -53,7 +53,7 @@ android {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "hmg.cloudSolutions.mohem"
minSdkVersion 21
- targetSdkVersion 30
+ targetSdkVersion 34
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
diff --git a/android/build.gradle b/android/build.gradle
index 7991b9d..ec509c8 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -1,5 +1,5 @@
buildscript {
- ext.kotlin_version = '1.6.0'
+ ext.kotlin_version = '1.8.0'
repositories {
google()
mavenCentral()
@@ -7,7 +7,7 @@ buildscript {
}
dependencies {
- classpath 'com.android.tools.build:gradle:7.0.3'
+ classpath 'com.android.tools.build:gradle:7.1.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.8'
classpath 'com.huawei.agconnect:agcp:1.8.0.300'
@@ -28,6 +28,6 @@ subprojects {
project.evaluationDependsOn(':app')
}
-task clean(type: Delete) {
+tasks.register("clean", Delete) {
delete rootProject.buildDir
}
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index ed1a787..b027681 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.4-bin.zip
diff --git a/assets/icons/calendar.png b/assets/icons/calendar.png
new file mode 100644
index 0000000..bcd565d
Binary files /dev/null and b/assets/icons/calendar.png differ
diff --git a/assets/icons/calendar.svg b/assets/icons/calendar.svg
new file mode 100644
index 0000000..f5b81d3
--- /dev/null
+++ b/assets/icons/calendar.svg
@@ -0,0 +1,15 @@
+
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index 8c502cb..41d2e96 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
- objectVersion = 51;
+ objectVersion = 54;
objects = {
/* Begin PBXBuildFile section */
@@ -227,10 +227,12 @@
};
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
+ "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
);
name = "Thin Binary";
outputPaths = (
@@ -241,6 +243,7 @@
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
index c87d15a..ac88fca 100644
--- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -40,7 +40,7 @@
TAG
+ UIApplicationSupportsIndirectInputEvents
+
diff --git a/lib/classes/colors.dart b/lib/classes/colors.dart
index ec369c8..549bf2a 100644
--- a/lib/classes/colors.dart
+++ b/lib/classes/colors.dart
@@ -3,11 +3,11 @@ import 'package:flutter/cupertino.dart';
class MyColors {
static const Color kWhiteColor = Color(0xffffffff);
static const Color darkIconColor = Color(0xff28323A);
- static const Color darkTextColor = Color(0xff2B353E);
+ // static const Color darkTextColor = Color(0xff2B353E);
static const Color normalTextColor = Color(0xff5A5A5A);
static const Color lightTextColor = Color(0xffBFBFBF);
- static const Color gradiantStartColor = Color(0xff259db7);
- static const Color gradiantEndColor = Color(0xff33c0a5);
+ // static const Color gradiantStartColor = Color(0xff259db7);
+ // static const Color gradiantEndColor = Color(0xff33c0a5);
static const Color textMixColor = Color(0xff2BB8A6);
static const Color backgroundColor = Color(0xffF8F8F8);
static const Color grey41Color = Color(0xff414141);
@@ -65,4 +65,11 @@ class MyColors {
static const Color grey71Color = Color(0xff717171);
static const Color darkGrey3BColor = Color(0xff3B3B3B);
static const Color lightGreyIconColor = Color(0xff919191);
+
+ static const Color moeLoginColor = Color(0xFF004D71);
+
+ static const Color gradiantStartColor = Color(0xFF004D71);
+ static const Color gradiantEndColor = Color(0xFF004D71);
+ static const Color bgColor = Color(0xFF5FA5A0);
+ static const Color darkTextColor = Color(0xFF1D4C6E);
}
diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart
index 91c75e4..0270e49 100644
--- a/lib/extensions/string_extensions.dart
+++ b/lib/extensions/string_extensions.dart
@@ -25,10 +25,18 @@ extension TrimString on String {
extension EmailValidator on String {
Widget get toWidget => Text(this);
- Widget toText10({Color? color, bool isBold = false, int? maxlines, FontStyle? fontStyle}) => Text(
+ Widget toText10({Color? color, bool isBold = false, int? maxlines, FontStyle? fontStyle, double letterSpacing = -0.4}) => Text(
this,
maxLines: maxlines,
- style: TextStyle(fontSize: 10, fontStyle: fontStyle ?? FontStyle.normal, fontWeight: isBold ? FontWeight.bold : FontWeight.w600, color: color ?? MyColors.darkTextColor, letterSpacing: -0.4),
+ style: TextStyle(
+ fontSize: 10, fontStyle: fontStyle ?? FontStyle.normal, fontWeight: isBold ? FontWeight.bold : FontWeight.w600, color: color ?? MyColors.darkTextColor, letterSpacing: letterSpacing),
+ );
+
+ Widget toText9({Color? color, bool isBold = false, int? maxlines, FontStyle? fontStyle, double letterSpacing = -0.27}) => Text(
+ this,
+ maxLines: maxlines,
+ style: TextStyle(
+ fontSize: 9, fontStyle: fontStyle ?? FontStyle.normal, fontWeight: isBold ? FontWeight.bold : FontWeight.w600, color: color ?? MyColors.darkTextColor, letterSpacing: letterSpacing),
);
Widget toText11({Color? color, FontWeight? weight, bool isUnderLine = false, bool isBold = false, int maxLine = 0}) => Text(
@@ -159,10 +167,10 @@ extension EmailValidator on String {
style: TextStyle(height: 1, color: color ?? MyColors.darkTextColor, fontSize: 22, letterSpacing: -1.44, fontWeight: isBold ? FontWeight.bold : FontWeight.w600),
);
- Widget toText24({Color? color, bool isBold = false, bool isCentered = false}) => Text(
+ Widget toText24({Color? color, bool isBold = false, bool isCentered = false, double letterspacing = -1.44}) => Text(
this,
textAlign: isCentered ? TextAlign.center : null,
- style: TextStyle(height: 23 / 24, color: color ?? MyColors.darkTextColor, fontSize: 24, letterSpacing: -1.44, fontWeight: isBold ? FontWeight.bold : FontWeight.w600),
+ style: TextStyle(height: 23 / 24, color: color ?? MyColors.darkTextColor, fontSize: 24, letterSpacing: letterspacing, fontWeight: isBold ? FontWeight.bold : FontWeight.w600),
);
Widget toText30({Color? color, bool isBold = false, bool isCentered = false}) => Text(
diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart
index 421eb91..a1d96bf 100644
--- a/lib/ui/chat/chat_detailed_screen.dart
+++ b/lib/ui/chat/chat_detailed_screen.dart
@@ -1,5 +1,5 @@
import 'dart:async';
-import 'dart:convert';
+
import 'package:audio_waveforms/audio_waveforms.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
@@ -14,18 +14,16 @@ import 'package:mohem_flutter_app/main.dart';
import 'package:mohem_flutter_app/models/chat/call.dart';
import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart';
import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.dart';
-import 'package:mohem_flutter_app/models/chat/get_user_login_token_model.dart';
import 'package:mohem_flutter_app/provider/chat_call_provider.dart';
import 'package:mohem_flutter_app/provider/chat_provider_model.dart';
-import 'package:mohem_flutter_app/ui/chat/custom_auto_direction.dart';
import 'package:mohem_flutter_app/ui/chat/call/chat_outgoing_call_screen.dart';
import 'package:mohem_flutter_app/ui/chat/chat_bubble.dart';
import 'package:mohem_flutter_app/ui/chat/common.dart';
+import 'package:mohem_flutter_app/ui/chat/custom_auto_direction.dart';
import 'package:mohem_flutter_app/widgets/chat_app_bar_widge.dart';
import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart';
import 'package:provider/provider.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
-import 'package:signalr_netcore/signalr_client.dart';
import 'package:swipe_to/swipe_to.dart';
class ChatDetailedScreenParams {
@@ -78,7 +76,7 @@ class _ChatDetailScreenState extends State {
Widget build(BuildContext context) {
params = ModalRoute.of(context)!.settings.arguments as ChatDetailedScreenParams;
data = Provider.of(context, listen: false);
- // callPro = Provider.of(context, listen: false);
+ // callPro = Provider.of(context, listen: false);
if (params != null) {
data.getSingleUserChatHistory(
senderUID: AppState().chatDetails!.response!.id!.toInt(),
@@ -143,7 +141,7 @@ class _ChatDetailScreenState extends State {
dateTime: m.dateFormte(m.userChatHistory[i].createdDate!),
cItem: m.userChatHistory[i],
),
- onRightSwipe: () {
+ onRightSwipe: (DragUpdateDetails) {
m.chatReply(
m.userChatHistory[i],
);
diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart
index ec9d8a3..3475f7d 100644
--- a/lib/ui/landing/dashboard_screen.dart
+++ b/lib/ui/landing/dashboard_screen.dart
@@ -3,7 +3,6 @@ import 'dart:io';
import 'dart:ui' as ui;
import 'package:easy_localization/easy_localization.dart';
-import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';
import 'package:flutter_svg/flutter_svg.dart';
@@ -238,7 +237,7 @@ class _DashboardScreenState extends State with WidgetsBindingOb
});
}),
Image.asset("assets/images/drawer/moe_logo_full.png", width: 130, height: 45),
- SizedBox(width: 65),
+ const SizedBox(width: 65),
// SvgPicture.asset(
// "assets/images/announcements.svg",
// matchTextDirection: true,
@@ -264,8 +263,11 @@ class _DashboardScreenState extends State with WidgetsBindingOb
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- LocaleKeys.welcomeBack.tr().toText14(color: MyColors.grey77Color),
- (AppState().memberInformationList!.eMPLOYEENAME ?? "").toText24(isBold: true),
+ LocaleKeys.welcomeBack.tr().toText16(color: MyColors.grey77Color),
+ (AppState().memberInformationList!.eMPLOYEENAME ?? "").toText24(
+ isBold: true,
+ letterspacing: -1.44,
+ ),
16.height,
Row(
children: [
@@ -351,10 +353,10 @@ class _DashboardScreenState extends State with WidgetsBindingOb
height: 45,
padding: const EdgeInsets.only(left: 10, right: 10),
decoration: BoxDecoration(
- color: Color(0xff259EA4),
+ color: const Color(0xff259EA4),
borderRadius: BorderRadius.only(
- bottomRight: AppState().isArabic(context) ? Radius.circular(0) : Radius.circular(15),
- bottomLeft: AppState().isArabic(context) ? Radius.circular(15) : Radius.circular(0),
+ bottomRight: AppState().isArabic(context) ? const Radius.circular(0) : const Radius.circular(15),
+ bottomLeft: AppState().isArabic(context) ? const Radius.circular(15) : const Radius.circular(0),
),
),
child: SvgPicture.asset(model.isTimeRemainingInSeconds == 0 ? "assets/images/attendance.svg" : "assets/images/attendance.svg"),
@@ -383,57 +385,79 @@ class _DashboardScreenState extends State with WidgetsBindingOb
),
if (env.dashboard.attendance) 9.width,
Expanded(
- child: MenusWidget(),
+ child: Row(
+ children: [
+ if (env.monthlyAttendance)
+ Expanded(
+ child: InkWell(
+ child: AspectRatio(
+ aspectRatio: 1,
+ child: Container(
+ width: double.infinity,
+ padding: const EdgeInsets.all(11),
+ margin: const EdgeInsets.symmetric(horizontal: 0),
+ decoration: const BoxDecoration(
+ color: MyColors.bgColor,
+ borderRadius: BorderRadius.all(Radius.circular(15)),
+ ),
+ child: Container(
+ decoration: const BoxDecoration(
+ image: DecorationImage(
+ image: AssetImage(
+ "assets/icons/calendar.png",
+ ),
+ opacity: 1,
+ ),
+ ),
+ child: Row(
+ children: [
+ Expanded(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ LocaleKeys.employee_leaves_calender.tr().toText16(
+ isBold: false,
+ color: Colors.white,
+ maxlines: 2,
+ ),
+ 7.height,
+ LocaleKeys.view_your_leave_information.tr().toText10(color: Colors.white, maxlines: 2, letterSpacing: -0.1),
+ const Expanded(
+ child: SizedBox(),
+ ),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.end,
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ LocaleKeys.view_details.tr().toText10(color: Colors.white, letterSpacing: -0.3),
+ RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white))
+ .paddingOnly(left: 5),
+ ],
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ ),
+ onTap: () {
+ Navigator.pushNamed(context, AppRoutes.monthlyAttendance);
+ },
+ ),
+ ),
+ 9.width,
+ Expanded(child: MenusWidget()),
+ ],
+ ),
),
],
),
],
).paddingOnly(left: 21, right: 21, top: 7, bottom: 21),
- if (env.monthlyAttendance)
- InkWell(
- child: Container(
- width: double.infinity,
- padding: EdgeInsets.all(12),
- margin: EdgeInsets.symmetric(horizontal: 21),
- decoration: const BoxDecoration(
- color: MyColors.gradiantStartColor,
- borderRadius: BorderRadius.all(Radius.circular(12)),
- ),
- child: Row(
- children: [
- Expanded(
- child: Column(
- mainAxisAlignment: MainAxisAlignment.start,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- LocaleKeys.employee_leaves_calender.tr().toText18(isBold: true, color: Colors.white),
- 2.height,
- LocaleKeys.view_your_leave_information.tr().toText12(color: Colors.white),
- 8.height,
- Container(
- decoration: BoxDecoration(
- color: Colors.white.withOpacity(0.4),
- borderRadius: const BorderRadius.all(Radius.circular(12)),
- ),
- padding: EdgeInsets.all(8),
- child: LocaleKeys.view_details.tr().toText14(color: Colors.white),
- ),
- ],
- ),
- ),
- const Icon(
- Icons.calendar_month,
- color: Colors.white,
- size: 80,
- ),
- ],
- ),
- ),
- onTap: () {
- Navigator.pushNamed(context, AppRoutes.monthlyAttendance);
- },
- ),
- 21.height,
+ 15.height,
Visibility(
visible: env.offersDiscount,
child: Column(
@@ -534,23 +558,27 @@ class _DashboardScreenState extends State with WidgetsBindingOb
],
),
),
- Container(
- width: double.infinity,
- padding: const EdgeInsets.only(top: 31),
- decoration: BoxDecoration(
- color: Colors.white,
- borderRadius: const BorderRadius.only(topRight: Radius.circular(50), topLeft: Radius.circular(50)),
- border: Border.all(color: MyColors.lightGreyEDColor, width: 1),
- ),
- child: Column(
- mainAxisSize: MainAxisSize.min,
- children: [
- if (env.marathon)
- context.watch().isLoading ? const MarathonBannerShimmer().paddingAll(20) : const MarathonBanner().paddingOnly(left: 21, right: 21, bottom: 21, top: 8),
- ServicesWidget(),
- ],
- ),
+ // Container(
+ // width: double.infinity,
+ // padding: const EdgeInsets.only(top: 31),
+ // decoration: BoxDecoration(
+ // color: Colors.white,
+ // borderRadius: const BorderRadius.only(topRight: Radius.circular(50), topLeft: Radius.circular(50)),
+ // border: Border.all(color: MyColors.lightGreyEDColor, width: 1),
+ // ),
+ // child:
+ Column(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ if (env.marathon)
+ context.watch().isLoading ? const MarathonBannerShimmer().paddingAll(20) : const MarathonBanner().paddingOnly(left: 21, right: 21, bottom: 21, top: 8),
+ Container(
+ // color: Colors.transparent,
+ child: ServicesWidget(),
+ ),
+ ],
),
+ //),
],
),
),
diff --git a/lib/ui/landing/widget/menus_widget.dart b/lib/ui/landing/widget/menus_widget.dart
index 521c2a3..aac33fd 100644
--- a/lib/ui/landing/widget/menus_widget.dart
+++ b/lib/ui/landing/widget/menus_widget.dart
@@ -16,12 +16,13 @@ import 'package:provider/provider.dart';
class MenusWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
- List namesColor = [0xff125765, 0xff239D8F, 0xff2BB8A8, 0xff1D92AA];
+ // List namesColor = [0xff125765, 0xff239D8F, 0xff2BB8A8, 0xff1D92AA];
+ List namesColor = [0xff1C4B6D, 0xff33678D, 0xff9FB7C4, 0xff5FA5A0];
return Consumer(
builder: (cxt, data, child) {
return GridView(
- gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, childAspectRatio: 1.75, crossAxisSpacing: 9, mainAxisSpacing: 9),
+ gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, childAspectRatio: 78 / 75, crossAxisSpacing: 9, mainAxisSpacing: 9),
padding: EdgeInsets.zero,
shrinkWrap: true,
primary: false,
@@ -40,11 +41,11 @@ class MenusWidget extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- LocaleKeys.workList.tr().toText12(color: Colors.white),
+ LocaleKeys.workList.tr().toText10(color: Colors.white, letterSpacing: -0.6),
Row(
children: [
Expanded(
- child: data.workListCounter.toString().toText16(color: Colors.white, isBold: true, maxlines: 1),
+ child: data.workListCounter.toString().toText14(color: Colors.white, isBold: true, maxlines: 1),
),
RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white)),
],
@@ -68,11 +69,11 @@ class MenusWidget extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- LocaleKeys.missingSwipes.tr().toText12(color: Colors.white),
+ LocaleKeys.missingSwipes.tr().toText10(color: Colors.white, letterSpacing: -0.6),
Row(
children: [
Expanded(
- child: data.missingSwipeCounter.toString().toText16(color: Colors.white, isBold: true, maxlines: 1),
+ child: data.missingSwipeCounter.toString().toText14(color: Colors.white, isBold: true, maxlines: 1),
),
RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white)),
],
@@ -95,11 +96,11 @@ class MenusWidget extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- LocaleKeys.leaveBalance.tr().toText12(color: Colors.white),
+ LocaleKeys.businessTripBalance.tr().toText10(color: Colors.white, letterSpacing: -0.6),
Row(
children: [
Expanded(
- child: (data.leaveBalance)!.toStringAsFixed(0).toText16(color: Colors.white, isBold: true, maxlines: 1),
+ child: data.businessTrip.toStringAsFixed(0).toText14(color: Colors.white, isBold: true, maxlines: 1),
),
RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white)),
],
@@ -107,7 +108,8 @@ class MenusWidget extends StatelessWidget {
],
).paddingOnly(left: 10, right: 10, bottom: 6, top: 6),
).onPress(() {
- Navigator.pushNamed(context, AppRoutes.leaveBalance);
+ //Navigator.pushNamed(context, AppRoutes.leaveBalance);
+ Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(LocaleKeys.business_mission.tr(), "XXX_HR_EIT_BUSINESS_MISSION_SS"));
}),
data.isLeaveTicketBalanceLoading
? MenuShimmer().onPress(() {
@@ -115,18 +117,18 @@ class MenusWidget extends StatelessWidget {
})
: Container(
decoration: BoxDecoration(
- color: Color(namesColor[2]),
+ color: Color(namesColor[1]),
borderRadius: BorderRadius.circular(10),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- LocaleKeys.businessTripBalance.tr().toText12(color: Colors.white),
+ LocaleKeys.leaveBalance.tr().toText10(color: Colors.white, letterSpacing: -0.6),
Row(
children: [
Expanded(
- child: data.businessTrip.toStringAsFixed(0).toText16(color: Colors.white, isBold: true, maxlines: 1),
+ child: (data.leaveBalance)!.toStringAsFixed(0).toText14(color: Colors.white, isBold: true, maxlines: 1),
),
RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white)),
],
@@ -134,10 +136,7 @@ class MenusWidget extends StatelessWidget {
],
).paddingOnly(left: 10, right: 10, bottom: 6, top: 6),
).onPress(() {
- //Navigator.pushNamed(context, AppRoutes.leaveBalance);
- Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(LocaleKeys.business_mission.tr(), "XXX_HR_EIT_BUSINESS_MISSION_SS"));
-
-
+ Navigator.pushNamed(context, AppRoutes.leaveBalance);
}),
if (env.dashboard.ticketBalance)
data.isLeaveTicketBalanceLoading
@@ -153,11 +152,11 @@ class MenusWidget extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- LocaleKeys.ticketBalance.tr().toText12(color: Colors.white),
+ LocaleKeys.ticketBalance.tr().toText10(color: Colors.white, letterSpacing: -0.6),
Row(
children: [
Expanded(
- child: data.ticketBalance.toStringAsFixed(2).toText16(color: Colors.white, isBold: true, maxlines: 1),
+ child: data.ticketBalance.toStringAsFixed(2).toText14(color: Colors.white, isBold: true, maxlines: 1),
),
RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white)),
],
@@ -182,14 +181,15 @@ class MenusWidget extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- LocaleKeys.myRequest.tr().toText12(color: Colors.white),
+ LocaleKeys.myRequest.tr().toText10(color: Colors.white, letterSpacing: -0.6),
Row(
mainAxisAlignment: MainAxisAlignment.end,
+ crossAxisAlignment: CrossAxisAlignment.center,
children: [
// Expanded(
// child: data.ticketBalance.toStringAsFixed(2).toText16(color: Colors.white, isBold: true, maxlines: 1),
// ),
- RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white)),
+ RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white).paddingOnly(bottom: 4)),
],
)
],
diff --git a/lib/ui/landing/widget/services_widget.dart b/lib/ui/landing/widget/services_widget.dart
index 03ca381..3aa414d 100644
--- a/lib/ui/landing/widget/services_widget.dart
+++ b/lib/ui/landing/widget/services_widget.dart
@@ -37,69 +37,151 @@ class ServicesWidget extends StatelessWidget {
return data.isServicesMenusLoading
? whileLoading()
: ListView.separated(
- padding: const EdgeInsets.only(top: 0),
+ padding: const EdgeInsets.only(top: 0, bottom: 0),
itemBuilder: (context, parentIndex) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
- data.homeMenus![parentIndex].menuEntry.prompt!.toSectionHeading().paddingOnly(left: 21, right: 21),
- SizedBox(
- height: 105 + 26,
- child: ListView.separated(
- shrinkWrap: true,
- physics: const BouncingScrollPhysics(),
- padding: const EdgeInsets.only(left: 21, right: 21, top: 13, bottom: 13),
- scrollDirection: Axis.horizontal,
- itemBuilder: (cxt, index) {
- return AspectRatio(
- aspectRatio: 105 / 105,
- child: data.isServicesMenusLoading
- ? ServicesMenuShimmer()
- : Container(
- decoration: BoxDecoration(
- color: Colors.white,
- borderRadius: BorderRadius.circular(15),
- boxShadow: [
- BoxShadow(
- color: const Color(0xff000000).withOpacity(.05),
- blurRadius: 26,
- offset: const Offset(0, -3),
- ),
- ],
- ),
- child: Column(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Image.memory(
- const Base64Decoder().convert(data.homeMenus![parentIndex].menuEntiesList[index].icon ?? ""),
- scale: 1.25,
- ),
- Row(
- crossAxisAlignment: CrossAxisAlignment.end,
- children: [
- Expanded(
- child: data.homeMenus![parentIndex].menuEntiesList[index].prompt!.toText10(isBold: true),
+ if (parentIndex == 0)
+ Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ data.homeMenus![parentIndex].menuEntry.prompt!.toSectionHeading().paddingOnly(left: 21, right: 21),
+ Container(
+ height: 105 + 26,
+ width: double.infinity,
+ // color: Colors.white.withOpacity(0.4),
+ child: ListView.separated(
+ shrinkWrap: true,
+ physics: const BouncingScrollPhysics(),
+ padding: const EdgeInsets.only(left: 21, right: 21, top: 13, bottom: 13),
+ scrollDirection: Axis.horizontal,
+ itemBuilder: (cxt, index) {
+ return AspectRatio(
+ aspectRatio: 105 / 105,
+ child: data.isServicesMenusLoading
+ ? ServicesMenuShimmer()
+ : Container(
+ decoration: BoxDecoration(
+ color: Colors.white,
+ borderRadius: BorderRadius.circular(15),
+ boxShadow: [
+ BoxShadow(
+ color: const Color(0xff000000).withOpacity(.05),
+ blurRadius: 18,
+ offset: const Offset(0, 0),
+ ),
+ ],
),
- RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg").paddingOnly(bottom: 4)),
- ],
- )
- ],
- ).paddingOnly(left: 10, right: 10, bottom: 10, top: 12),
- ).onPress(() {
- handleOnPress(context, data.homeMenus![parentIndex].menuEntiesList[index]);
- }),
- );
- },
- separatorBuilder: (BuildContext cxt, int index) => 9.width,
- itemCount: data.homeMenus![parentIndex].menuEntiesList.length),
- ),
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Image.memory(
+ const Base64Decoder().convert(data.homeMenus![parentIndex].menuEntiesList[index].icon ?? ""),
+ scale: 1.25,
+ ),
+ Row(
+ crossAxisAlignment: CrossAxisAlignment.end,
+ children: [
+ Expanded(
+ child: data.homeMenus![parentIndex].menuEntiesList[index].prompt!.toText9(isBold: true),
+ ),
+ RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg").paddingOnly(bottom: 4)),
+ ],
+ )
+ ],
+ ).paddingOnly(left: 10, right: 10, bottom: 10, top: 12),
+ ).onPress(() {
+ handleOnPress(context, data.homeMenus![parentIndex].menuEntiesList[index]);
+ }));
+ },
+ separatorBuilder: (BuildContext cxt, int index) => 9.width,
+ itemCount: data.homeMenus![parentIndex].menuEntiesList.length),
+ ),
+ ],
+ ),
+ if (parentIndex != 0)
+ Container(
+ padding: const EdgeInsets.only(top: 25),
+ decoration: parentIndex == 1
+ ? const BoxDecoration(
+ color: Colors.white,
+ borderRadius: BorderRadius.only(topRight: Radius.circular(50), topLeft: Radius.circular(50)),
+ )
+ : const BoxDecoration(
+ color: Colors.white,
+ ),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ data.homeMenus![parentIndex].menuEntry.prompt!.toSectionHeading().paddingOnly(left: 21, right: 21),
+ Container(
+ height: 105 + 26,
+ // color: Colors.white,
+ width: double.infinity,
+ child: ListView.separated(
+ shrinkWrap: true,
+ physics: const BouncingScrollPhysics(),
+ padding: const EdgeInsets.only(left: 21, right: 21, top: 13, bottom: 13),
+ scrollDirection: Axis.horizontal,
+ itemBuilder: (cxt, index) {
+ return AspectRatio(
+ aspectRatio: 105 / 105,
+ child: data.isServicesMenusLoading
+ ? ServicesMenuShimmer()
+ : Container(
+ decoration: BoxDecoration(
+ color: Colors.white,
+ borderRadius: BorderRadius.circular(15),
+ boxShadow: [
+ BoxShadow(
+ color: const Color(0xff000000).withOpacity(.05),
+ blurRadius: 18,
+ offset: const Offset(0, 0),
+ ),
+ ],
+ ),
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Image.memory(
+ const Base64Decoder().convert(data.homeMenus![parentIndex].menuEntiesList[index].icon ?? ""),
+ scale: 1.25,
+ ),
+ Row(
+ crossAxisAlignment: CrossAxisAlignment.end,
+ children: [
+ Expanded(
+ child: data.homeMenus![parentIndex].menuEntiesList[index].prompt!.toText9(isBold: true),
+ ),
+ RotatedBox(
+ quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg").paddingOnly(bottom: 4)),
+ ],
+ )
+ ],
+ ).paddingOnly(left: 10, right: 10, bottom: 10, top: 12),
+ ).onPress(() {
+ handleOnPress(context, data.homeMenus![parentIndex].menuEntiesList[index]);
+ }));
+ },
+ separatorBuilder: (BuildContext cxt, int index) => 9.width,
+ itemCount: data.homeMenus![parentIndex].menuEntiesList.length),
+ ),
+ ],
+ ),
+ )
],
);
},
separatorBuilder: (BuildContext context, int index) {
- return 12.height;
+ if (index == 0) return SizedBox();
+ return Container(
+ color: Colors.white,
+ height: 7,
+ );
},
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart
index d74ce0d..e3cdd74 100644
--- a/lib/ui/login/login_screen.dart
+++ b/lib/ui/login/login_screen.dart
@@ -4,7 +4,6 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
-import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
@@ -142,7 +141,8 @@ 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,7 +152,6 @@ class _LoginScreenState extends State {
}
}
-
void performLogin() async {
Utils.showLoading(context);
try {
@@ -186,18 +185,21 @@ class _LoginScreenState extends State {
@override
Widget build(BuildContext context) {
- username.text = "1002528733";
- password.text = "moe123456";
if (isAppOpenBySystem == null) {
isAppOpenBySystem = (ModalRoute.of(context)!.settings.arguments ?? true) as bool;
if (!kReleaseMode) {
// username.text = "1100313582";
// password.text = "moe123456";
+ // username.text = "1002528733";
+ // password.text = "moe123456";
username.text = "1024056812";
password.text = "moe123456";
+ // username.text = "1063437063";
+ // password.text = "moe123456";
+
// 1) Normal user :
// Username: 1100313582
// Employee # and Name: 210624 - شهد خالد ابراهيم الشامخ
@@ -233,21 +235,22 @@ class _LoginScreenState extends State {
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"));
- }),
- ],)
+ 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(
@@ -285,10 +288,14 @@ class _LoginScreenState extends State {
),
),
),
- DefaultButton(LocaleKeys.login.tr(), () async {
- SystemChannels.textInput.invokeMethod('TextInput.hide');
- performLogin();
- }).insideContainer
+ DefaultButton(
+ LocaleKeys.login.tr(),
+ () async {
+ SystemChannels.textInput.invokeMethod('TextInput.hide');
+ performLogin();
+ },
+ color: MyColors.moeLoginColor,
+ ).insideContainer
],
),
);
diff --git a/lib/ui/screens/offers_and_discounts/offers_and_discounts_details.dart b/lib/ui/screens/offers_and_discounts/offers_and_discounts_details.dart
index b4cb242..329b441 100644
--- a/lib/ui/screens/offers_and_discounts/offers_and_discounts_details.dart
+++ b/lib/ui/screens/offers_and_discounts/offers_and_discounts_details.dart
@@ -1,8 +1,6 @@
import 'dart:io';
-import 'dart:typed_data';
import 'dart:ui' as ui;
-import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart';
@@ -76,7 +74,7 @@ class _OffersAndDiscountsDetailsState extends State {
: getOffersList[0].titleEn!.toText22(isBold: true, color: const Color(0xff2B353E)).center,
Html(
data: AppState().isArabic(context) ? getOffersList[0].descriptionAr! : getOffersList[0].descriptionEn ?? "",
- onLinkTap: (String? url, RenderContext context, Map attributes, _) {
+ onLinkTap: (String? url, Map attributes, _) {
launchUrl(Uri.parse(url!));
},
),
diff --git a/lib/widgets/button/default_button.dart b/lib/widgets/button/default_button.dart
index 71de642..338a13d 100644
--- a/lib/widgets/button/default_button.dart
+++ b/lib/widgets/button/default_button.dart
@@ -5,8 +5,7 @@ import 'package:mohem_flutter_app/classes/colors.dart';
extension WithContainer on Widget {
Widget get insideContainer => Container(
color: Colors.white,
- padding:
- const EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21),
+ padding: const EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21),
child: this,
);
}
@@ -76,8 +75,7 @@ class DefaultButton extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.center,
children: [
if (iconData != null) Icon(iconData, color: textColor),
- if (svgIcon != null)
- SvgPicture.asset(svgIcon ?? "", color: textColor),
+ if (svgIcon != null) SvgPicture.asset(svgIcon ?? "", color: textColor),
if (!isTextExpanded)
Padding(
padding: EdgeInsets.only(