design change

sultan_dev
Aamir Muhammad 1 year ago
parent f0e2f3d2b2
commit 9476683b51

@ -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
}

@ -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
}

@ -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

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;
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 = (
);

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

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

@ -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);
}

@ -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(

@ -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<ChatDetailScreen> {
Widget build(BuildContext context) {
params = ModalRoute.of(context)!.settings.arguments as ChatDetailedScreenParams;
data = Provider.of<ChatProviderModel>(context, listen: false);
// callPro = Provider.of<ChatCallProvider>(context, listen: false);
// callPro = Provider.of<ChatCallProvider>(context, listen: false);
if (params != null) {
data.getSingleUserChatHistory(
senderUID: AppState().chatDetails!.response!.id!.toInt(),
@ -143,7 +141,7 @@ class _ChatDetailScreenState extends State<ChatDetailScreen> {
dateTime: m.dateFormte(m.userChatHistory[i].createdDate!),
cItem: m.userChatHistory[i],
),
onRightSwipe: () {
onRightSwipe: (DragUpdateDetails) {
m.chatReply(
m.userChatHistory[i],
);

@ -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<DashboardScreen> 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<DashboardScreen> 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<DashboardScreen> 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<DashboardScreen> 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<DashboardScreen> 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<MarathonProvider>().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<MarathonProvider>().isLoading ? const MarathonBannerShimmer().paddingAll(20) : const MarathonBanner().paddingOnly(left: 21, right: 21, bottom: 21, top: 8),
Container(
// color: Colors.transparent,
child: ServicesWidget(),
),
],
),
//),
],
),
),

@ -16,12 +16,13 @@ import 'package:provider/provider.dart';
class MenusWidget extends StatelessWidget {
@override
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>(
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)),
],
)
],

@ -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(),

@ -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<LoginScreen> {
Future<void> 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<LoginScreen> {
}
}
void performLogin() async {
Utils.showLoading(context);
try {
@ -186,18 +185,21 @@ class _LoginScreenState extends State<LoginScreen> {
@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<LoginScreen> {
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<LoginScreen> {
),
),
),
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
],
),
);

@ -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<OffersAndDiscountsDetails> {
: 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<String, String> attributes, _) {
onLinkTap: (String? url, Map<String, String> attributes, _) {
launchUrl(Uri.parse(url!));
},
),

@ -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: <Widget>[
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(

Loading…
Cancel
Save