design change

sultan_dev
Aamir Muhammad 2 years ago
parent f0e2f3d2b2
commit 9476683b51

@ -34,7 +34,7 @@ apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
apply plugin: 'com.huawei.agconnect' apply plugin: 'com.huawei.agconnect'
android { android {
compileSdkVersion 33 compileSdkVersion 34
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8 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). // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "hmg.cloudSolutions.mohem" applicationId "hmg.cloudSolutions.mohem"
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 30 targetSdkVersion 34
versionCode flutterVersionCode.toInteger() versionCode flutterVersionCode.toInteger()
versionName flutterVersionName versionName flutterVersionName
} }

@ -1,5 +1,5 @@
buildscript { buildscript {
ext.kotlin_version = '1.6.0' ext.kotlin_version = '1.8.0'
repositories { repositories {
google() google()
mavenCentral() mavenCentral()
@ -7,7 +7,7 @@ buildscript {
} }
dependencies { 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 "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.8' classpath 'com.google.gms:google-services:4.3.8'
classpath 'com.huawei.agconnect:agcp:1.8.0.300' classpath 'com.huawei.agconnect:agcp:1.8.0.300'
@ -28,6 +28,6 @@ subprojects {
project.evaluationDependsOn(':app') project.evaluationDependsOn(':app')
} }
task clean(type: Delete) { tasks.register("clean", Delete) {
delete rootProject.buildDir delete rootProject.buildDir
} }

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

@ -0,0 +1,15 @@
<svg xmlns="http://www.w3.org/2000/svg" width="68.048" height="69.574" viewBox="0 0 68.048 69.574">
<g id="calendar_3_" data-name="calendar (3)" transform="translate(-5.411 -1)" opacity="0.042">
<g id="Group_7900" data-name="Group 7900" transform="translate(5.411 1)">
<path id="Path_4715" data-name="Path 4715" d="M125.7,259.819a1.577,1.577,0,0,0-1.58-1.577h-5.511a1.577,1.577,0,0,0-1.577,1.577v5.511a1.58,1.58,0,0,0,1.577,1.58h5.511a1.58,1.58,0,0,0,1.58-1.58Z" transform="translate(-101.127 -221.438)" fill="#fff"/>
<path id="Path_4716" data-name="Path 4716" d="M222.337,259.819a1.577,1.577,0,0,0-1.577-1.577h-5.511a1.577,1.577,0,0,0-1.577,1.577v5.511a1.58,1.58,0,0,0,1.577,1.58h5.511a1.577,1.577,0,0,0,1.577-1.58Z" transform="translate(-183.989 -221.438)" fill="#fff"/>
<path id="Path_4717" data-name="Path 4717" d="M318.966,259.819a1.577,1.577,0,0,0-1.577-1.577h-5.511a1.577,1.577,0,0,0-1.58,1.577v5.511a1.58,1.58,0,0,0,1.58,1.58h5.511a1.58,1.58,0,0,0,1.577-1.58Z" transform="translate(-266.845 -221.438)" fill="#fff"/>
<path id="Path_4718" data-name="Path 4718" d="M125.7,356.452a1.577,1.577,0,0,0-1.58-1.577h-5.511a1.577,1.577,0,0,0-1.577,1.577v5.508a1.577,1.577,0,0,0,1.577,1.577h5.511a1.577,1.577,0,0,0,1.58-1.577Z" transform="translate(-101.127 -304.299)" fill="#fff"/>
<path id="Path_4719" data-name="Path 4719" d="M222.337,356.452a1.577,1.577,0,0,0-1.577-1.577h-5.511a1.577,1.577,0,0,0-1.577,1.577v5.508a1.577,1.577,0,0,0,1.577,1.577h5.511a1.577,1.577,0,0,0,1.577-1.577Z" transform="translate(-183.989 -304.299)" fill="#fff"/>
<path id="Path_4720" data-name="Path 4720" d="M318.966,356.452a1.577,1.577,0,0,0-1.577-1.577h-5.511a1.577,1.577,0,0,0-1.58,1.577v5.509a1.578,1.578,0,0,0,1.58,1.577h5.511a1.577,1.577,0,0,0,1.577-1.577Z" transform="translate(-266.845 -304.299)" fill="#fff"/>
<path id="Path_4721" data-name="Path 4721" d="M67.384,54.173v8.416a6.874,6.874,0,0,1-6.89,6.867H56.15a6.916,6.916,0,0,1-6.93-6.869V54.142H29.632v8.447a6.916,6.916,0,0,1-6.93,6.87H18.356a6.874,6.874,0,0,1-6.89-6.869V54.173A6.265,6.265,0,0,0,5.411,60.4v49.32A6.267,6.267,0,0,0,11.658,116H67.212a6.274,6.274,0,0,0,6.247-6.274V60.4A6.265,6.265,0,0,0,67.384,54.173Zm-2.008,52.48a2.7,2.7,0,0,1-2.7,2.7H16.062a2.7,2.7,0,0,1-2.7-2.7V81.176a2.7,2.7,0,0,1,2.7-2.7H62.67a2.7,2.7,0,0,1,2.7,2.7v25.477Z" transform="translate(-5.411 -46.425)" fill="#fff"/>
<path id="Path_4722" data-name="Path 4722" d="M81.913,18.518h4.3a2.36,2.36,0,0,0,2.363-2.36V2.363A2.363,2.363,0,0,0,86.212,0h-4.3A2.363,2.363,0,0,0,79.55,2.363V16.158A2.36,2.36,0,0,0,81.913,18.518Z" transform="translate(-68.984 0)" fill="#fff"/>
<path id="Path_4723" data-name="Path 4723" d="M346.821,18.518h4.3a2.36,2.36,0,0,0,2.356-2.36V2.363A2.363,2.363,0,0,0,351.12,0h-4.3a2.363,2.363,0,0,0-2.363,2.363V16.158A2.36,2.36,0,0,0,346.821,18.518Z" transform="translate(-296.137 0)" fill="#fff"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

@ -3,7 +3,7 @@
archiveVersion = 1; archiveVersion = 1;
classes = { classes = {
}; };
objectVersion = 51; objectVersion = 54;
objects = { objects = {
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
@ -227,10 +227,12 @@
}; };
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
); );
inputPaths = ( inputPaths = (
"${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
); );
name = "Thin Binary"; name = "Thin Binary";
outputPaths = ( outputPaths = (
@ -241,6 +243,7 @@
}; };
9740EEB61CF901F6004384FC /* Run Script */ = { 9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
); );

@ -40,7 +40,7 @@
</Testables> </Testables>
</TestAction> </TestAction>
<LaunchAction <LaunchAction
buildConfiguration = "Debug" buildConfiguration = "Profile"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0" launchStyle = "0"

@ -91,5 +91,7 @@
<array> <array>
<string>TAG</string> <string>TAG</string>
</array> </array>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
</dict> </dict>
</plist> </plist>

@ -3,11 +3,11 @@ import 'package:flutter/cupertino.dart';
class MyColors { class MyColors {
static const Color kWhiteColor = Color(0xffffffff); static const Color kWhiteColor = Color(0xffffffff);
static const Color darkIconColor = Color(0xff28323A); 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 normalTextColor = Color(0xff5A5A5A);
static const Color lightTextColor = Color(0xffBFBFBF); static const Color lightTextColor = Color(0xffBFBFBF);
static const Color gradiantStartColor = Color(0xff259db7); // static const Color gradiantStartColor = Color(0xff259db7);
static const Color gradiantEndColor = Color(0xff33c0a5); // static const Color gradiantEndColor = Color(0xff33c0a5);
static const Color textMixColor = Color(0xff2BB8A6); static const Color textMixColor = Color(0xff2BB8A6);
static const Color backgroundColor = Color(0xffF8F8F8); static const Color backgroundColor = Color(0xffF8F8F8);
static const Color grey41Color = Color(0xff414141); static const Color grey41Color = Color(0xff414141);
@ -65,4 +65,11 @@ class MyColors {
static const Color grey71Color = Color(0xff717171); static const Color grey71Color = Color(0xff717171);
static const Color darkGrey3BColor = Color(0xff3B3B3B); static const Color darkGrey3BColor = Color(0xff3B3B3B);
static const Color lightGreyIconColor = Color(0xff919191); 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);
} }

@ -25,10 +25,18 @@ extension TrimString on String {
extension EmailValidator on String { extension EmailValidator on String {
Widget get toWidget => Text(this); 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, this,
maxLines: maxlines, 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( 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), 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, this,
textAlign: isCentered ? TextAlign.center : null, 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( Widget toText30({Color? color, bool isBold = false, bool isCentered = false}) => Text(

@ -1,5 +1,5 @@
import 'dart:async'; import 'dart:async';
import 'dart:convert';
import 'package:audio_waveforms/audio_waveforms.dart'; import 'package:audio_waveforms/audio_waveforms.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.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/call.dart';
import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.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_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_call_provider.dart';
import 'package:mohem_flutter_app/provider/chat_provider_model.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/call/chat_outgoing_call_screen.dart';
import 'package:mohem_flutter_app/ui/chat/chat_bubble.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/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/chat_app_bar_widge.dart';
import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart';
import 'package:signalr_netcore/signalr_client.dart';
import 'package:swipe_to/swipe_to.dart'; import 'package:swipe_to/swipe_to.dart';
class ChatDetailedScreenParams { class ChatDetailedScreenParams {
@ -143,7 +141,7 @@ class _ChatDetailScreenState extends State<ChatDetailScreen> {
dateTime: m.dateFormte(m.userChatHistory[i].createdDate!), dateTime: m.dateFormte(m.userChatHistory[i].createdDate!),
cItem: m.userChatHistory[i], cItem: m.userChatHistory[i],
), ),
onRightSwipe: () { onRightSwipe: (DragUpdateDetails) {
m.chatReply( m.chatReply(
m.userChatHistory[i], m.userChatHistory[i],
); );

@ -3,7 +3,6 @@ import 'dart:io';
import 'dart:ui' as ui; import 'dart:ui' as ui;
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_countdown_timer/flutter_countdown_timer.dart'; import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
@ -238,7 +237,7 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
}); });
}), }),
Image.asset("assets/images/drawer/moe_logo_full.png", width: 130, height: 45), Image.asset("assets/images/drawer/moe_logo_full.png", width: 130, height: 45),
SizedBox(width: 65), const SizedBox(width: 65),
// SvgPicture.asset( // SvgPicture.asset(
// "assets/images/announcements.svg", // "assets/images/announcements.svg",
// matchTextDirection: true, // matchTextDirection: true,
@ -264,8 +263,11 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
LocaleKeys.welcomeBack.tr().toText14(color: MyColors.grey77Color), LocaleKeys.welcomeBack.tr().toText16(color: MyColors.grey77Color),
(AppState().memberInformationList!.eMPLOYEENAME ?? "").toText24(isBold: true), (AppState().memberInformationList!.eMPLOYEENAME ?? "").toText24(
isBold: true,
letterspacing: -1.44,
),
16.height, 16.height,
Row( Row(
children: [ children: [
@ -351,10 +353,10 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
height: 45, height: 45,
padding: const EdgeInsets.only(left: 10, right: 10), padding: const EdgeInsets.only(left: 10, right: 10),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Color(0xff259EA4), color: const Color(0xff259EA4),
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(
bottomRight: AppState().isArabic(context) ? Radius.circular(0) : Radius.circular(15), bottomRight: AppState().isArabic(context) ? const Radius.circular(0) : const Radius.circular(15),
bottomLeft: AppState().isArabic(context) ? Radius.circular(15) : Radius.circular(0), 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"), child: SvgPicture.asset(model.isTimeRemainingInSeconds == 0 ? "assets/images/attendance.svg" : "assets/images/attendance.svg"),
@ -383,21 +385,29 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
), ),
if (env.dashboard.attendance) 9.width, if (env.dashboard.attendance) 9.width,
Expanded( Expanded(
child: MenusWidget(), child: Row(
), children: [
],
),
],
).paddingOnly(left: 21, right: 21, top: 7, bottom: 21),
if (env.monthlyAttendance) if (env.monthlyAttendance)
InkWell( Expanded(
child: InkWell(
child: AspectRatio(
aspectRatio: 1,
child: Container( child: Container(
width: double.infinity, width: double.infinity,
padding: EdgeInsets.all(12), padding: const EdgeInsets.all(11),
margin: EdgeInsets.symmetric(horizontal: 21), margin: const EdgeInsets.symmetric(horizontal: 0),
decoration: const BoxDecoration(
color: MyColors.bgColor,
borderRadius: BorderRadius.all(Radius.circular(15)),
),
child: Container(
decoration: const BoxDecoration( decoration: const BoxDecoration(
color: MyColors.gradiantStartColor, image: DecorationImage(
borderRadius: BorderRadius.all(Radius.circular(12)), image: AssetImage(
"assets/icons/calendar.png",
),
opacity: 1,
),
), ),
child: Row( child: Row(
children: [ children: [
@ -406,34 +416,48 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
LocaleKeys.employee_leaves_calender.tr().toText18(isBold: true, color: Colors.white), LocaleKeys.employee_leaves_calender.tr().toText16(
2.height, isBold: false,
LocaleKeys.view_your_leave_information.tr().toText12(color: Colors.white), color: Colors.white,
8.height, maxlines: 2,
Container(
decoration: BoxDecoration(
color: Colors.white.withOpacity(0.4),
borderRadius: const BorderRadius.all(Radius.circular(12)),
), ),
padding: EdgeInsets.all(8), 7.height,
child: LocaleKeys.view_details.tr().toText14(color: Colors.white), 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),
], ],
), ),
],
), ),
const Icon(
Icons.calendar_month,
color: Colors.white,
size: 80,
), ),
], ],
), ),
), ),
),
),
onTap: () { onTap: () {
Navigator.pushNamed(context, AppRoutes.monthlyAttendance); Navigator.pushNamed(context, AppRoutes.monthlyAttendance);
}, },
), ),
21.height, ),
9.width,
Expanded(child: MenusWidget()),
],
),
),
],
),
],
).paddingOnly(left: 21, right: 21, top: 7, bottom: 21),
15.height,
Visibility( Visibility(
visible: env.offersDiscount, visible: env.offersDiscount,
child: Column( child: Column(
@ -534,23 +558,27 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
], ],
), ),
), ),
Container( // Container(
width: double.infinity, // width: double.infinity,
padding: const EdgeInsets.only(top: 31), // padding: const EdgeInsets.only(top: 31),
decoration: BoxDecoration( // decoration: BoxDecoration(
color: Colors.white, // color: Colors.white,
borderRadius: const BorderRadius.only(topRight: Radius.circular(50), topLeft: Radius.circular(50)), // borderRadius: const BorderRadius.only(topRight: Radius.circular(50), topLeft: Radius.circular(50)),
border: Border.all(color: MyColors.lightGreyEDColor, width: 1), // border: Border.all(color: MyColors.lightGreyEDColor, width: 1),
), // ),
child: Column( // child:
Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
if (env.marathon) if (env.marathon)
context.watch<MarathonProvider>().isLoading ? const MarathonBannerShimmer().paddingAll(20) : const MarathonBanner().paddingOnly(left: 21, right: 21, bottom: 21, top: 8), context.watch<MarathonProvider>().isLoading ? const MarathonBannerShimmer().paddingAll(20) : const MarathonBanner().paddingOnly(left: 21, right: 21, bottom: 21, top: 8),
ServicesWidget(), Container(
], // color: Colors.transparent,
child: ServicesWidget(),
), ),
],
), ),
//),
], ],
), ),
), ),

@ -16,12 +16,13 @@ import 'package:provider/provider.dart';
class MenusWidget extends StatelessWidget { class MenusWidget extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
List<int> namesColor = [0xff125765, 0xff239D8F, 0xff2BB8A8, 0xff1D92AA]; // List<int> namesColor = [0xff125765, 0xff239D8F, 0xff2BB8A8, 0xff1D92AA];
List<int> namesColor = [0xff1C4B6D, 0xff33678D, 0xff9FB7C4, 0xff5FA5A0];
return Consumer<DashboardProviderModel>( return Consumer<DashboardProviderModel>(
builder: (cxt, data, child) { builder: (cxt, data, child) {
return GridView( 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, padding: EdgeInsets.zero,
shrinkWrap: true, shrinkWrap: true,
primary: false, primary: false,
@ -40,11 +41,11 @@ class MenusWidget extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
LocaleKeys.workList.tr().toText12(color: Colors.white), LocaleKeys.workList.tr().toText10(color: Colors.white, letterSpacing: -0.6),
Row( Row(
children: [ children: [
Expanded( 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)), 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, mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
LocaleKeys.missingSwipes.tr().toText12(color: Colors.white), LocaleKeys.missingSwipes.tr().toText10(color: Colors.white, letterSpacing: -0.6),
Row( Row(
children: [ children: [
Expanded( 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)), 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, mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
LocaleKeys.leaveBalance.tr().toText12(color: Colors.white), LocaleKeys.businessTripBalance.tr().toText10(color: Colors.white, letterSpacing: -0.6),
Row( Row(
children: [ children: [
Expanded( 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)), 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), ).paddingOnly(left: 10, right: 10, bottom: 6, top: 6),
).onPress(() { ).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 data.isLeaveTicketBalanceLoading
? MenuShimmer().onPress(() { ? MenuShimmer().onPress(() {
@ -115,18 +117,18 @@ class MenusWidget extends StatelessWidget {
}) })
: Container( : Container(
decoration: BoxDecoration( decoration: BoxDecoration(
color: Color(namesColor[2]), color: Color(namesColor[1]),
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
), ),
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
LocaleKeys.businessTripBalance.tr().toText12(color: Colors.white), LocaleKeys.leaveBalance.tr().toText10(color: Colors.white, letterSpacing: -0.6),
Row( Row(
children: [ children: [
Expanded( 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)), 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), ).paddingOnly(left: 10, right: 10, bottom: 6, top: 6),
).onPress(() { ).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"));
}), }),
if (env.dashboard.ticketBalance) if (env.dashboard.ticketBalance)
data.isLeaveTicketBalanceLoading data.isLeaveTicketBalanceLoading
@ -153,11 +152,11 @@ class MenusWidget extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
LocaleKeys.ticketBalance.tr().toText12(color: Colors.white), LocaleKeys.ticketBalance.tr().toText10(color: Colors.white, letterSpacing: -0.6),
Row( Row(
children: [ children: [
Expanded( 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)), 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, mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
LocaleKeys.myRequest.tr().toText12(color: Colors.white), LocaleKeys.myRequest.tr().toText10(color: Colors.white, letterSpacing: -0.6),
Row( Row(
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
// Expanded( // Expanded(
// child: data.ticketBalance.toStringAsFixed(2).toText16(color: Colors.white, isBold: true, maxlines: 1), // 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)),
], ],
) )
], ],

@ -37,15 +37,21 @@ class ServicesWidget extends StatelessWidget {
return data.isServicesMenusLoading return data.isServicesMenusLoading
? whileLoading() ? whileLoading()
: ListView.separated( : ListView.separated(
padding: const EdgeInsets.only(top: 0), padding: const EdgeInsets.only(top: 0, bottom: 0),
itemBuilder: (context, parentIndex) { itemBuilder: (context, parentIndex) {
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [
if (parentIndex == 0)
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
data.homeMenus![parentIndex].menuEntry.prompt!.toSectionHeading().paddingOnly(left: 21, right: 21), data.homeMenus![parentIndex].menuEntry.prompt!.toSectionHeading().paddingOnly(left: 21, right: 21),
SizedBox( Container(
height: 105 + 26, height: 105 + 26,
width: double.infinity,
// color: Colors.white.withOpacity(0.4),
child: ListView.separated( child: ListView.separated(
shrinkWrap: true, shrinkWrap: true,
physics: const BouncingScrollPhysics(), physics: const BouncingScrollPhysics(),
@ -63,8 +69,8 @@ class ServicesWidget extends StatelessWidget {
boxShadow: [ boxShadow: [
BoxShadow( BoxShadow(
color: const Color(0xff000000).withOpacity(.05), color: const Color(0xff000000).withOpacity(.05),
blurRadius: 26, blurRadius: 18,
offset: const Offset(0, -3), offset: const Offset(0, 0),
), ),
], ],
), ),
@ -80,7 +86,7 @@ class ServicesWidget extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
Expanded( Expanded(
child: data.homeMenus![parentIndex].menuEntiesList[index].prompt!.toText10(isBold: true), 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)), RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg").paddingOnly(bottom: 4)),
], ],
@ -89,17 +95,93 @@ class ServicesWidget extends StatelessWidget {
).paddingOnly(left: 10, right: 10, bottom: 10, top: 12), ).paddingOnly(left: 10, right: 10, bottom: 10, top: 12),
).onPress(() { ).onPress(() {
handleOnPress(context, data.homeMenus![parentIndex].menuEntiesList[index]); handleOnPress(context, data.homeMenus![parentIndex].menuEntiesList[index]);
}), }));
);
}, },
separatorBuilder: (BuildContext cxt, int index) => 9.width, separatorBuilder: (BuildContext cxt, int index) => 9.width,
itemCount: data.homeMenus![parentIndex].menuEntiesList.length), 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) { separatorBuilder: (BuildContext context, int index) {
return 12.height; if (index == 0) return SizedBox();
return Container(
color: Colors.white,
height: 7,
);
}, },
shrinkWrap: true, shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(), physics: const NeverScrollableScrollPhysics(),

@ -4,7 +4,6 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:easy_localization/src/public_ext.dart'; import 'package:easy_localization/src/public_ext.dart';
import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
@ -142,7 +141,8 @@ class _LoginScreenState extends State<LoginScreen> {
Future<void> checkPrefs() async { Future<void> checkPrefs() async {
String username = await Utils.getStringFromPrefs(SharedPrefsConsts.username); 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 password = await Utils.getStringFromPrefs(SharedPrefsConsts.password);
// String firebaseToken = await Utils.getStringFromPrefs(SharedPrefsConsts.firebaseToken); // String firebaseToken = await Utils.getStringFromPrefs(SharedPrefsConsts.firebaseToken);
// print("firebaseToken:$firebaseToken"); // print("firebaseToken:$firebaseToken");
@ -152,7 +152,6 @@ class _LoginScreenState extends State<LoginScreen> {
} }
} }
void performLogin() async { void performLogin() async {
Utils.showLoading(context); Utils.showLoading(context);
try { try {
@ -186,18 +185,21 @@ class _LoginScreenState extends State<LoginScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
username.text = "1002528733";
password.text = "moe123456";
if (isAppOpenBySystem == null) { if (isAppOpenBySystem == null) {
isAppOpenBySystem = (ModalRoute.of(context)!.settings.arguments ?? true) as bool; isAppOpenBySystem = (ModalRoute.of(context)!.settings.arguments ?? true) as bool;
if (!kReleaseMode) { if (!kReleaseMode) {
// username.text = "1100313582"; // username.text = "1100313582";
// password.text = "moe123456"; // password.text = "moe123456";
// username.text = "1002528733";
// password.text = "moe123456";
username.text = "1024056812"; username.text = "1024056812";
password.text = "moe123456"; password.text = "moe123456";
// username.text = "1063437063";
// password.text = "moe123456";
// 1) Normal user : // 1) Normal user :
// Username: 1100313582 // Username: 1100313582
// Employee # and Name: 210624 - شهد خالد ابراهيم الشامخ // Employee # and Name: 210624 - شهد خالد ابراهيم الشامخ
@ -233,8 +235,8 @@ class _LoginScreenState extends State<LoginScreen> {
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Image.asset("assets/images/drawer/moe_logo.png", width: 60, height: 60), Image.asset("assets/images/drawer/moe_logo.png", width: 60, height: 60),
Row(
Row(children: [ children: [
LocaleKeys.english.tr().toText14(color: AppState().isArabic(context) ? null : MyColors.textMixColor).onPress(() { LocaleKeys.english.tr().toText14(color: AppState().isArabic(context) ? null : MyColors.textMixColor).onPress(() {
context.setLocale(const Locale("en", "US")); context.setLocale(const Locale("en", "US"));
}), }),
@ -247,7 +249,8 @@ class _LoginScreenState extends State<LoginScreen> {
LocaleKeys.arabic.tr().toText14(color: !AppState().isArabic(context) ? null : MyColors.textMixColor).onPress(() { LocaleKeys.arabic.tr().toText14(color: !AppState().isArabic(context) ? null : MyColors.textMixColor).onPress(() {
context.setLocale(const Locale("ar", "SA")); context.setLocale(const Locale("ar", "SA"));
}), }),
],) ],
)
], ],
), ),
Expanded( Expanded(
@ -285,10 +288,14 @@ class _LoginScreenState extends State<LoginScreen> {
), ),
), ),
), ),
DefaultButton(LocaleKeys.login.tr(), () async { DefaultButton(
LocaleKeys.login.tr(),
() async {
SystemChannels.textInput.invokeMethod('TextInput.hide'); SystemChannels.textInput.invokeMethod('TextInput.hide');
performLogin(); performLogin();
}).insideContainer },
color: MyColors.moeLoginColor,
).insideContainer
], ],
), ),
); );

@ -1,8 +1,6 @@
import 'dart:io'; import 'dart:io';
import 'dart:typed_data';
import 'dart:ui' as ui; import 'dart:ui' as ui;
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
@ -76,7 +74,7 @@ class _OffersAndDiscountsDetailsState extends State<OffersAndDiscountsDetails> {
: getOffersList[0].titleEn!.toText22(isBold: true, color: const Color(0xff2B353E)).center, : getOffersList[0].titleEn!.toText22(isBold: true, color: const Color(0xff2B353E)).center,
Html( Html(
data: AppState().isArabic(context) ? getOffersList[0].descriptionAr! : getOffersList[0].descriptionEn ?? "", data: AppState().isArabic(context) ? getOffersList[0].descriptionAr! : getOffersList[0].descriptionEn ?? "",
onLinkTap: (String? url, RenderContext context, Map<String, String> attributes, _) { onLinkTap: (String? url, Map<String, String> attributes, _) {
launchUrl(Uri.parse(url!)); launchUrl(Uri.parse(url!));
}, },
), ),

@ -5,8 +5,7 @@ import 'package:mohem_flutter_app/classes/colors.dart';
extension WithContainer on Widget { extension WithContainer on Widget {
Widget get insideContainer => Container( Widget get insideContainer => Container(
color: Colors.white, color: Colors.white,
padding: padding: const EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21),
const EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21),
child: this, child: this,
); );
} }
@ -76,8 +75,7 @@ class DefaultButton extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
if (iconData != null) Icon(iconData, color: textColor), if (iconData != null) Icon(iconData, color: textColor),
if (svgIcon != null) if (svgIcon != null) SvgPicture.asset(svgIcon ?? "", color: textColor),
SvgPicture.asset(svgIcon ?? "", color: textColor),
if (!isTextExpanded) if (!isTextExpanded)
Padding( Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(

Loading…
Cancel
Save