Merge branch 'development_sikander' into 'master'

Development sikander

See merge request mirza.shafique/mohem_flutter_app!39
faiz_marathon_signalR_critical
Sikander Saleem 2 years ago
commit 04b7ef894f

@ -9,6 +9,13 @@
# packages, and plugins designed to encourage good coding practices. # packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml include: package:flutter_lints/flutter.yaml
analyzer:
errors:
always_use_package_imports: error
camel_case_types: error
always_declare_return_types: error
linter: linter:
# The lint rules applied to this project can be customized in the # The lint rules applied to this project can be customized in the
# section below to disable rules from the `package:flutter_lints/flutter.yaml` # section below to disable rules from the `package:flutter_lints/flutter.yaml`
@ -25,6 +32,13 @@ linter:
always_specify_types: true always_specify_types: true
always_declare_return_types: true always_declare_return_types: true
always_use_package_imports: true always_use_package_imports: true
avoid_unnecessary_containers: true
unnecessary_this: true
unnecessary_new: true
camel_case_types: true
sort_child_properties_last: true
camel_case_extensions : true
require_trailing_commas: true
avoid_empty_else: true avoid_empty_else: true
avoid_annotating_with_dynamic: true avoid_annotating_with_dynamic: true
# avoid_print: false # Uncomment to disable the `avoid_print` rule # avoid_print: false # Uncomment to disable the `avoid_print` rule

@ -7,8 +7,7 @@ import 'package:http/http.dart';
import 'package:http/io_client.dart'; import 'package:http/io_client.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/exceptions/api_exception.dart'; import 'package:mohem_flutter_app/exceptions/api_exception.dart';
import 'package:mohem_flutter_app/main.dart';
import '../main.dart';
typedef FactoryConstructor<U> = U Function(dynamic); typedef FactoryConstructor<U> = U Function(dynamic);

@ -1,17 +1,13 @@
import 'dart:async'; import 'dart:async';
import 'package:mohem_flutter_app/api/api_client.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/consts.dart';
import 'package:mohem_flutter_app/models/basic_member_information_model.dart';
import 'package:mohem_flutter_app/models/check_mobile_app_version_model.dart';
import 'package:mohem_flutter_app/models/dashboard/get_attendance_tracking_list_model.dart'; import 'package:mohem_flutter_app/models/dashboard/get_attendance_tracking_list_model.dart';
import 'package:mohem_flutter_app/models/dashboard/itg_forms_model.dart'; import 'package:mohem_flutter_app/models/dashboard/itg_forms_model.dart';
import 'package:mohem_flutter_app/models/generic_response_model.dart'; import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/models/member_login_list_model.dart';
import 'package:uuid/uuid.dart'; import 'package:uuid/uuid.dart';
import 'api_client.dart';
class DashboardApiClient { class DashboardApiClient {
static final DashboardApiClient _instance = DashboardApiClient._internal(); static final DashboardApiClient _instance = DashboardApiClient._internal();

@ -10,7 +10,7 @@ import 'package:mohem_flutter_app/models/eit/get_eit_transaction_model.dart';
import 'package:mohem_flutter_app/models/generic_response_model.dart'; import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/models/member_login_list_model.dart'; import 'package:mohem_flutter_app/models/member_login_list_model.dart';
import 'api_client.dart'; import 'package:mohem_flutter_app/api/api_client.dart';
class EITApiClient { class EITApiClient {
static final EITApiClient _instance = EITApiClient._internal(); static final EITApiClient _instance = EITApiClient._internal();
@ -24,7 +24,7 @@ class EITApiClient {
Map<String, dynamic> postParams = {'P_FUNCTION_NAME': functionName, "P_MENU_TYPE": "E", "P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1}; Map<String, dynamic> postParams = {'P_FUNCTION_NAME': functionName, "P_MENU_TYPE": "E", "P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1};
postParams.addAll(AppState().postParamsJson); postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) { return await ApiClient().postJsonForObject((json) {
List<CollectionTransaction>? responseData = GET_EIT_Transactions_Model.fromJson(json['GetEITTransactionList'][0]).collectionTransaction; List<CollectionTransaction>? responseData = GetEitTransactionsModel.fromJson(json['GetEITTransactionList'][0]).collectionTransaction;
return responseData; return responseData;
}, url, postParams); }, url, postParams);
} }

@ -8,7 +8,7 @@ import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/models/get_mobile_login_info_list_model.dart'; import 'package:mohem_flutter_app/models/get_mobile_login_info_list_model.dart';
import 'package:mohem_flutter_app/models/member_login_list_model.dart'; import 'package:mohem_flutter_app/models/member_login_list_model.dart';
import 'api_client.dart'; import 'package:mohem_flutter_app/api/api_client.dart';
class LoginApiClient { class LoginApiClient {
static final LoginApiClient _instance = LoginApiClient._internal(); static final LoginApiClient _instance = LoginApiClient._internal();

@ -8,7 +8,7 @@ import 'package:mohem_flutter_app/models/get_day_hours_type_details_list_model.d
import 'package:mohem_flutter_app/models/get_mobile_login_info_list_model.dart'; import 'package:mohem_flutter_app/models/get_mobile_login_info_list_model.dart';
import 'package:mohem_flutter_app/models/get_schedule_shifts_details_list_model.dart'; import 'package:mohem_flutter_app/models/get_schedule_shifts_details_list_model.dart';
import 'package:mohem_flutter_app/models/get_time_card_summary_list_model.dart'; import 'package:mohem_flutter_app/models/get_time_card_summary_list_model.dart';
import 'api_client.dart'; import 'package:mohem_flutter_app/api/api_client.dart';
// todo '@fatima' change file name according to structure // todo '@fatima' change file name according to structure
class MonthlyAttendanceApiClient { class MonthlyAttendanceApiClient {

@ -9,8 +9,7 @@ import 'package:mohem_flutter_app/models/mowadhafhi/get_section_topics.dart';
import 'package:mohem_flutter_app/models/mowadhafhi/get_ticket_details.dart'; import 'package:mohem_flutter_app/models/mowadhafhi/get_ticket_details.dart';
import 'package:mohem_flutter_app/models/mowadhafhi/get_ticket_transactions.dart'; import 'package:mohem_flutter_app/models/mowadhafhi/get_ticket_transactions.dart';
import 'package:mohem_flutter_app/models/mowadhafhi/get_ticket_types.dart'; import 'package:mohem_flutter_app/models/mowadhafhi/get_ticket_types.dart';
import 'package:mohem_flutter_app/models/mowadhafhi/get_tickets_list.dart';
import '../../models/mowadhafhi/get_tickets_list.dart';
class MowadhafhiApiClient { class MowadhafhiApiClient {
static final MowadhafhiApiClient _instance = MowadhafhiApiClient._internal(); static final MowadhafhiApiClient _instance = MowadhafhiApiClient._internal();
@ -115,7 +114,7 @@ class MowadhafhiApiClient {
String url = "${ApiConsts.cocRest}Mohemm_ITG_CreateTicketMobile"; String url = "${ApiConsts.cocRest}Mohemm_ITG_CreateTicketMobile";
Map<String, dynamic> postParams = { Map<String, dynamic> postParams = {
"EmployeeNumber": AppState().memberInformationList?.eMPLOYEENUMBER, "EmployeeNumber": AppState().memberInformationList?.eMPLOYEENUMBER,
"ItgImageCollList" : attachmentList, "ItgImageCollList": attachmentList,
"channelId": 3, "channelId": 3,
"departmentId": departmentID, "departmentId": departmentID,
"description": description, "description": description,

@ -9,7 +9,7 @@ import 'package:mohem_flutter_app/models/get_eit_transaction_list_model.dart';
import 'package:mohem_flutter_app/models/start_eit_approval_process_model.dart'; import 'package:mohem_flutter_app/models/start_eit_approval_process_model.dart';
import 'package:mohem_flutter_app/models/submit_eit_transaction_list_model.dart'; import 'package:mohem_flutter_app/models/submit_eit_transaction_list_model.dart';
import 'api_client.dart'; import 'package:mohem_flutter_app/api/api_client.dart';
class MyAttendanceApiClient { class MyAttendanceApiClient {
static final MyAttendanceApiClient _instance = MyAttendanceApiClient._internal(); static final MyAttendanceApiClient _instance = MyAttendanceApiClient._internal();

@ -9,7 +9,7 @@ import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart'; import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart';
import 'package:mohem_flutter_app/models/get_employee_phones_model.dart'; import 'package:mohem_flutter_app/models/get_employee_phones_model.dart';
import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart'; import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart';
import 'api_client.dart'; import 'package:mohem_flutter_app/api/api_client.dart';
class ProfileApiClient { class ProfileApiClient {
static final ProfileApiClient _instance = ProfileApiClient._internal(); static final ProfileApiClient _instance = ProfileApiClient._internal();

@ -20,17 +20,14 @@ import 'package:mohem_flutter_app/models/get_stamp_ns_notification_body_list_mod
import 'package:mohem_flutter_app/models/itg_forms_models/itg_request_model.dart'; import 'package:mohem_flutter_app/models/itg_forms_models/itg_request_model.dart';
import 'package:mohem_flutter_app/models/member_information_list_model.dart'; import 'package:mohem_flutter_app/models/member_information_list_model.dart';
import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_model.dart'; import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/get_favorite_replacements_model.dart';
import 'package:mohem_flutter_app/models/worklist/hr/eit_otification_body_model.dart';
import 'package:mohem_flutter_app/models/worklist/hr/get_basic_det_ntf_body_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/hr/get_contact_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/hr/get_phones_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/hr/get_phones_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/replacement_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/replacement_list_model.dart';
import 'package:mohem_flutter_app/models/worklist_response_model.dart'; import 'package:mohem_flutter_app/models/worklist_response_model.dart';
import '../../models/worklist/hr/eit_otification_body_model.dart';
import '../../models/worklist/get_favorite_replacements_model.dart';
import '../../models/worklist/hr/get_basic_det_ntf_body_list_model.dart';
import '../../models/worklist/hr/get_contact_notification_body_list_model.dart';
import '../../models/worklist/hr/get_phones_notification_body_list_model.dart';
import '../../models/worklist/hr/get_phones_notification_body_list_model.dart';
class WorkListApiClient { class WorkListApiClient {
static final WorkListApiClient _instance = WorkListApiClient._internal(); static final WorkListApiClient _instance = WorkListApiClient._internal();

@ -1,7 +1,7 @@
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
class AppPermissions{ class AppPermissions{
static location(Function(bool) completion) { static void location(Function(bool) completion) {
Permission.location.isGranted.then((isGranted){ Permission.location.isGranted.then((isGranted){
if(!isGranted){ if(!isGranted){
Permission.location.request().then((granted){ Permission.location.request().then((granted){
@ -13,7 +13,7 @@ class AppPermissions{
} }
static checkAll(Function(bool) completion){ static void checkAll(Function(bool) completion){
[ [
Permission.location Permission.location
].request().then((value){ ].request().then((value){

@ -133,7 +133,7 @@ class DateUtil {
/// get month by /// get month by
/// [month] convert month number in to month name /// [month] convert month number in to month name
static getMonth(int month) { static String getMonth(int month) {
switch (month) { switch (month) {
case 1: case 1:
return "January"; return "January";
@ -159,12 +159,14 @@ class DateUtil {
return "November"; return "November";
case 12: case 12:
return "December"; return "December";
default:
return "";
} }
} }
/// get month by /// get month by
/// [month] convert month number in to month name in Arabic /// [month] convert month number in to month name in Arabic
static getMonthArabic(int month) { static String getMonthArabic(int month) {
switch (month) { switch (month) {
case 1: case 1:
return "يناير"; return "يناير";
@ -190,10 +192,12 @@ class DateUtil {
return " نوفمبر"; return " نوفمبر";
case 12: case 12:
return "ديسمبر"; return "ديسمبر";
default:
return "";
} }
} }
static getMonthByName(String month) { static int getMonthByName(String month) {
switch (month.toLowerCase()) { switch (month.toLowerCase()) {
case 'january': case 'january':
return 1; return 1;
@ -219,6 +223,8 @@ class DateUtil {
return 11; return 11;
case 'december': case 'december':
return 12; return 12;
default:
return 0;
} }
} }
@ -234,7 +240,7 @@ class DateUtil {
/// get month by /// get month by
/// [weekDay] convert week day in int to week day name /// [weekDay] convert week day in int to week day name
static getWeekDay(int weekDay) { static String getWeekDay(int weekDay) {
switch (weekDay) { switch (weekDay) {
case 1: case 1:
return "Monday"; return "Monday";
@ -250,12 +256,14 @@ class DateUtil {
return "Saturday "; return "Saturday ";
case 7: case 7:
return "Sunday"; return "Sunday";
default:
return "";
} }
} }
/// get month by /// get month by
/// [weekDay] convert week day in int to week day name arabic /// [weekDay] convert week day in int to week day name arabic
static getWeekDayArabic(int weekDay) { static String getWeekDayArabic(int weekDay) {
switch (weekDay) { switch (weekDay) {
case 1: case 1:
return "الاثنين"; return "الاثنين";
@ -271,10 +279,12 @@ class DateUtil {
return "السبت "; return "السبت ";
case 7: case 7:
return "الاحد"; return "الاحد";
default:
return "";
} }
} }
static getWeekDayEnglish(int weekDay) { static String getWeekDayEnglish(int weekDay) {
switch (weekDay) { switch (weekDay) {
case 1: case 1:
return "Monday"; return "Monday";
@ -290,6 +300,8 @@ class DateUtil {
return "Saturday "; return "Saturday ";
case 7: case 7:
return "Sunday"; return "Sunday";
default:
return "";
} }
} }
@ -415,7 +427,7 @@ class DateUtil {
return DateFormat(formattedString).format(dateTime); return DateFormat(formattedString).format(dateTime);
} }
static convertISODateToJsonDate(String isoDate) { static String convertISODateToJsonDate(String isoDate) {
return "/Date(" + DateFormat('mm-dd-yyy').parse(isoDate).millisecondsSinceEpoch.toString() + ")/"; return "/Date(" + DateFormat('mm-dd-yyy').parse(isoDate).millisecondsSinceEpoch.toString() + ")/";
} }

@ -136,20 +136,20 @@ class Utils {
).center; ).center;
} }
static getPostBytes(img) { static Uint8List getPostBytes(img) {
try { try {
var b64 = img.replaceFirst('data:image/png;base64,', ''); var b64 = img.replaceFirst('data:image/png;base64,', '');
if (img != null && Utils.isBase64(b64)) return Utils.dataFromBase64String(b64); if (img != null && Utils.isBase64(b64)) return Utils.dataFromBase64String(b64);
} catch (e) {} } catch (e) {}
return null; return Uint8List.fromList([]);
} }
static getBase64FromJpeg(img) { static String getBase64FromJpeg(img) {
try { try {
var b64 = img.replaceFirst('data:image/jpeg;base64,', ''); var b64 = img.replaceFirst('data:image/jpeg;base64,', '');
return b64; return b64;
} catch (e) {} } catch (e) {}
return null; return "";
} }
static bool isBase64(String str) { static bool isBase64(String str) {
@ -180,7 +180,7 @@ class Utils {
); );
} }
static Widget tableColumnValue(String text, { bool isCapitable = true, bool alignCenter = false}) { static Widget tableColumnValue(String text, {bool isCapitable = true, bool alignCenter = false}) {
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,

@ -24,6 +24,7 @@ import 'package:mohem_flutter_app/ui/screens/announcements/announcements.dart';
// import 'package:mohem_flutter_app/ui/my_attendance/work_from_home_screen.dart'; // import 'package:mohem_flutter_app/ui/my_attendance/work_from_home_screen.dart';
import 'package:mohem_flutter_app/ui/screens/eit/add_eit.dart'; import 'package:mohem_flutter_app/ui/screens/eit/add_eit.dart';
import 'package:mohem_flutter_app/ui/screens/mowadhafhi/mowadhafhi_home.dart';
import 'package:mohem_flutter_app/ui/screens/mowadhafhi/mowadhafhi_hr_request.dart'; import 'package:mohem_flutter_app/ui/screens/mowadhafhi/mowadhafhi_hr_request.dart';
import 'package:mohem_flutter_app/ui/screens/mowadhafhi/request_details.dart'; import 'package:mohem_flutter_app/ui/screens/mowadhafhi/request_details.dart';
import 'package:mohem_flutter_app/ui/screens/pending_transactions/pending_transactions.dart'; import 'package:mohem_flutter_app/ui/screens/pending_transactions/pending_transactions.dart';
@ -35,8 +36,6 @@ import 'package:mohem_flutter_app/ui/work_list/itg_detail_screen.dart';
import 'package:mohem_flutter_app/ui/work_list/work_list_screen.dart'; import 'package:mohem_flutter_app/ui/work_list/work_list_screen.dart';
import 'package:mohem_flutter_app/ui/work_list/worklist_detail_screen.dart'; import 'package:mohem_flutter_app/ui/work_list/worklist_detail_screen.dart';
import '../ui/screens/mowadhafhi/mowadhafhi_home.dart';
class AppRoutes { class AppRoutes {
static const String splash = "/splash"; static const String splash = "/splash";
static const String registerSelection = "/registerSelection"; static const String registerSelection = "/registerSelection";

@ -218,12 +218,12 @@ class OtpDialog {
} }
} }
static getSignature() async { // static getSignature() async {
// if (Platform.isAndroid) { // // if (Platform.isAndroid) {
// return await SmsRetriever.getAppSignature(); // // return await SmsRetriever.getAppSignature();
// } else { // // } else {
// return null; // // return null;
// } // // }
} // }
} }

@ -23,11 +23,12 @@ extension EmailValidator on String {
Widget toText11({Color? color, bool isUnderLine = false, bool isBold = false}) => Text( Widget toText11({Color? color, bool isUnderLine = false, bool isBold = false}) => Text(
this, this,
style: TextStyle( style: TextStyle(
fontSize: 11, fontSize: 11,
fontWeight: isBold ? FontWeight.bold : FontWeight.w600, fontWeight: isBold ? FontWeight.bold : FontWeight.w600,
color: color ?? MyColors.darkTextColor, color: color ?? MyColors.darkTextColor,
letterSpacing: -0.33, letterSpacing: -0.33,
decoration: isUnderLine ? TextDecoration.underline : null), decoration: isUnderLine ? TextDecoration.underline : null,
),
); );
Widget toText12({Color? color, bool isUnderLine = false, bool isBold = false, bool isCenter = false, int maxLine = 0}) => Text( Widget toText12({Color? color, bool isUnderLine = false, bool isBold = false, bool isCenter = false, int maxLine = 0}) => Text(
@ -35,11 +36,12 @@ extension EmailValidator on String {
textAlign: isCenter ? TextAlign.center : null, textAlign: isCenter ? TextAlign.center : null,
maxLines: (maxLine > 0) ? maxLine : null, maxLines: (maxLine > 0) ? maxLine : null,
style: TextStyle( style: TextStyle(
fontSize: 12, fontSize: 12,
fontWeight: isBold ? FontWeight.bold : FontWeight.w600, fontWeight: isBold ? FontWeight.bold : FontWeight.w600,
color: color ?? MyColors.darkTextColor, color: color ?? MyColors.darkTextColor,
letterSpacing: -0.72, letterSpacing: -0.72,
decoration: isUnderLine ? TextDecoration.underline : null), decoration: isUnderLine ? TextDecoration.underline : null,
),
); );
Widget toText13({Color? color, bool isUnderLine = false}) => Text( Widget toText13({Color? color, bool isUnderLine = false}) => Text(
@ -52,7 +54,7 @@ extension EmailValidator on String {
style: TextStyle(color: color ?? MyColors.darkTextColor, fontSize: 14, letterSpacing: -0.48, fontWeight: isBold ? FontWeight.bold : FontWeight.w600), style: TextStyle(color: color ?? MyColors.darkTextColor, fontSize: 14, letterSpacing: -0.48, fontWeight: isBold ? FontWeight.bold : FontWeight.w600),
); );
Widget toText16({Color? color, bool isBold = false,int? maxlines}) => Text( Widget toText16({Color? color, bool isBold = false, int? maxlines}) => Text(
this, this,
maxLines: maxlines, maxLines: maxlines,
style: TextStyle(color: color ?? MyColors.darkTextColor, fontSize: 16, letterSpacing: -0.64, fontWeight: isBold ? FontWeight.bold : FontWeight.w600), style: TextStyle(color: color ?? MyColors.darkTextColor, fontSize: 16, letterSpacing: -0.64, fontWeight: isBold ? FontWeight.bold : FontWeight.w600),
@ -131,7 +133,7 @@ extension EmailValidator on String {
return "${dates[2]} ${getMonth(int.parse(dates[1]))} ${dates[0]} ${DateFormat('hh:mm a').format(DateFormat('hh:mm:ss').parse(time))}"; return "${dates[2]} ${getMonth(int.parse(dates[1]))} ${dates[0]} ${DateFormat('hh:mm a').format(DateFormat('hh:mm:ss').parse(time))}";
} }
getMonth(int month) { String getMonth(int month) {
switch (month) { switch (month) {
case 1: case 1:
return "January"; return "January";
@ -157,6 +159,8 @@ extension EmailValidator on String {
return "November"; return "November";
case 12: case 12:
return "December"; return "December";
default:
return "";
} }
} }
} }

@ -21,8 +21,8 @@ extension WidgetExtensions on Widget {
baseColor: Color(0xffe8eff0), baseColor: Color(0xffe8eff0),
highlightColor: Colors.white, highlightColor: Colors.white,
child: Container( child: Container(
child: this,
color: Colors.white, color: Colors.white,
child: this,
), ),
) )
: Container( : Container(

@ -5,20 +5,16 @@ import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:logger/logger.dart'; import 'package:logger/logger.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/generated/codegen_loader.g.dart'; import 'package:mohem_flutter_app/generated/codegen_loader.g.dart';
import 'package:mohem_flutter_app/models/post_params_model.dart'; import 'package:mohem_flutter_app/models/post_params_model.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/provider/eit_provider_model.dart'; import 'package:mohem_flutter_app/provider/eit_provider_model.dart';
import 'package:mohem_flutter_app/theme/app_theme.dart'; import 'package:mohem_flutter_app/theme/app_theme.dart';
import 'package:mohem_flutter_app/widgets/nfc/nfc_reader_sheet.dart';
import 'package:month_year_picker/month_year_picker.dart'; import 'package:month_year_picker/month_year_picker.dart';
import 'package:nfc_manager/nfc_manager.dart';
import 'package:nfc_manager/platform_tags.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:sizer/sizer.dart'; import 'package:sizer/sizer.dart';
import 'config/routes.dart';
var logger = Logger( var logger = Logger(
// filter: null, // Use the default LogFilter (-> only log in debug mode) // filter: null, // Use the default LogFilter (-> only log in debug mode)
printer: PrettyPrinter(lineLength: 0), // Use the PrettyPrinter to format and print log printer: PrettyPrinter(lineLength: 0), // Use the PrettyPrinter to format and print log

@ -1,9 +1,9 @@
class GET_EIT_Transactions_Model { class GetEitTransactionsModel {
List<CollectionTransaction>? collectionTransaction; List<CollectionTransaction>? collectionTransaction;
GET_EIT_Transactions_Model({this.collectionTransaction}); GetEitTransactionsModel({this.collectionTransaction});
GET_EIT_Transactions_Model.fromJson(Map<String, dynamic> json) { GetEitTransactionsModel.fromJson(Map<String, dynamic> json) {
if (json['Collection_Transaction'] != null) { if (json['Collection_Transaction'] != null) {
collectionTransaction = <CollectionTransaction>[]; collectionTransaction = <CollectionTransaction>[];
json['Collection_Transaction'].forEach((v) { json['Collection_Transaction'].forEach((v) {

@ -1,5 +1,12 @@
import 'package:mohem_flutter_app/models/add_att_success_list_model.dart'; import 'package:mohem_flutter_app/models/add_att_success_list_model.dart';
import 'package:mohem_flutter_app/models/add_attachment_list_model.dart'; import 'package:mohem_flutter_app/models/add_attachment_list_model.dart';
import 'package:mohem_flutter_app/models/basic_member_information_model.dart';
import 'package:mohem_flutter_app/models/dashboard/get_accrual_balances_list_model.dart';
import 'package:mohem_flutter_app/models/dashboard/get_attendance_tracking_list_model.dart';
import 'package:mohem_flutter_app/models/dashboard/get_open_missing_swipes_list_model.dart';
import 'package:mohem_flutter_app/models/dashboard/get_open_notifications_list.dart';
import 'package:mohem_flutter_app/models/dashboard/list_menu.dart';
import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart';
import 'package:mohem_flutter_app/models/get_absence_collection_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/get_absence_collection_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/get_action_history_list_model.dart'; import 'package:mohem_flutter_app/models/get_action_history_list_model.dart';
import 'package:mohem_flutter_app/models/get_approves_list_model.dart'; import 'package:mohem_flutter_app/models/get_approves_list_model.dart';
@ -15,6 +22,7 @@ import 'package:mohem_flutter_app/models/get_employee_phones_model.dart';
import 'package:mohem_flutter_app/models/get_item_creation_ntf_body_list_model.dart'; import 'package:mohem_flutter_app/models/get_item_creation_ntf_body_list_model.dart';
import 'package:mohem_flutter_app/models/get_mo_Item_history_list_model.dart'; import 'package:mohem_flutter_app/models/get_mo_Item_history_list_model.dart';
import 'package:mohem_flutter_app/models/get_mo_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/get_mo_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/get_mobile_login_info_list_model.dart';
import 'package:mohem_flutter_app/models/get_notification_buttons_list_model.dart'; import 'package:mohem_flutter_app/models/get_notification_buttons_list_model.dart';
import 'package:mohem_flutter_app/models/get_po_Item_history_list_model.dart'; import 'package:mohem_flutter_app/models/get_po_Item_history_list_model.dart';
import 'package:mohem_flutter_app/models/get_po_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/get_po_notification_body_list_model.dart';
@ -23,6 +31,7 @@ import 'package:mohem_flutter_app/models/get_schedule_shifts_details_list_model.
import 'package:mohem_flutter_app/models/get_stamp_ms_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/get_stamp_ms_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/get_stamp_ns_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/get_stamp_ns_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/get_time_card_summary_list_model.dart'; import 'package:mohem_flutter_app/models/get_time_card_summary_list_model.dart';
import 'package:mohem_flutter_app/models/member_information_list_model.dart';
import 'package:mohem_flutter_app/models/member_login_list_model.dart'; import 'package:mohem_flutter_app/models/member_login_list_model.dart';
import 'package:mohem_flutter_app/models/monthly_pay_slip/get_deductions_List_model.dart'; import 'package:mohem_flutter_app/models/monthly_pay_slip/get_deductions_List_model.dart';
import 'package:mohem_flutter_app/models/monthly_pay_slip/get_earnings_list_model.dart'; import 'package:mohem_flutter_app/models/monthly_pay_slip/get_earnings_list_model.dart';
@ -41,6 +50,7 @@ import 'package:mohem_flutter_app/models/notification_action_model.dart';
import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_model.dart'; import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_model.dart';
import 'package:mohem_flutter_app/models/pending_transactions/get_pending_transactions_details.dart'; import 'package:mohem_flutter_app/models/pending_transactions/get_pending_transactions_details.dart';
import 'package:mohem_flutter_app/models/pending_transactions/get_req_functions.dart'; import 'package:mohem_flutter_app/models/pending_transactions/get_req_functions.dart';
import 'package:mohem_flutter_app/models/privilege_list_model.dart';
import 'package:mohem_flutter_app/models/profile/basic_details_cols_structions.dart'; import 'package:mohem_flutter_app/models/profile/basic_details_cols_structions.dart';
import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart'; import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart';
import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart'; import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart';
@ -56,17 +66,6 @@ import 'package:mohem_flutter_app/models/worklist/hr/get_phones_notification_bod
import 'package:mohem_flutter_app/models/worklist/replacement_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/replacement_list_model.dart';
import 'package:mohem_flutter_app/models/worklist_response_model.dart'; import 'package:mohem_flutter_app/models/worklist_response_model.dart';
import 'basic_member_information_model.dart';
import 'dashboard/get_accrual_balances_list_model.dart';
import 'dashboard/get_attendance_tracking_list_model.dart';
import 'dashboard/get_open_missing_swipes_list_model.dart';
import 'dashboard/get_open_notifications_list.dart';
import 'dashboard/list_menu.dart';
import 'dashboard/menu_entries.dart';
import 'get_mobile_login_info_list_model.dart';
import 'member_information_list_model.dart';
import 'privilege_list_model.dart';
class GenericResponseModel { class GenericResponseModel {
String? date; String? date;
int? languageID; int? languageID;

@ -1,4 +1,3 @@
class GetAbsenceCollectionNotificationBodyList { class GetAbsenceCollectionNotificationBodyList {
List<CollectionNotificationAbsence>? collectionNotification; List<CollectionNotificationAbsence>? collectionNotification;
@ -16,8 +15,7 @@ class GetAbsenceCollectionNotificationBodyList {
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.collectionNotification != null) { if (this.collectionNotification != null) {
data['Collection_Notification'] = data['Collection_Notification'] = this.collectionNotification!.map((v) => v.toJson()).toList();
this.collectionNotification!.map((v) => v.toJson()).toList();
} }
return data; return data;
} }
@ -42,20 +40,20 @@ class CollectionNotificationAbsence {
CollectionNotificationAbsence( CollectionNotificationAbsence(
{this.aCTION, {this.aCTION,
this.aPPLICATIONCOLUMNNAME, this.aPPLICATIONCOLUMNNAME,
this.dATATYPE, this.dATATYPE,
this.dATEVALUE, this.dATEVALUE,
this.dESCFLEXCONTEXTCODE, this.dESCFLEXCONTEXTCODE,
this.dESCFLEXNAME, this.dESCFLEXNAME,
this.dISPLAYFLAG, this.dISPLAYFLAG,
this.nUMBERVALUE, this.nUMBERVALUE,
this.pREVSEGMENTVALUEDSP, this.pREVSEGMENTVALUEDSP,
this.sEGMENTNAME, this.sEGMENTNAME,
this.sEGMENTPROMPT, this.sEGMENTPROMPT,
this.sEGMENTSEQNUM, this.sEGMENTSEQNUM,
this.sEGMENTVALUEDSP, this.sEGMENTVALUEDSP,
this.tRANSACTIONNUMBER, this.tRANSACTIONNUMBER,
this.vARCHAR2VALUE}); this.vARCHAR2VALUE});
CollectionNotificationAbsence.fromJson(Map<String, dynamic> json) { CollectionNotificationAbsence.fromJson(Map<String, dynamic> json) {
aCTION = json['ACTION']; aCTION = json['ACTION'];
@ -94,4 +92,4 @@ class CollectionNotificationAbsence {
data['VARCHAR2_VALUE'] = this.vARCHAR2VALUE; data['VARCHAR2_VALUE'] = this.vARCHAR2VALUE;
return data; return data;
} }
} }

@ -11,7 +11,6 @@ import 'package:mohem_flutter_app/models/dashboard/itg_forms_model.dart';
import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart'; import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart';
import 'package:mohem_flutter_app/models/dashboard/menus.dart'; import 'package:mohem_flutter_app/models/dashboard/menus.dart';
import 'package:mohem_flutter_app/models/generic_response_model.dart'; import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/widgets/Updater.dart';
/// Mix-in [DiagnosticableTreeMixin] to have access to [debugFillProperties] for the devtool /// Mix-in [DiagnosticableTreeMixin] to have access to [debugFillProperties] for the devtool
// ignore: prefer_mixin // ignore: prefer_mixin
@ -71,7 +70,7 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
return ((hour * 60 * 60) + (mints * 60) + seconds); return ((hour * 60 * 60) + (mints * 60) + seconds);
} }
update(context) { void update(context) {
fetchAttendanceTracking(context); fetchAttendanceTracking(context);
// isAttendanceTrackingLoading = !isAttendanceTrackingLoading; // isAttendanceTrackingLoading = !isAttendanceTrackingLoading;
// isWorkListLoading = !isWorkListLoading; // isWorkListLoading = !isWorkListLoading;
@ -137,7 +136,7 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
} }
//List Menu API's & Methods //List Menu API's & Methods
fetchListMenu() async { void fetchListMenu() async {
try { try {
GenericResponseModel? genericResponseModel = await DashboardApiClient().getListMenu(); GenericResponseModel? genericResponseModel = await DashboardApiClient().getListMenu();
Map<String, String> map = {}; Map<String, String> map = {};
@ -156,7 +155,7 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
} }
//Menu Entries API's & Methods //Menu Entries API's & Methods
fetchMenuEntries() async { void fetchMenuEntries() async {
try { try {
GenericResponseModel? genericResponseModel = await DashboardApiClient().getGetMenuEntries(); GenericResponseModel? genericResponseModel = await DashboardApiClient().getGetMenuEntries();
getMenuEntriesList = genericResponseModel!.getMenuEntriesList; getMenuEntriesList = genericResponseModel!.getMenuEntriesList;

@ -3,7 +3,7 @@ import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/theme/colors.dart'; import 'package:mohem_flutter_app/theme/colors.dart';
class AppTheme { class AppTheme {
static getTheme(isArabic) => ThemeData( static ThemeData getTheme(isArabic) => ThemeData(
fontFamily: isArabic ? 'Cairo' : 'Poppins', fontFamily: isArabic ? 'Cairo' : 'Poppins',
primarySwatch: Colors.red, primarySwatch: Colors.red,
visualDensity: VisualDensity.adaptivePlatformDensity, visualDensity: VisualDensity.adaptivePlatformDensity,

@ -1,27 +1,23 @@
import 'package:easy_localization/easy_localization.dart'; 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:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/painting.dart'; import 'package:flutter/painting.dart';
import 'package:flutter/scheduler.dart'; import 'package:intl/intl.dart';
import 'package:mohem_flutter_app/api/monthlyAttendance_api_client.dart'; import 'package:mohem_flutter_app/api/monthlyAttendance_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/get_day_hours_type_details_list_model.dart'; import 'package:mohem_flutter_app/models/get_day_hours_type_details_list_model.dart';
import 'package:mohem_flutter_app/models/get_schedule_shifts_details_list_model.dart'; import 'package:mohem_flutter_app/models/get_schedule_shifts_details_list_model.dart';
import 'package:mohem_flutter_app/models/get_time_card_summary_list_model.dart'; import 'package:mohem_flutter_app/models/get_time_card_summary_list_model.dart';
import 'package:mohem_flutter_app/widgets/circular_step_progress_bar.dart'; import 'package:mohem_flutter_app/widgets/circular_step_progress_bar.dart';
import 'package:provider/provider.dart';
import 'package:syncfusion_flutter_calendar/calendar.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:flutter/cupertino.dart';
import 'package:pie_chart/pie_chart.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:intl/intl.dart';
import 'package:month_year_picker/month_year_picker.dart';
import 'package:month_picker_dialog/month_picker_dialog.dart'; import 'package:month_picker_dialog/month_picker_dialog.dart';
import 'package:pie_chart/pie_chart.dart';
import 'package:syncfusion_flutter_calendar/calendar.dart';
class MonthlyAttendance extends StatefulWidget { class MonthlyAttendance extends StatefulWidget {
MonthlyAttendance({Key? key}) : super(key: key); MonthlyAttendance({Key? key}) : super(key: key);
@ -71,7 +67,6 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
} }
} }
Future getScheduleShiftsDetails(index, pRTPID) async { Future getScheduleShiftsDetails(index, pRTPID) async {
try { try {
Utils.showLoading(context); Utils.showLoading(context);
@ -432,7 +427,7 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
); );
} }
calendarTapped(CalendarTapDetails details) async { void calendarTapped(CalendarTapDetails details) async {
dynamic index = details.date?.day; dynamic index = details.date?.day;
if (index != null) { if (index != null) {
index = index - 1; index = index - 1;
@ -460,8 +455,8 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
maxChildSize: 0.9, maxChildSize: 0.9,
expand: false, expand: false,
builder: (_, controller) { builder: (_, controller) {
dynamic dmyString = getScheduleShiftsDetailsList!.sCHEDULEDATE; dynamic dmyString = getScheduleShiftsDetailsList!.sCHEDULEDATE;
DateTime dateTime1 = DateFormat("MM/dd/yyyy hh:mm:ss a").parse(dmyString); DateTime dateTime1 = DateFormat("MM/dd/yyyy hh:mm:ss a").parse(dmyString);
return Column( return Column(
children: [ children: [
Container( Container(
@ -487,11 +482,11 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Container(child: Container(
"${DateFormat("MMMM-dd-yyyy").format(dateTime1).replaceAll('-', " ")}".toText24(isBold: true, color: Colors.white), child: "${DateFormat("MMMM-dd-yyyy").format(dateTime1).replaceAll('-', " ")}".toText24(isBold: true, color: Colors.white),
).paddingOnly(top: 26, left: 21, right: 21), ).paddingOnly(top: 26, left: 21, right: 21),
Container( Container(
child: LocaleKeys.attendanceDetails.tr().toText16(color: MyColors.greyACColor).paddingOnly(left: 21,bottom: 16), child: LocaleKeys.attendanceDetails.tr().toText16(color: MyColors.greyACColor).paddingOnly(left: 21, bottom: 16),
), ),
Center( Center(
child: CircularStepProgressBar( child: CircularStepProgressBar(
@ -542,8 +537,8 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
color: MyColors.grey67Color, color: MyColors.grey67Color,
), ),
8.height, 8.height,
"${getScheduleShiftsDetailsList!.sHTACTUALSTARTTIME}" !="" "${getScheduleShiftsDetailsList!.sHTACTUALSTARTTIME}" != ""
? "${getScheduleShiftsDetailsList!.sHTACTUALSTARTTIME}".toText22(color: Colors.black, isBold: true) ? "${getScheduleShiftsDetailsList!.sHTACTUALSTARTTIME}".toText22(color: Colors.black, isBold: true)
: "__".toText22(color: Colors.black, isBold: true), : "__".toText22(color: Colors.black, isBold: true),
], ],
), ),
@ -557,7 +552,7 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
), ),
8.height, 8.height,
"${getScheduleShiftsDetailsList!.sHTACTUALENDTIME}" != "" "${getScheduleShiftsDetailsList!.sHTACTUALENDTIME}" != ""
? "${getScheduleShiftsDetailsList!.sHTACTUALENDTIME}".toText22(color: Colors.black, isBold: true) ? "${getScheduleShiftsDetailsList!.sHTACTUALENDTIME}".toText22(color: Colors.black, isBold: true)
: "__".toText22(color: Colors.black, isBold: true), : "__".toText22(color: Colors.black, isBold: true),
], ],
), ),
@ -581,9 +576,9 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
color: MyColors.grey67Color, color: MyColors.grey67Color,
), ),
8.height, 8.height,
"${getScheduleShiftsDetailsList!.aPPROVEDSTARTTIME}" !="" "${getScheduleShiftsDetailsList!.aPPROVEDSTARTTIME}" != ""
? "${getScheduleShiftsDetailsList!.aPPROVEDSTARTTIME}".toText22(color: MyColors.greenColor, isBold: true) ? "${getScheduleShiftsDetailsList!.aPPROVEDSTARTTIME}".toText22(color: MyColors.greenColor, isBold: true)
:"__".toText22(color: MyColors.greenColor, isBold: true), : "__".toText22(color: MyColors.greenColor, isBold: true),
], ],
), ),
), ),
@ -595,9 +590,9 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
color: MyColors.grey67Color, color: MyColors.grey67Color,
), ),
8.height, 8.height,
"${getScheduleShiftsDetailsList!.aPPROVEDENDTIME}"!= "" "${getScheduleShiftsDetailsList!.aPPROVEDENDTIME}" != ""
? "${getScheduleShiftsDetailsList!.aPPROVEDENDTIME}".toText22(color: MyColors.greenColor, isBold: true) ? "${getScheduleShiftsDetailsList!.aPPROVEDENDTIME}".toText22(color: MyColors.greenColor, isBold: true)
:"__".toText22(color: MyColors.greenColor, isBold: true), : "__".toText22(color: MyColors.greenColor, isBold: true),
], ],
), ),
], ],
@ -695,7 +690,7 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
return meetings; return meetings;
} }
static getMonth(int month) { static String getMonth(int month) {
switch (month) { switch (month) {
case 1: case 1:
return "January"; return "January";
@ -721,36 +716,40 @@ class _MonthlyAttendanceState extends State<MonthlyAttendance> {
return "November"; return "November";
case 12: case 12:
return "December"; return "December";
default:
return "";
} }
} }
static getMonthAr(int month){ static String getMonthAr(int month) {
switch (month) { switch (month) {
case 1: case 1:
return 'يناير'; return 'يناير';
case 2: case 2:
return ' فبراير'; return ' فبراير';
case 3: case 3:
return 'مارس'; return 'مارس';
case 4: case 4:
return 'أبريل'; return 'أبريل';
case 5: case 5:
return 'مايو'; return 'مايو';
case 6: case 6:
return 'يونيو'; return 'يونيو';
case 7: case 7:
return 'يوليو'; return 'يوليو';
case 8: case 8:
return 'أغسطس'; return 'أغسطس';
case 9: case 9:
return 'سبتمبر'; return 'سبتمبر';
case 10: case 10:
return ' اكتوبر'; return ' اكتوبر';
case 11: case 11:
return ' نوفمبر'; return ' نوفمبر';
case 12: case 12:
return 'ديسمبر'; return 'ديسمبر';
} default:
return "";
}
} }
} }

@ -13,15 +13,14 @@ import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/generic_response_model.dart'; import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/widgets/circular_step_progress_bar.dart'; import 'package:mohem_flutter_app/widgets/circular_step_progress_bar.dart';
import 'package:mohem_flutter_app/widgets/location/Location.dart';
import 'package:mohem_flutter_app/widgets/nfc/nfc_reader_sheet.dart'; import 'package:mohem_flutter_app/widgets/nfc/nfc_reader_sheet.dart';
import 'package:nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/nfc_manager.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:wifi_iot/wifi_iot.dart'; import 'package:wifi_iot/wifi_iot.dart';
import '../../provider/dashboard_provider_model.dart';
import '../../widgets/location/Location.dart';
class TodayAttendanceScreen extends StatefulWidget { class TodayAttendanceScreen extends StatefulWidget {
TodayAttendanceScreen({Key? key}) : super(key: key); TodayAttendanceScreen({Key? key}) : super(key: key);

@ -12,49 +12,58 @@ class _AppDrawerState extends State<AppDrawer> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(
color: Colors.white, color: Colors.white,
child: Drawer( child: Drawer(
child: Column(children: <Widget>[ child: Column(
const SizedBox( children: <Widget>[
height: 200, const SizedBox(
), height: 200,
Expanded( ),
child: ListView(padding: const EdgeInsets.all(21), physics: const BouncingScrollPhysics(), children: [ Expanded(
const Divider(), child: ListView(
InkWell( padding: const EdgeInsets.all(21),
child: const DrawerItem( physics: const BouncingScrollPhysics(),
'My Profile', children: [
icon: Icons.person, const Divider(),
color: Colors.grey, InkWell(
), child: const DrawerItem(
onTap: () { 'My Profile',
drawerNavigator(context, AppRoutes.profile); icon: Icons.person,
}), color: Colors.grey,
const Divider(), ),
InkWell( onTap: () {
child: const DrawerItem( drawerNavigator(context, AppRoutes.profile);
'Mowadhafhi', }),
icon: Icons.person, const Divider(),
color: Colors.grey, InkWell(
), child: const DrawerItem(
onTap: () { 'Mowadhafhi',
drawerNavigator(context, AppRoutes.mowadhafhi); icon: Icons.person,
}), color: Colors.grey,
const Divider(), ),
InkWell( onTap: () {
child: const DrawerItem( drawerNavigator(context, AppRoutes.mowadhafhi);
'Pending Transactions', }),
icon: Icons.person, const Divider(),
color: Colors.grey, InkWell(
), child: const DrawerItem(
onTap: () { 'Pending Transactions',
drawerNavigator(context, AppRoutes.pendingTransactions); icon: Icons.person,
}) color: Colors.grey,
])) ),
]))); onTap: () {
drawerNavigator(context, AppRoutes.pendingTransactions);
})
],
),
)
],
),
),
);
} }
drawerNavigator(context, routeName) { void drawerNavigator(context, routeName) {
Navigator.of(context).pushNamed(routeName); Navigator.of(context).pushNamed(routeName);
} }
} }

@ -8,11 +8,10 @@ import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart'; import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.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 '../../my_attendance/dynamic_screens/dynamic_listview_screen.dart';
class ServicesWidget extends StatelessWidget { class ServicesWidget extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

@ -175,7 +175,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
(getEitDffStructureList == null (getEitDffStructureList == null
? const SizedBox() ? const SizedBox()
: (getEitDffStructureList!.isEmpty : (getEitDffStructureList!.isEmpty
? LocaleKeys.noDataAvailable.tr().toText16().center ? Utils.getNoDataWidget(context)
: ListView.separated( : ListView.separated(
physics: const BouncingScrollPhysics(), physics: const BouncingScrollPhysics(),
padding: const EdgeInsets.all(21), padding: const EdgeInsets.all(21),
@ -209,9 +209,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
isReadOnly: model.rEADONLY == "Y", isReadOnly: model.rEADONLY == "Y",
onChange: (text) { onChange: (text) {
model.fieldAnswer = text; model.fieldAnswer = text;
if (model.eSERVICESDV == null) { model.eSERVICESDV ??= ESERVICESDV();
model.eSERVICESDV = ESERVICESDV();
}
model.eSERVICESDV!.pIDCOLUMNNAME = text; model.eSERVICESDV!.pIDCOLUMNNAME = text;
}, },
).paddingOnly(bottom: 12); ).paddingOnly(bottom: 12);
@ -223,9 +221,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
isInputTypeNum: true, isInputTypeNum: true,
onChange: (text) { onChange: (text) {
model.fieldAnswer = text; model.fieldAnswer = text;
if (model.eSERVICESDV == null) { model.eSERVICESDV ??= ESERVICESDV();
model.eSERVICESDV = ESERVICESDV();
}
model.eSERVICESDV!.pIDCOLUMNNAME = text; model.eSERVICESDV!.pIDCOLUMNNAME = text;
}, },
).paddingOnly(bottom: 12); ).paddingOnly(bottom: 12);

@ -1,13 +1,10 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/my_attendance_api_client.dart'; import 'package:mohem_flutter_app/api/my_attendance_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/get_eit_transaction_list_model.dart'; import 'package:mohem_flutter_app/models/get_eit_transaction_list_model.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart'; import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart';
@ -47,6 +44,8 @@ class _DynamicListViewScreenState extends State<DynamicListViewScreen> {
getEITTransactionList?.forEach((element) { getEITTransactionList?.forEach((element) {
element.collectionTransaction = element.collectionTransaction?.where((elemen) => elemen.dISPLAYFLAG == "Y").toList() ?? []; element.collectionTransaction = element.collectionTransaction?.where((elemen) => elemen.dISPLAYFLAG == "Y").toList() ?? [];
}); });
getEITTransactionList = getEITTransactionList?.where((element) => element.collectionTransaction?.isNotEmpty ?? false).toList() ?? [];
Utils.hideLoading(context); Utils.hideLoading(context);
setState(() {}); setState(() {});
} catch (ex) { } catch (ex) {
@ -69,14 +68,11 @@ class _DynamicListViewScreenState extends State<DynamicListViewScreen> {
return Scaffold( return Scaffold(
backgroundColor: Colors.white, backgroundColor: Colors.white,
appBar: AppBarWidget( appBar: AppBarWidget(context, title: dynamicParams!.title),
context,
title: dynamicParams!.title,
),
body: getEITTransactionList == null body: getEITTransactionList == null
? const SizedBox() ? const SizedBox()
: (getEITTransactionList!.isEmpty : (getEITTransactionList!.isEmpty
? LocaleKeys.noDataAvailable.tr().toText16().center ? Utils.getNoDataWidget(context)
: ListView.separated( : ListView.separated(
physics: const BouncingScrollPhysics(), physics: const BouncingScrollPhysics(),
padding: const EdgeInsets.all(21), padding: const EdgeInsets.all(21),

@ -97,12 +97,12 @@ class _MonthlyPaySlipScreenState extends State<MonthlyPaySlipScreen> {
), ),
body: Column( body: Column(
children: [ children: [
Column( if (selectedMonthIndex != null)
crossAxisAlignment: CrossAxisAlignment.start, Column(
mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start,
children: [ mainAxisSize: MainAxisSize.min,
Container(alignment: Alignment.centerLeft, child: LocaleKeys.month.tr().toText17(isBold: true, color: MyColors.darkIconColor)), children: [
if (selectedMonthIndex != null) Container(alignment: Alignment.centerLeft, child: LocaleKeys.month.tr().toText17(isBold: true, color: MyColors.darkIconColor)),
Row( Row(
children: [ children: [
DateFormat("MMMM-yyyy").format(DateFormat("MM/dd/yyyy").parse(paySlipList[selectedMonthIndex!].pAYMENTDATE!)).toText16(color: MyColors.greyACColor), DateFormat("MMMM-yyyy").format(DateFormat("MM/dd/yyyy").parse(paySlipList[selectedMonthIndex!].pAYMENTDATE!)).toText16(color: MyColors.greyACColor),
@ -137,8 +137,8 @@ class _MonthlyPaySlipScreenState extends State<MonthlyPaySlipScreen> {
); );
}); });
}) })
], ],
).paddingOnly(left: 21, right: 21), ).paddingOnly(left: 21, right: 21),
ListView( ListView(
padding: const EdgeInsets.all(21), padding: const EdgeInsets.all(21),
children: [ children: [

@ -41,8 +41,6 @@ class _BasicDetailsState extends State<BasicDetails> {
getEmployeeBasicDetailsList = await ProfileApiClient().getEmployeeBasicDetails(); getEmployeeBasicDetailsList = await ProfileApiClient().getEmployeeBasicDetails();
Utils.hideLoading(context); Utils.hideLoading(context);
basicDetails(); basicDetails();
print("getEmployeeBasicDetailsList.length");
print(getEmployeeBasicDetailsList.length);
setState(() {}); setState(() {});
} catch (ex) { } catch (ex) {
Utils.hideLoading(context); Utils.hideLoading(context);
@ -50,7 +48,7 @@ class _BasicDetailsState extends State<BasicDetails> {
} }
} }
basicDetails() { void basicDetails() {
for (int i = 0; i < getEmployeeBasicDetailsList.length; i++) { for (int i = 0; i < getEmployeeBasicDetailsList.length; i++) {
if (getEmployeeBasicDetailsList[i].aPPLICATIONCOLUMNNAME == 'FULL_NAME') { if (getEmployeeBasicDetailsList[i].aPPLICATIONCOLUMNNAME == 'FULL_NAME') {
fullName = getEmployeeBasicDetailsList[i].sEGMENTVALUEDSP; fullName = getEmployeeBasicDetailsList[i].sEGMENTVALUEDSP;
@ -96,7 +94,7 @@ class _BasicDetailsState extends State<BasicDetails> {
children: [ children: [
Container( Container(
width: double.infinity, width: double.infinity,
margin: EdgeInsets.only(top: 20, left: 21, right: 21,bottom: 20), margin: EdgeInsets.only(top: 20, left: 21, right: 21, bottom: 20),
padding: EdgeInsets.only(left: 14, right: 14, top: 13, bottom: 5), padding: EdgeInsets.only(left: 14, right: 14, top: 13, bottom: 5),
height: 280, height: 280,
decoration: BoxDecoration( decoration: BoxDecoration(
@ -135,7 +133,7 @@ class _BasicDetailsState extends State<BasicDetails> {
)); ));
} }
footer() { Widget footer() {
return Container( return Container(
decoration: BoxDecoration( decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(10), // borderRadius: BorderRadius.circular(10),
@ -150,7 +148,7 @@ class _BasicDetailsState extends State<BasicDetails> {
); );
} }
showAlertDialog(BuildContext context) { void showAlertDialog(BuildContext context) {
dynamic changeOrNew = 1; dynamic changeOrNew = 1;
Widget cancelButton = TextButton( Widget cancelButton = TextButton(
child: Text("Cancel"), child: Text("Cancel"),

@ -3,12 +3,9 @@ import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/profile_api_client.dart'; import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/get_employee_address_model.dart'; import 'package:mohem_flutter_app/models/get_employee_address_model.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/get_employee_phones_model.dart'; import 'package:mohem_flutter_app/models/get_employee_phones_model.dart';
import 'package:mohem_flutter_app/ui/profile/phone_numbers.dart'; import 'package:mohem_flutter_app/ui/profile/phone_numbers.dart';
import 'package:mohem_flutter_app/ui/profile/profile.dart'; import 'package:mohem_flutter_app/ui/profile/profile.dart';
@ -212,7 +209,7 @@ class _ContactDetailsState extends State<ContactDetails> {
]))); ])));
} }
footer() { Widget footer() {
return Container( return Container(
decoration: BoxDecoration( decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(10), // borderRadius: BorderRadius.circular(10),
@ -228,7 +225,7 @@ class _ContactDetailsState extends State<ContactDetails> {
); );
} }
updatePhone() { void updatePhone() {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => PhoneNumbers(getEmployeePhonesList: this.getEmployeePhonesList)), MaterialPageRoute(builder: (context) => PhoneNumbers(getEmployeePhonesList: this.getEmployeePhonesList)),

@ -1,23 +1,6 @@
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/dialogs/otp_dialog.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_familyMembers_screen.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart';
import 'package:mohem_flutter_app/ui/profile/profile.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
class DeleteFamilyMember extends StatefulWidget { class DeleteFamilyMember extends StatefulWidget {
const DeleteFamilyMember({Key? key}) : super(key: key); const DeleteFamilyMember({Key? key}) : super(key: key);
@ -30,44 +13,37 @@ class _DeleteFamilyMemberState extends State<DeleteFamilyMember> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBarWidget( appBar: AppBarWidget(
context, context,
title: "Dependents And Beneficiaries", title: "Dependents And Beneficiaries",
), ),
backgroundColor: MyColors.backgroundColor, backgroundColor: MyColors.backgroundColor,
bottomSheet: footer(), bottomSheet: footer(),
body:Column( body: Column(
children: [ children: [],
));
],
)
);
} }
footer() {
Widget footer() {
return Row( return Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Container( Container(
color: MyColors.gradiantEndColor, color: MyColors.gradiantEndColor,
// margin: EdgeInsets.only(left: 50,right: 20), // margin: EdgeInsets.only(left: 50,right: 20),
padding: EdgeInsets.only(left: 50,right: 50), padding: EdgeInsets.only(left: 50, right: 50),
child: TextButton( child: TextButton(
style: TextButton.styleFrom( style: TextButton.styleFrom(
primary:MyColors.white, primary: MyColors.white,
onSurface: MyColors.white, onSurface: MyColors.white,
backgroundColor: MyColors.gradiantEndColor, backgroundColor: MyColors.gradiantEndColor,
), ),
onPressed: (){}, onPressed: () {},
child: Text('Next', child: Text(
style: TextStyle( 'Next',
fontStyle: FontStyle.normal, style: TextStyle(fontStyle: FontStyle.normal, fontSize: 16, color: Colors.white, fontWeight: FontWeight.w600),
fontSize: 16, ),
color: Colors.white, )),
fontWeight: FontWeight.w600
),),
)
),
], ],
); );
} }

@ -125,7 +125,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreenProfile> {
(getBasicDetDffStructureList == null && getBasicDetColsStructureList == null (getBasicDetDffStructureList == null && getBasicDetColsStructureList == null
? const SizedBox() ? const SizedBox()
: (getBasicDetDffStructureList!.isEmpty && getBasicDetColsStructureList!.isEmpty : (getBasicDetDffStructureList!.isEmpty && getBasicDetColsStructureList!.isEmpty
? LocaleKeys.noDataAvailable.tr().toText16().center ? Utils.getNoDataWidget(context)
: ListView( : ListView(
physics: const BouncingScrollPhysics(), physics: const BouncingScrollPhysics(),
padding: const EdgeInsets.all(21), padding: const EdgeInsets.all(21),

@ -70,7 +70,7 @@ class _DynamicListViewScreenState extends State<DynamicListViewScreen> {
body: getEITTransactionList == null body: getEITTransactionList == null
? const SizedBox() ? const SizedBox()
: (getEITTransactionList!.isEmpty : (getEITTransactionList!.isEmpty
? LocaleKeys.noDataAvailable.tr().toText16().center ? Utils.getNoDataWidget(context)
: ListView.separated( : ListView.separated(
physics: const BouncingScrollPhysics(), physics: const BouncingScrollPhysics(),
padding: EdgeInsets.all(21), padding: EdgeInsets.all(21),

@ -1,23 +1,13 @@
import 'package:easy_localization/src/public_ext.dart'; import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/profile_api_client.dart'; import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/dialogs/otp_dialog.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart'; import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_familyMembers_screen.dart'; import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_familyMembers_screen.dart';
import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart';
import 'package:mohem_flutter_app/ui/profile/profile.dart'; import 'package:mohem_flutter_app/ui/profile/profile.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart';
@ -30,15 +20,14 @@ class FamilyMembers extends StatefulWidget {
} }
class _FamilyMembersState extends State<FamilyMembers> { class _FamilyMembersState extends State<FamilyMembers> {
List<GetEmployeeContactsList> getEmployeeContactsList = []; List<GetEmployeeContactsList> getEmployeeContactsList = [];
int? relationId; int? relationId;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
getEmployeeContacts(); getEmployeeContacts();
} }
void getEmployeeContacts() async { void getEmployeeContacts() async {
@ -53,7 +42,6 @@ class _FamilyMembersState extends State<FamilyMembers> {
} }
} }
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBarWidget( appBar: AppBarWidget(
@ -61,154 +49,156 @@ class _FamilyMembersState extends State<FamilyMembers> {
title: LocaleKeys.profile_familyDetails.tr(), title: LocaleKeys.profile_familyDetails.tr(),
), ),
backgroundColor: MyColors.backgroundColor, backgroundColor: MyColors.backgroundColor,
bottomSheet:footer(), bottomSheet: footer(),
body: Container( body: Container(
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
child: getEmployeeContactsList.length != 0 child: getEmployeeContactsList.length != 0
? SingleChildScrollView( ? SingleChildScrollView(
scrollDirection: Axis.vertical, scrollDirection: Axis.vertical,
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
ListView.builder( ListView.builder(
scrollDirection: Axis.vertical, scrollDirection: Axis.vertical,
shrinkWrap: true, shrinkWrap: true,
physics: ScrollPhysics(), physics: ScrollPhysics(),
itemCount: getEmployeeContactsList.length, itemCount: getEmployeeContactsList.length,
itemBuilder: (context, index) { itemBuilder: (context, index) {
return Container( return Container(
child: Column( child: Column(
children: [ children: [
Container( Container(
width: double.infinity, width: double.infinity,
margin: EdgeInsets.only(top: 20, left: 21, right: 21,), margin: EdgeInsets.only(
padding: EdgeInsets.only(left: 14, right: 14,top: 13, ), top: 20,
height: 110, left: 21,
decoration: BoxDecoration( right: 21,
boxShadow: [ ),
BoxShadow( padding: EdgeInsets.only(
color: Colors.grey.withOpacity(0.5), left: 14,
spreadRadius: 5, right: 14,
blurRadius: 26, top: 13,
offset: Offset(0, 3),
),
],
color: Colors.white,
borderRadius: BorderRadius.circular(10.0),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
"${getEmployeeContactsList[index].cONTACTNAME}".toText16(color: MyColors.blackColor),
"${getEmployeeContactsList[index].rELATIONSHIP}".toText11(isBold: true, color: MyColors.textMixColor),
SizedBox(height: 5,),
Divider(
color: MyColors.lightGreyEFColor,
height: 20,
thickness: 1,
indent: 0,
endIndent: 0,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Container(
child: InkWell(
onTap: () {
showUpdateAlertDialog(context);
},
child: RichText(
text: TextSpan(
children: [
WidgetSpan(
child: Icon(
Icons.edit,
size: 15,
color: MyColors.grey67Color,
),
),
TextSpan(
text: LocaleKeys.update.tr(),
style: TextStyle(
color: MyColors.grey67Color,
fontSize: 12,
fontWeight: FontWeight.bold,
),
),
],
),
),
)
), ),
Padding( height: 110,
padding: const EdgeInsets.symmetric(horizontal: 8), decoration: BoxDecoration(
child: SizedBox( boxShadow: [
child: Container( BoxShadow(
width: 3, color: Colors.grey.withOpacity(0.5),
color: MyColors.lightGreyEFColor, spreadRadius: 5,
blurRadius: 26,
offset: Offset(0, 3),
), ),
), ],
color: Colors.white,
borderRadius: BorderRadius.circular(10.0),
), ),
Container( child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
child: InkWell( "${getEmployeeContactsList[index].cONTACTNAME}".toText16(color: MyColors.blackColor),
onTap: () { "${getEmployeeContactsList[index].rELATIONSHIP}".toText11(isBold: true, color: MyColors.textMixColor),
showRemoveAlertDialog(context, getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt()); SizedBox(
}, height: 5,
child: RichText( ),
text: TextSpan( Divider(
children: [ color: MyColors.lightGreyEFColor,
WidgetSpan( height: 20,
child: Icon( thickness: 1,
Icons.delete, indent: 0,
size: 15, endIndent: 0,
color: Color(0x99FF0000), ),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Container(
child: InkWell(
onTap: () {
showUpdateAlertDialog(context);
},
child: RichText(
text: TextSpan(
children: [
WidgetSpan(
child: Icon(
Icons.edit,
size: 15,
color: MyColors.grey67Color,
),
), ),
), TextSpan(
TextSpan( text: LocaleKeys.update.tr(),
text:LocaleKeys.remove.tr(), style: TextStyle(
style: TextStyle( color: MyColors.grey67Color,
color: MyColors.DarkRedColor, fontSize: 12,
fontSize: 12, fontWeight: FontWeight.bold,
fontWeight: FontWeight.bold, ),
), ),
), ],
], ),
),
)),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 8),
child: SizedBox(
child: Container(
width: 3,
color: MyColors.lightGreyEFColor,
),
), ),
), ),
) Container(
), child: InkWell(
// ElevatedButton.icon( onTap: () {
// icon: Icon( showRemoveAlertDialog(context, getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt());
// Icons.delete, },
// size: 15, child: RichText(
// color: Color(0x99FF0000), text: TextSpan(
// ), children: [
// style: ElevatedButton.styleFrom( WidgetSpan(
// shadowColor: Colors.white, child: Icon(
// primary: Colors.white, Icons.delete,
// ), size: 15,
// label: "remove".toText12(color: MyColors.DarkRedColor), color: Color(0x99FF0000),
// onPressed: (){}, ),
// ), ),
], TextSpan(
), text: LocaleKeys.remove.tr(),
] style: TextStyle(
), color: MyColors.DarkRedColor,
), fontSize: 12,
fontWeight: FontWeight.bold,
),
),
],
),
),
)),
// ElevatedButton.icon(
// icon: Icon(
// Icons.delete,
// size: 15,
// color: Color(0x99FF0000),
// ),
// style: ElevatedButton.styleFrom(
// shadowColor: Colors.white,
// primary: Colors.white,
// ),
// label: "remove".toText12(color: MyColors.DarkRedColor),
// onPressed: (){},
// ),
],
),
]),
),
],
));
})
], ],
) ),
); )
}) : Container(),
], // SizedBox(height: 20),
), ));
):Container(),
// SizedBox(height: 20),
)
);
} }
footer(){ Widget footer() {
return Container( return Container(
decoration: BoxDecoration( decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(10), // borderRadius: BorderRadius.circular(10),
@ -224,21 +214,27 @@ class _FamilyMembersState extends State<FamilyMembers> {
); );
} }
showUpdateAlertDialog(BuildContext context) { void showUpdateAlertDialog(BuildContext context) {
Widget cancelButton = TextButton( Widget cancelButton = TextButton(
child: Text(LocaleKeys.cancel.tr(),), child: Text(
onPressed: () { LocaleKeys.cancel.tr(),
),
onPressed: () {
Navigator.pop(context); Navigator.pop(context);
}, },
); );
Widget continueButton = TextButton( Widget continueButton = TextButton(
child: Text(LocaleKeys.ok.tr(),), child: Text(
onPressed: () { LocaleKeys.ok.tr(),
),
onPressed: () {
continueDynamicForms(); continueDynamicForms();
}, },
); );
AlertDialog alert = AlertDialog( AlertDialog alert = AlertDialog(
title: Text(LocaleKeys.confirm.tr(),), title: Text(
LocaleKeys.confirm.tr(),
),
content: Text("Are You Sure You Want to Update this Member?"), content: Text("Are You Sure You Want to Update this Member?"),
actions: [ actions: [
cancelButton, cancelButton,
@ -252,22 +248,29 @@ class _FamilyMembersState extends State<FamilyMembers> {
}, },
); );
} }
showRemoveAlertDialog(BuildContext context,int relationId) {
void showRemoveAlertDialog(BuildContext context, int relationId) {
Widget cancelButton = TextButton( Widget cancelButton = TextButton(
child: Text(LocaleKeys.cancel.tr(),), child: Text(
onPressed: () { LocaleKeys.cancel.tr(),
),
onPressed: () {
Navigator.pop(context); Navigator.pop(context);
}, },
); );
Widget continueButton = TextButton( Widget continueButton = TextButton(
child: Text(LocaleKeys.ok.tr(),), child: Text(
onPressed: () { LocaleKeys.ok.tr(),
),
onPressed: () {
Navigator.pushNamed(context, AppRoutes.deleteFamilyMember); Navigator.pushNamed(context, AppRoutes.deleteFamilyMember);
// continueDynamicForms(); // continueDynamicForms();
}, },
); );
AlertDialog alert = AlertDialog( AlertDialog alert = AlertDialog(
title: Text(LocaleKeys.confirm.tr(),), title: Text(
LocaleKeys.confirm.tr(),
),
content: Text("Are You Sure You Want to Remove this Member?"), content: Text("Are You Sure You Want to Remove this Member?"),
actions: [ actions: [
cancelButton, cancelButton,
@ -282,10 +285,7 @@ class _FamilyMembersState extends State<FamilyMembers> {
); );
} }
void continueDynamicForms() { void continueDynamicForms() {
Navigator.pushNamed(context, AppRoutes.addDynamicInputProfile, Navigator.pushNamed(context, AppRoutes.addDynamicInputProfile, arguments: DynamicFamilyMembersParams(LocaleKeys.profile_familyDetails.tr(), getEmployeeContactsList: getEmployeeContactsList));
arguments: DynamicFamilyMembersParams(LocaleKeys.profile_familyDetails.tr(), getEmployeeContactsList: getEmployeeContactsList));
} }
} }

@ -6,7 +6,6 @@ import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart'; import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/member_information_list_model.dart'; import 'package:mohem_flutter_app/models/member_information_list_model.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart';
@ -98,7 +97,7 @@ class _PesonalInfoState extends State<PesonalInfo> {
)); ));
} }
footer() { Widget footer() {
return Container( return Container(
decoration: BoxDecoration( decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(10), // borderRadius: BorderRadius.circular(10),

@ -3,15 +3,10 @@ import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/profile_api_client.dart'; import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/get_employee_address_model.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/get_employee_phones_model.dart'; import 'package:mohem_flutter_app/models/get_employee_phones_model.dart';
import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart'; import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart';
import 'package:mohem_flutter_app/ui/profile/profile.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart';
import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart';
@ -27,6 +22,7 @@ class PhoneNumbers extends StatefulWidget {
class _PhoneNumbersState extends State<PhoneNumbers> { class _PhoneNumbersState extends State<PhoneNumbers> {
List<GetPhoneNumberTypesModel> getPhoneNumberTypesList = []; List<GetPhoneNumberTypesModel> getPhoneNumberTypesList = [];
@override @override
void initState() { void initState() {
super.initState(); super.initState();
@ -42,117 +38,121 @@ class _PhoneNumbersState extends State<PhoneNumbers> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBarWidget( appBar: AppBarWidget(
context, context,
title: LocaleKeys.profile_contactDetails.tr(), title: LocaleKeys.profile_contactDetails.tr(),
), ),
backgroundColor: MyColors.backgroundColor, backgroundColor: MyColors.backgroundColor,
bottomSheet: footer(), bottomSheet: footer(),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Column(children: [ child: Column(
Container( children: [
width: double.infinity, Container(
margin: EdgeInsets.only(left: 25, right: 25, top: 25), width: double.infinity,
padding: EdgeInsets.all(20), margin: EdgeInsets.only(left: 25, right: 25, top: 25),
// height: 400, padding: EdgeInsets.all(20),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(10.0), border: Border.all(color: Color.fromARGB(255, 209, 207, 207))), // height: 400,
child: InkWell( decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(10.0), border: Border.all(color: Color.fromARGB(255, 209, 207, 207))),
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [ child: InkWell(
Icon( child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
Icons.add, Icon(
color: Color(0xff259CB8), Icons.add,
), color: Color(0xff259CB8),
Text( ),
'Add new row', Text(
style: TextStyle(color: Color(0xff259CB8), fontWeight: FontWeight.bold), 'Add new row',
) style: TextStyle(color: Color(0xff259CB8), fontWeight: FontWeight.bold),
]), )
onTap: () { ]),
addNewRow(); onTap: () {
}, addNewRow();
},
),
), ),
), Column(
Column( crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, children: widget.getEmployeePhonesList
children: widget.getEmployeePhonesList .map((e) => e.aCTION != 'DELETE_ROW'
.map((e) => e.aCTION != 'DELETE_ROW' ? Container(
? Container( width: double.infinity,
width: double.infinity, margin: EdgeInsets.only(
margin: EdgeInsets.only( top: 20,
top: 20, left: 26,
left: 26, right: 26,
right: 26,
),
padding: EdgeInsets.only(left: 14, right: 14, top: 15, bottom: 15),
// height: 400,
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.5),
spreadRadius: 5,
blurRadius: 26,
offset: Offset(0, 3),
),
],
color: Colors.white,
borderRadius: BorderRadius.circular(10.0),
),
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
PopupMenuButton(
child: DynamicTextFieldWidget(
"Please Select *",
e.pHONETYPEMEANING ?? "",
isEnable: false,
isPopup: true,
).paddingOnly(bottom: 12),
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < getPhoneNumberTypesList.length; i++) PopupMenuItem<int>(child: Text(getPhoneNumberTypesList![i].mEANING!), value: i),
],
onSelected: (int index) {
e.pHONETYPEMEANING = getPhoneNumberTypesList[index].mEANING;
e.pHONETYPE = getPhoneNumberTypesList[index].cODE;
setState(() {});
}),
DynamicTextFieldWidget(
"",
e.pHONENUMBER ?? "",
isReadOnly: false,
onChange: (text) {
e.pHONENUMBER = text;
},
).paddingOnly(bottom: 12),
InkWell(
child: Row(mainAxisAlignment: MainAxisAlignment.end, children: [
Icon(
Icons.delete,
color: Colors.red,
size: 18,
),
Text(
'Delete',
style: TextStyle(color: Colors.red, fontWeight: FontWeight.bold),
)
]),
onTap: () {
// widget.getEmployeePhonesList.removeWhere((item) => item.pHONEID == e.pHONEID);
setState(() {
deleteRow(e);
});
},
), ),
SizedBox( padding: EdgeInsets.only(left: 14, right: 14, top: 15, bottom: 15),
height: 10, // height: 400,
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.5),
spreadRadius: 5,
blurRadius: 26,
offset: Offset(0, 3),
),
],
color: Colors.white,
borderRadius: BorderRadius.circular(10.0),
), ),
])) child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
: Container()) PopupMenuButton(
.toList()), child: DynamicTextFieldWidget(
SizedBox( "Please Select *",
height: 80, e.pHONETYPEMEANING ?? "",
) isEnable: false,
]))); isPopup: true,
).paddingOnly(bottom: 12),
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < getPhoneNumberTypesList.length; i++) PopupMenuItem<int>(child: Text(getPhoneNumberTypesList![i].mEANING!), value: i),
],
onSelected: (int index) {
e.pHONETYPEMEANING = getPhoneNumberTypesList[index].mEANING;
e.pHONETYPE = getPhoneNumberTypesList[index].cODE;
setState(() {});
}),
DynamicTextFieldWidget(
"",
e.pHONENUMBER ?? "",
isReadOnly: false,
onChange: (text) {
e.pHONENUMBER = text;
},
).paddingOnly(bottom: 12),
InkWell(
child: Row(mainAxisAlignment: MainAxisAlignment.end, children: [
Icon(
Icons.delete,
color: Colors.red,
size: 18,
),
Text(
'Delete',
style: TextStyle(color: Colors.red, fontWeight: FontWeight.bold),
)
]),
onTap: () {
// widget.getEmployeePhonesList.removeWhere((item) => item.pHONEID == e.pHONEID);
setState(() {
deleteRow(e);
});
},
),
SizedBox(
height: 10,
),
]))
: Container())
.toList()),
SizedBox(
height: 80,
)
],
),
),
);
} }
footer() { Widget footer() {
return Container( return Container(
decoration: BoxDecoration( decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(10), // borderRadius: BorderRadius.circular(10),

@ -1,13 +1,10 @@
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/profile_api_client.dart'; import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart'; import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart';
class Profile extends StatefulWidget { class Profile extends StatefulWidget {
const Profile({Key? key}) : super(key: key); const Profile({Key? key}) : super(key: key);
@ -16,6 +13,7 @@ class Profile extends StatefulWidget {
_ProfileState createState() => _ProfileState(); _ProfileState createState() => _ProfileState();
} }
// todo '@fatima' use extension methods for widgets,7 dont use hard code strings, make it localize
class _ProfileState extends State<Profile> { class _ProfileState extends State<Profile> {
String? fullName = ""; String? fullName = "";
String? maritalStatus = ""; String? maritalStatus = "";
@ -39,8 +37,6 @@ class _ProfileState extends State<Profile> {
getEmployeeBasicDetailsList = await ProfileApiClient().getEmployeeBasicDetails(); getEmployeeBasicDetailsList = await ProfileApiClient().getEmployeeBasicDetails();
Utils.hideLoading(context); Utils.hideLoading(context);
basicDetails(); basicDetails();
print("getEmployeeBasicDetailsList.length");
print(getEmployeeBasicDetailsList.length);
setState(() {}); setState(() {});
} catch (ex) { } catch (ex) {
Utils.hideLoading(context); Utils.hideLoading(context);
@ -48,7 +44,7 @@ class _ProfileState extends State<Profile> {
} }
} }
basicDetails() { void basicDetails() {
for (int i = 0; i < getEmployeeBasicDetailsList.length; i++) { for (int i = 0; i < getEmployeeBasicDetailsList.length; i++) {
if (getEmployeeBasicDetailsList[i].aPPLICATIONCOLUMNNAME == 'FULL_NAME') { if (getEmployeeBasicDetailsList[i].aPPLICATIONCOLUMNNAME == 'FULL_NAME') {
fullName = getEmployeeBasicDetailsList[i].sEGMENTVALUEDSP; fullName = getEmployeeBasicDetailsList[i].sEGMENTVALUEDSP;
@ -116,8 +112,7 @@ class _ProfileState extends State<Profile> {
], ],
), ),
), ),
) )),
),
), ),
Container( Container(
width: double.infinity, width: double.infinity,
@ -142,19 +137,15 @@ class _ProfileState extends State<Profile> {
indent: 0, indent: 0,
endIndent: 0, endIndent: 0,
), ),
Container( Container(
padding: EdgeInsets.only(left: 10.0), padding: EdgeInsets.only(left: 10.0),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
InkWell( InkWell(
onTap: () { onTap: () {},
},
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
SizedBox( SizedBox(
width: 15, width: 15,
), ),
@ -166,12 +157,9 @@ class _ProfileState extends State<Profile> {
height: 5, height: 5,
), ),
InkWell( InkWell(
onTap: () { onTap: () {},
},
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
SizedBox( SizedBox(
width: 15, width: 15,
), ),
@ -183,12 +171,9 @@ class _ProfileState extends State<Profile> {
height: 5, height: 5,
), ),
InkWell( InkWell(
onTap: () { onTap: () {},
},
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
SizedBox( SizedBox(
width: 20, width: 20,
), ),
@ -200,12 +185,9 @@ class _ProfileState extends State<Profile> {
height: 5, height: 5,
), ),
InkWell( InkWell(
onTap: () { onTap: () {},
},
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
SizedBox( SizedBox(
width: 20, width: 20,
), ),
@ -220,7 +202,7 @@ class _ProfileState extends State<Profile> {
), ),
), ),
], ],
).paddingOnly( top: 35, bottom: 36), ).paddingOnly(top: 35, bottom: 36),
), ),
Align( Align(
alignment: Alignment.topCenter, alignment: Alignment.topCenter,

@ -79,7 +79,7 @@ class _AnnouncementDetailsState extends State<AnnouncementDetails> {
); );
} }
getRequestID() { void getRequestID() {
if (currentPageNo == 0) { if (currentPageNo == 0) {
final arguments = (ModalRoute.of(context)?.settings.arguments ?? <String, dynamic>{}) as Map; final arguments = (ModalRoute.of(context)?.settings.arguments ?? <String, dynamic>{}) as Map;
currentPageNo = arguments["currentPageNo"]; currentPageNo = arguments["currentPageNo"];

@ -9,10 +9,9 @@ import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/mowadhafhi/get_tickets_list.dart'; import 'package:mohem_flutter_app/models/mowadhafhi/get_tickets_list.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart';
import '../../../widgets/app_bar_widget.dart';
class MowadhafhiHome extends StatefulWidget { class MowadhafhiHome extends StatefulWidget {
const MowadhafhiHome({Key? key}) : super(key: key); const MowadhafhiHome({Key? key}) : super(key: key);
@ -32,93 +31,92 @@ class _MowadhafhiHomeState extends State<MowadhafhiHome> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
backgroundColor: Colors.white, backgroundColor: Colors.white,
appBar: AppBarWidget( appBar: AppBarWidget(
context, context,
title: "Mowadhafhi Request", title: "Mowadhafhi Request",
), ),
body: Container( body: Container(
margin: const EdgeInsets.only(top: 10.0), margin: const EdgeInsets.only(top: 10.0),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Expanded( Expanded(
child: ListView.separated( child: ListView.separated(
physics: const BouncingScrollPhysics(), physics: const BouncingScrollPhysics(),
shrinkWrap: true, shrinkWrap: true,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
return InkWell( return InkWell(
onTap: () { onTap: () {
openRequestDetails(getTicketsByEmployeeList[index].ticketId!); openRequestDetails(getTicketsByEmployeeList[index].ticketId!);
}, },
child: Container( child: Container(
width: double.infinity, width: double.infinity,
// height: 100.0, // height: 100.0,
padding: const EdgeInsets.only(left: 12, right: 12, top: 10, bottom: 10), padding: const EdgeInsets.only(left: 12, right: 12, top: 10, bottom: 10),
margin: const EdgeInsets.only(left: 12, right: 12, top: 10, bottom: 10), margin: const EdgeInsets.only(left: 12, right: 12, top: 10, bottom: 10),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white, color: Colors.white,
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
boxShadow: [ boxShadow: [
BoxShadow( BoxShadow(
color: const Color(0xff000000).withOpacity(.05), color: const Color(0xff000000).withOpacity(.05),
blurRadius: 26, blurRadius: 26,
offset: const Offset(0, -3), offset: const Offset(0, -3),
), ),
], ],
), ),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Row( Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
getTicketsByEmployeeList[index].ticketTypeName!.toText14(color: MyColors.grey57Color),
getTicketsByEmployeeList[index].created!.split(" ")[0].toText12(color: MyColors.grey70Color),
],
),
Container(
padding: const EdgeInsets.only(top: 10.0),
child: getTicketsByEmployeeList[index].description!.toText12(color: MyColors.grey57Color),
),
Container(
padding: const EdgeInsets.only(top: 10.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
getTicketsByEmployeeList[index].ticketStatusInternalName!.toText14(color: MyColors.gradiantEndColor), getTicketsByEmployeeList[index].ticketTypeName!.toText14(color: MyColors.grey57Color),
SvgPicture.asset( getTicketsByEmployeeList[index].created!.split(" ")[0].toText12(color: MyColors.grey70Color),
"assets/images/arrow_next.svg",
color: MyColors.darkIconColor,
)
], ],
), ),
), Container(
], padding: const EdgeInsets.only(top: 10.0),
child: getTicketsByEmployeeList[index].description!.toText12(color: MyColors.grey57Color),
),
Container(
padding: const EdgeInsets.only(top: 10.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
getTicketsByEmployeeList[index].ticketStatusInternalName!.toText14(color: MyColors.gradiantEndColor),
SvgPicture.asset(
"assets/images/arrow_next.svg",
color: MyColors.darkIconColor,
)
],
),
),
],
),
), ),
), );
); },
}, separatorBuilder: (BuildContext context, int index) => 12.height,
separatorBuilder: (BuildContext context, int index) => 12.height, itemCount: getTicketsByEmployeeList.length ?? 0)),
itemCount: getTicketsByEmployeeList.length ?? 0)), 80.height
80.height ],
], ),
),
),
bottomSheet: Container(
decoration: const BoxDecoration(
color: MyColors.white,
boxShadow: [
BoxShadow(color: MyColors.lightGreyEFColor, spreadRadius: 3),
],
), ),
child: DefaultButton(LocaleKeys.createRequest.tr(), () async { bottomSheet: Container(
openHRRequest(); decoration: const BoxDecoration(
}).insideContainer, color: MyColors.white,
) boxShadow: [
); BoxShadow(color: MyColors.lightGreyEFColor, spreadRadius: 3),
],
),
child: DefaultButton(LocaleKeys.createRequest.tr(), () async {
openHRRequest();
}).insideContainer,
));
} }
void openRequestDetails(String itgTicketID) async { void openRequestDetails(String itgTicketID) async {

@ -26,7 +26,7 @@ class _RequestDetailsState extends State<MowadhafhiRequestDetails> {
super.initState(); super.initState();
} }
getRequestID() { void getRequestID() {
if (itgTicketID == null) { if (itgTicketID == null) {
itgTicketID = ModalRoute.of(context)?.settings.arguments as String; itgTicketID = ModalRoute.of(context)?.settings.arguments as String;
debugPrint(itgTicketID); debugPrint(itgTicketID);

@ -26,7 +26,7 @@ class _PendingTransactionsDetailsState extends State<PendingTransactionsDetails>
super.initState(); super.initState();
} }
getFunctionID() { void getFunctionID() {
if (functionID == "") { if (functionID == "") {
final arguments = (ModalRoute.of(context)?.settings.arguments ?? <String, dynamic>{}) as Map; final arguments = (ModalRoute.of(context)?.settings.arguments ?? <String, dynamic>{}) as Map;
functionID = arguments["selectedFunctionID"].toString(); functionID = arguments["selectedFunctionID"].toString();

@ -1,5 +1,6 @@
import 'dart:ui';
import 'dart:convert'; import 'dart:convert';
import 'dart:ui';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart'; import 'package:image_picker/image_picker.dart';
@ -90,7 +91,7 @@ class _ProfileScreenState extends State<ProfileScreen> {
])); ]));
} }
startImageSheet() { void startImageSheet() {
showMyBottomSheet(context, showMyBottomSheet(context,
child: Column( child: Column(
children: [ children: [

@ -6,7 +6,6 @@ import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/itg_forms_models/wf_history_model.dart'; import 'package:mohem_flutter_app/models/itg_forms_models/wf_history_model.dart';
import 'package:mohem_flutter_app/ui/work_list/sheets/delegate_sheet.dart';
import 'package:mohem_flutter_app/ui/work_list/sheets/request_more_info_sheet.dart'; import 'package:mohem_flutter_app/ui/work_list/sheets/request_more_info_sheet.dart';
import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheet.dart';
import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; import 'package:mohem_flutter_app/widgets/circular_avatar.dart';

@ -5,8 +5,12 @@ import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/worklist/worklist_api_client.dart'; import 'package:mohem_flutter_app/api/worklist/worklist_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/models/get_action_history_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/get_favorite_replacements_model.dart';
import 'package:mohem_flutter_app/models/worklist/replacement_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/replacement_list_model.dart';
import 'package:mohem_flutter_app/ui/work_list/sheets/search_options_sheet.dart'; import 'package:mohem_flutter_app/ui/work_list/sheets/search_options_sheet.dart';
import 'package:mohem_flutter_app/ui/work_list/sheets/selected_item_sheet.dart'; import 'package:mohem_flutter_app/ui/work_list/sheets/selected_item_sheet.dart';
@ -14,19 +18,13 @@ import 'package:mohem_flutter_app/widgets/bottom_sheet.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart';
import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; import 'package:mohem_flutter_app/widgets/circular_avatar.dart';
import 'package:mohem_flutter_app/widgets/input_widget.dart'; import 'package:mohem_flutter_app/widgets/input_widget.dart';
import 'package:mohem_flutter_app/widgets/radio/show_radio.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import '../../../models/generic_response_model.dart';
import '../../../models/get_action_history_list_model.dart';
import '../../../models/worklist/get_favorite_replacements_model.dart';
class DelegateSheet extends StatefulWidget { class DelegateSheet extends StatefulWidget {
int? notificationID; int? notificationID;
String title,apiMode; String title, apiMode;
List<GetActionHistoryList>? actionHistoryList; List<GetActionHistoryList>? actionHistoryList;
DelegateSheet({required this.title,required this.apiMode,this.notificationID, this.actionHistoryList}); DelegateSheet({required this.title, required this.apiMode, this.notificationID, this.actionHistoryList});
@override @override
State<DelegateSheet> createState() => _DelegateSheetState(); State<DelegateSheet> createState() => _DelegateSheetState();
@ -69,7 +67,7 @@ class _DelegateSheetState extends State<DelegateSheet> {
return null; return null;
} }
fetchChangeFav({required String email, required String employeName, required String image, required String userName, bool isFav = false, bool isNeedToRefresh = false}) async { void fetchChangeFav({required String email, required String employeName, required String image, required String userName, bool isFav = false, bool isNeedToRefresh = false}) async {
Utils.showLoading(context); Utils.showLoading(context);
favLetters = null; favLetters = null;
selectedFavLetter = null; selectedFavLetter = null;

@ -1,10 +1,9 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/widgets/radio/show_radio.dart';
import '../../../classes/colors.dart';
import '../../../widgets/radio/show_radio.dart';
class SearchOptionsSheet extends StatelessWidget { class SearchOptionsSheet extends StatelessWidget {
String selectedType; String selectedType;

@ -1,19 +1,15 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/worklist/worklist_api_client.dart'; import 'package:mohem_flutter_app/api/worklist/worklist_api_client.dart';
import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/models/get_action_history_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/get_favorite_replacements_model.dart';
import 'package:mohem_flutter_app/models/worklist/replacement_list_model.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart';
import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; import 'package:mohem_flutter_app/widgets/circular_avatar.dart';
import 'package:mohem_flutter_app/widgets/input_widget.dart'; import 'package:mohem_flutter_app/widgets/input_widget.dart';
import 'package:mohem_flutter_app/widgets/radio/show_radio.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import '../../../app_state/app_state.dart';
import '../../../classes/utils.dart';
import '../../../models/get_action_history_list_model.dart';
import '../../../models/worklist/get_favorite_replacements_model.dart';
import '../../../models/worklist/replacement_list_model.dart';
class SelectedItemSheet extends StatelessWidget { class SelectedItemSheet extends StatelessWidget {
String title, apiMode; String title, apiMode;
@ -115,13 +111,13 @@ class SelectedItemSheet extends StatelessWidget {
Future<void> performNetworkCall(BuildContext context, {String? email, String? userId}) async { Future<void> performNetworkCall(BuildContext context, {String? email, String? userId}) async {
Utils.showLoading(context); Utils.showLoading(context);
try{ try {
await WorkListApiClient().submitComment(comment: comment, email: email, userId: userId, notificationId: notificationID, apiMode: apiMode); await WorkListApiClient().submitComment(comment: comment, email: email, userId: userId, notificationId: notificationID, apiMode: apiMode);
Utils.hideLoading(context); Utils.hideLoading(context);
Navigator.pop(context); Navigator.pop(context);
Navigator.pop(context); Navigator.pop(context);
Navigator.pop(context, "delegate_reload"); Navigator.pop(context, "delegate_reload");
}catch (ex) { } catch (ex) {
Utils.hideLoading(context); Utils.hideLoading(context);
Utils.handleException(ex, context, null); Utils.handleException(ex, context, null);
} }

@ -23,6 +23,10 @@ import 'package:mohem_flutter_app/models/get_stamp_ms_notification_body_list_mod
import 'package:mohem_flutter_app/models/get_stamp_ns_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/get_stamp_ns_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/member_information_list_model.dart'; import 'package:mohem_flutter_app/models/member_information_list_model.dart';
import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_model.dart'; import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/hr/eit_otification_body_model.dart';
import 'package:mohem_flutter_app/models/worklist/hr/get_basic_det_ntf_body_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/hr/get_contact_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/hr/get_phones_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/worklist_response_model.dart'; import 'package:mohem_flutter_app/models/worklist_response_model.dart';
import 'package:mohem_flutter_app/ui/work_list/sheets/delegate_sheet.dart'; import 'package:mohem_flutter_app/ui/work_list/sheets/delegate_sheet.dart';
import 'package:mohem_flutter_app/ui/work_list/worklist_fragments/actions_fragment.dart'; import 'package:mohem_flutter_app/ui/work_list/worklist_fragments/actions_fragment.dart';
@ -31,15 +35,10 @@ import 'package:mohem_flutter_app/ui/work_list/worklist_fragments/detail_fragmen
import 'package:mohem_flutter_app/ui/work_list/worklist_fragments/info_fragments.dart'; import 'package:mohem_flutter_app/ui/work_list/worklist_fragments/info_fragments.dart';
import 'package:mohem_flutter_app/ui/work_list/worklist_fragments/request_fragment.dart'; import 'package:mohem_flutter_app/ui/work_list/worklist_fragments/request_fragment.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/bottom_sheet.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart';
import 'package:mohem_flutter_app/widgets/dialogs/accept_reject_input_dialog.dart'; import 'package:mohem_flutter_app/widgets/dialogs/accept_reject_input_dialog.dart';
import 'package:mohem_flutter_app/widgets/dialogs/confirm_dialog.dart';
import '../../models/worklist/hr/eit_otification_body_model.dart';
import '../../models/worklist/hr/get_basic_det_ntf_body_list_model.dart';
import '../../models/worklist/hr/get_contact_notification_body_list_model.dart';
import '../../models/worklist/hr/get_phones_notification_body_list_model.dart';
import '../../widgets/bottom_sheet.dart';
import '../../widgets/dialogs/confirm_dialog.dart';
class WorkListDetailScreen extends StatefulWidget { class WorkListDetailScreen extends StatefulWidget {
WorkListDetailScreen({Key? key}) : super(key: key); WorkListDetailScreen({Key? key}) : super(key: key);

@ -1,6 +1,5 @@
import 'package:easy_localization/src/public_ext.dart'; import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/date_uitl.dart'; import 'package:mohem_flutter_app/classes/date_uitl.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart';
@ -11,14 +10,13 @@ import 'package:mohem_flutter_app/models/get_item_creation_ntf_body_list_model.d
import 'package:mohem_flutter_app/models/get_po_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/get_po_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/get_stamp_ms_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/get_stamp_ms_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/get_stamp_ns_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/get_stamp_ns_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/hr/eit_otification_body_model.dart';
import 'package:mohem_flutter_app/models/worklist/hr/get_basic_det_ntf_body_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/hr/get_contact_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/hr/get_phones_notification_body_list_model.dart';
import 'package:mohem_flutter_app/models/worklist_response_model.dart'; import 'package:mohem_flutter_app/models/worklist_response_model.dart';
import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart'; import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart';
import '../../../models/worklist/hr/eit_otification_body_model.dart';
import '../../../models/worklist/hr/get_basic_det_ntf_body_list_model.dart';
import '../../../models/worklist/hr/get_contact_notification_body_list_model.dart';
import '../../../models/worklist/hr/get_phones_notification_body_list_model.dart';
class InfoFragment extends StatelessWidget { class InfoFragment extends StatelessWidget {
WorkListResponseModel? workListData; WorkListResponseModel? workListData;
List<POHeader> poHeaderList; List<POHeader> poHeaderList;

@ -28,7 +28,7 @@ class Updater<T> extends StatelessWidget{
}); });
} }
pushData(T? data) { void pushData(T? data) {
_history.add(data); _history.add(data);
sink?.sink.add(data); sink?.sink.add(data);
} }

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart';
showMyBottomSheet(BuildContext context, {required Widget child}) { void showMyBottomSheet(BuildContext context, {required Widget child}) {
showModalBottomSheet<void>( showModalBottomSheet<void>(
context: context, context: context,
isScrollControlled: true, isScrollControlled: true,

@ -502,7 +502,7 @@ class _CircularIndicatorPainter implements CustomPainter {
void removeListener(listener) {} void removeListener(listener) {}
@override @override
get semanticsBuilder => null; Null get semanticsBuilder => null;
@override @override
bool shouldRebuildSemantics(CustomPainter oldDelegate) => false; bool shouldRebuildSemantics(CustomPainter oldDelegate) => false;

@ -1,23 +1,22 @@
import 'dart:async'; import 'dart:async';
import 'dart:math'; import 'dart:math';
import 'dart:ui'; import 'dart:ui';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
import 'package:geolocator/geolocator.dart'; import 'package:geolocator/geolocator.dart';
import 'package:google_directions_api/google_directions_api.dart'; import 'package:google_directions_api/google_directions_api.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:mohem_flutter_app/classes/app_permissions.dart';
import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/theme/colors.dart';
// import 'package:geodesy/geodesy.dart' as geodesy; // import 'package:geodesy/geodesy.dart' as geodesy;
import '../../classes/app_permissions.dart';
import '../../theme/colors.dart';
//Created By Mr.Zohaib //Created By Mr.Zohaib
class Location { class Location {
static _Map map = _Map(); static _Map map = _Map();
static havePermission(Function(bool) callback) { static void havePermission(Function(bool) callback) {
Geolocator.checkPermission().then((value) async { Geolocator.checkPermission().then((value) async {
if (value == LocationPermission.denied) { if (value == LocationPermission.denied) {
value = await Geolocator.requestPermission(); value = await Geolocator.requestPermission();
@ -28,13 +27,13 @@ class Location {
}); });
} }
static isEnabled(Function(bool) callback) { static void isEnabled(Function(bool) callback) {
Geolocator.isLocationServiceEnabled().then((value) => callback(value)); Geolocator.isLocationServiceEnabled().then((value) => callback(value));
} }
static bool _listeningSettingChange = true; static bool _listeningSettingChange = true;
static listenGPS({bool change = true, Function(bool)? onChange}) async { static void listenGPS({bool change = true, Function(bool)? onChange}) async {
_listeningSettingChange = change; _listeningSettingChange = change;
if (change == false) return; if (change == false) return;
@ -46,8 +45,8 @@ class Location {
}); });
} }
static getCurrentLocation(Function(LatLng?) callback) { static void getCurrentLocation(Function(LatLng?) callback) {
done(Position position) { void done(Position position) {
//AppStorage.sp.saveLocation(position); //AppStorage.sp.saveLocation(position);
LatLng? myCurrentLocation = LatLng(position.latitude, position.longitude); LatLng? myCurrentLocation = LatLng(position.latitude, position.longitude);
@ -55,8 +54,7 @@ class Location {
} }
AppPermissions.location((granted) { AppPermissions.location((granted) {
if (granted) {
if (granted)
Geolocator.getLastKnownPosition(forceAndroidLocationManager: true).then((value) { Geolocator.getLastKnownPosition(forceAndroidLocationManager: true).then((value) {
if (value == null) { if (value == null) {
Geolocator.getCurrentPosition().then((value) { Geolocator.getCurrentPosition().then((value) {
@ -66,6 +64,7 @@ class Location {
done(value); done(value);
} }
}); });
}
}); });
} }
@ -125,20 +124,20 @@ class _Map {
return camera; return camera;
} }
moveCamera(CameraPosition camera, @required Completer<GoogleMapController> mapController, bool animation) { void moveCamera(CameraPosition camera, @required Completer<GoogleMapController> mapController, bool animation) {
mapController.future.then((controller) { mapController.future.then((controller) {
animation ? controller.animateCamera(CameraUpdate.newCameraPosition(camera)) : controller.moveCamera(CameraUpdate.newCameraPosition(camera)); animation ? controller.animateCamera(CameraUpdate.newCameraPosition(camera)) : controller.moveCamera(CameraUpdate.newCameraPosition(camera));
}); });
} }
scrollBy({double x = 0, double y = 0, required Completer<GoogleMapController> mapController, bool animation = true}) { void scrollBy({double x = 0, double y = 0, required Completer<GoogleMapController> mapController, bool animation = true}) {
var camera = CameraUpdate.scrollBy(x, y); var camera = CameraUpdate.scrollBy(x, y);
mapController.future.then((controller) { mapController.future.then((controller) {
animation ? controller.animateCamera(camera) : controller.moveCamera(camera); animation ? controller.animateCamera(camera) : controller.moveCamera(camera);
}); });
} }
goToCurrentLocation({Completer<GoogleMapController>? mapController, double? direction = 0.0, bool? animation}) { void goToCurrentLocation({Completer<GoogleMapController>? mapController, double? direction = 0.0, bool? animation}) {
Location.getCurrentLocation((location) { Location.getCurrentLocation((location) {
moveTo(location!, zoom: 17, mapController: mapController!, animation: animation, direction: direction!); moveTo(location!, zoom: 17, mapController: mapController!, animation: animation, direction: direction!);
}); });
@ -146,7 +145,7 @@ class _Map {
var routes = Map<String, DirectionsRoute>(); var routes = Map<String, DirectionsRoute>();
setRoutePolylines(LatLng? source, LatLng? destination, Set<Polyline> polylines, Completer<GoogleMapController> mapController, Function(DirectionsRoute?) completion) { void setRoutePolylines(LatLng? source, LatLng? destination, Set<Polyline> polylines, Completer<GoogleMapController> mapController, Function(DirectionsRoute?) completion) {
if (source == null || destination == null) { if (source == null || destination == null) {
completion(null); completion(null);
return; return;
@ -156,7 +155,7 @@ class _Map {
var destin = '${destination.latitude},${destination.longitude}'; var destin = '${destination.latitude},${destination.longitude}';
var routeId = '$origin->$destination'; var routeId = '$origin->$destination';
createPolyline(DirectionsRoute results) { void createPolyline(DirectionsRoute results) {
List<LatLng> polylineCoordinates = results.overviewPath!.map((e) => LatLng(e.latitude, e.longitude)).toList(); List<LatLng> polylineCoordinates = results.overviewPath!.map((e) => LatLng(e.latitude, e.longitude)).toList();
PolylineId id = PolylineId("route"); PolylineId id = PolylineId("route");
Polyline polyline = Polyline( Polyline polyline = Polyline(
@ -221,7 +220,7 @@ class _Map {
return LatLngBounds(northeast: LatLng(x1!, y1!), southwest: LatLng(x0!, y0!)); return LatLngBounds(northeast: LatLng(x1!, y1!), southwest: LatLng(x0!, y0!));
} }
focusCameraToLatLngBounds({LatLngBounds? bound, Completer<GoogleMapController>? mapController, double? padding}) async { void focusCameraToLatLngBounds({LatLngBounds? bound, Completer<GoogleMapController>? mapController, double? padding}) async {
if (bound == null) return; if (bound == null) return;
CameraUpdate camera = CameraUpdate.newLatLngBounds(bound, padding!); CameraUpdate camera = CameraUpdate.newLatLngBounds(bound, padding!);
@ -229,7 +228,7 @@ class _Map {
controller.animateCamera(camera); controller.animateCamera(camera);
} }
focusCameraTo2Points({LatLng? point1, LatLng? point2, Completer<GoogleMapController>? mapController, double? padding}) async { void focusCameraTo2Points({LatLng? point1, LatLng? point2, Completer<GoogleMapController>? mapController, double? padding}) async {
var source = point1; var source = point1;
var destination = point2; var destination = point2;
if (source != null && destination != null) { if (source != null && destination != null) {

@ -108,7 +108,7 @@ class OTPWidgetState extends State<OTPWidget> with SingleTickerProviderStateMixi
} }
} }
_calculateStrList() { void calculateStrList() {
if (strList.length > widget.maxLength) { if (strList.length > widget.maxLength) {
strList.length = widget.maxLength; strList.length = widget.maxLength;
} }
@ -123,7 +123,7 @@ class OTPWidgetState extends State<OTPWidget> with SingleTickerProviderStateMixi
focusNode = widget.focusNode ?? FocusNode(); focusNode = widget.focusNode ?? FocusNode();
_initTextController(); _initTextController();
_calculateStrList(); calculateStrList();
widget.controller?.addListener(_controllerListener); widget.controller?.addListener(_controllerListener);
focusNode?.addListener(_focusListener); focusNode?.addListener(_focusListener);
} }
@ -291,7 +291,7 @@ class OTPWidgetState extends State<OTPWidget> with SingleTickerProviderStateMixi
} }
Widget _pinBoxRow(BuildContext context) { Widget _pinBoxRow(BuildContext context) {
_calculateStrList(); calculateStrList();
List<Widget> pinCodes = List.generate(widget.maxLength, (int i) { List<Widget> pinCodes = List.generate(widget.maxLength, (int i) {
return _buildPinCode(i, context); return _buildPinCode(i, context);
}); });

Loading…
Cancel
Save