From 5644ccad7c01ab3052172dce1b5560343121fc06 Mon Sep 17 00:00:00 2001 From: nextwo <1234> Date: Tue, 14 Feb 2023 12:13:57 +0300 Subject: [PATCH] support null safety 2 --- .../http_status_manger.dart | 16 +- .../localization/localization.dart | 2 + .../firebase_notification_manger.dart | 4 +- .../api/device_transfer_provider.dart | 6 +- ...reventive_maintenance_visits_provider.dart | 8 +- .../api/regular_visits_provider.dart | 6 +- .../api/service_requests_provider.dart | 28 +- .../providers/api/user_provider.dart | 4 +- old_lib/models/app_notification.dart | 13 +- old_lib/models/department.dart | 4 +- old_lib/models/hospital.dart | 4 +- old_lib/models/issue.dart | 20 +- old_lib/models/lookup.dart | 7 +- old_lib/models/pantry/pentry.dart | 6 +- old_lib/models/part.dart | 6 +- old_lib/models/service_report.dart | 105 +++-- old_lib/models/subtitle.dart | 358 +++++++++--------- old_lib/models/timer_model.dart | 6 +- old_lib/models/user.dart | 36 +- old_lib/models/visits/visit.dart | 41 +- old_lib/models/visits/visits_group.dart | 47 ++- old_lib/models/visits/visits_search.dart | 36 +- .../device_transfer_details.dart | 10 +- .../request_device_transfer.dart | 48 ++- .../track_device_transfer.dart | 45 ++- .../update_device_transfer.dart | 54 ++- .../device_trancfer/device_transfer_list.dart | 32 +- .../views/widgets/loaders/image_loader.dart | 2 +- .../views/widgets/loaders/lazy_loading.dart | 24 +- .../widgets/loaders/loading_manager.dart | 10 +- old_lib/views/widgets/sound/record_sound.dart | 2 +- .../report/service_report_last_call.dart | 2 +- .../views/widgets/titles/app_sub_title.dart | 14 +- 33 files changed, 512 insertions(+), 494 deletions(-) diff --git a/old_lib/controllers/http_status_manger/http_status_manger.dart b/old_lib/controllers/http_status_manger/http_status_manger.dart index e5eb40ad..fa03cd0e 100644 --- a/old_lib/controllers/http_status_manger/http_status_manger.dart +++ b/old_lib/controllers/http_status_manger/http_status_manger.dart @@ -3,7 +3,7 @@ import '../../models/subtitle.dart'; class HttpStatusManger { static String getStatusMessage({ required int? status, - required Subtitle subtitle, + required Subtitle? subtitle, String? messageFor400, String? messageFor200, }) { @@ -11,28 +11,28 @@ class HttpStatusManger { return "careful null status"; } if (status == -1) { - return subtitle.currentlyServiceNotAvailable; + return subtitle?.currentlyServiceNotAvailable??""; } if (status == -2) { // client's request in process - return subtitle.waitUntilYourRequestComplete; + return subtitle?.waitUntilYourRequestComplete??""; } else if (status >= 200 && status < 300) { // client's request was successfully received - return messageFor200 ?? subtitle.requestCompleteSuccessfully; + return messageFor200 ?? subtitle?.requestCompleteSuccessfully??""; } else if (status >= 400 && status < 500) { // client's request have error switch (status) { case 400: - return messageFor400 ?? subtitle.failedToCompleteRequest; + return messageFor400 ?? subtitle?.failedToCompleteRequest??""; default: - return subtitle.failedToCompleteRequest; + return subtitle?.failedToCompleteRequest??""; } } else if (status >= 500) { // server error - return subtitle.currentlyServiceNotAvailable; + return subtitle?.currentlyServiceNotAvailable??""; } else { // no error match so return default error - return subtitle.failedToCompleteRequest; + return subtitle?.failedToCompleteRequest??""; } } } diff --git a/old_lib/controllers/localization/localization.dart b/old_lib/controllers/localization/localization.dart index fa866174..b07f0aef 100644 --- a/old_lib/controllers/localization/localization.dart +++ b/old_lib/controllers/localization/localization.dart @@ -5,6 +5,8 @@ import 'package:flutter/services.dart'; import '../../models/subtitle.dart'; + + class AppLocalization { AppLocalization(this.locale); diff --git a/old_lib/controllers/notification/firebase_notification_manger.dart b/old_lib/controllers/notification/firebase_notification_manger.dart index f92e68e7..3ea76b41 100644 --- a/old_lib/controllers/notification/firebase_notification_manger.dart +++ b/old_lib/controllers/notification/firebase_notification_manger.dart @@ -57,7 +57,7 @@ class FirebaseNotificationManger { AppNotification notification = AppNotification.fromJson(message.data); Navigator.pushNamed( context, - notification.path, + notification.path??"", arguments: notification.requestId, ); }); @@ -67,7 +67,7 @@ class FirebaseNotificationManger { NotificationManger.showNotification( title: message.notification?.title, subtext: message.notification?.body, - hashcode: int.tryParse(notification.requestId) ?? 1, + hashcode: int.tryParse(notification.requestId??"0") ?? 1, payload: json.encode(message.data), ); return; diff --git a/old_lib/controllers/providers/api/device_transfer_provider.dart b/old_lib/controllers/providers/api/device_transfer_provider.dart index f76fde18..936e295e 100644 --- a/old_lib/controllers/providers/api/device_transfer_provider.dart +++ b/old_lib/controllers/providers/api/device_transfer_provider.dart @@ -98,12 +98,12 @@ class DeviceTransferProvider extends ChangeNotifier { Future createRequest({ required String host, - required User user, + required User? user, required DeviceTransfer model, }) async { Map body = { - "uid": user.id.toString(), - "token": user.token ?? "", + "uid": user?.id.toString(), + "token": user?.token ?? "", "serial_id": model.device?.id ?? "", "destination_client": model.receiver?.client?.id ?? "", "destination_department": model.receiver?.department?.id ?? "", diff --git a/old_lib/controllers/providers/api/preventive_maintenance_visits_provider.dart b/old_lib/controllers/providers/api/preventive_maintenance_visits_provider.dart index f5a1de31..a260bfc6 100644 --- a/old_lib/controllers/providers/api/preventive_maintenance_visits_provider.dart +++ b/old_lib/controllers/providers/api/preventive_maintenance_visits_provider.dart @@ -95,8 +95,8 @@ class PreventiveMaintenanceVisitsProvider extends ChangeNotifier { }) async { Response response; Map body = group.toJson(); - body["token"] = user.token; - body["uid"] = user.id; + body["token"] = user.token??""; + body["uid"] = user.id??""; //userId = 397.toString(); // testing id to view data try { response = await post( @@ -107,11 +107,11 @@ class PreventiveMaintenanceVisitsProvider extends ChangeNotifier { stateCode = response.statusCode; if (response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received - for (var visit in group.visits) { + for (var visit in (group.visits??[])) { visit.status = group.status; visit.actualDate = group.date.toString().split(" ").first; } - group.visits.clear(); + group.visits?.clear(); notifyListeners(); } diff --git a/old_lib/controllers/providers/api/regular_visits_provider.dart b/old_lib/controllers/providers/api/regular_visits_provider.dart index 06489ffd..4f3de068 100644 --- a/old_lib/controllers/providers/api/regular_visits_provider.dart +++ b/old_lib/controllers/providers/api/regular_visits_provider.dart @@ -107,7 +107,7 @@ class RegularVisitsProvider extends ChangeNotifier { Response response; Map body = group.toJson(); body["token"] = user.token ?? ""; - body["uid"] = user.id; + body["uid"] = user.id??""; //userId = 397.toString(); // testing id to view data try { response = await post( @@ -157,8 +157,8 @@ class RegularVisitsProvider extends ChangeNotifier { try { Response response; Map body = pentry.toMap(); - body["uid"] = user.id; - body["token"] = user.token; + body["uid"] = user.id??""; + body["token"] = user.token??""; response = await post( Uri.parse("$host${URLs.updatePentry}/${visit.id}"), body: body, diff --git a/old_lib/controllers/providers/api/service_requests_provider.dart b/old_lib/controllers/providers/api/service_requests_provider.dart index a0c20e45..bf04399d 100644 --- a/old_lib/controllers/providers/api/service_requests_provider.dart +++ b/old_lib/controllers/providers/api/service_requests_provider.dart @@ -135,7 +135,7 @@ class ServiceRequestsProvider extends ChangeNotifier { "token": user.token ?? "", "sn_id": serviceRequest.deviceId ?? "", "date": (DateTime.now().millisecondsSinceEpoch).toString(), - "client": user.hospital.id ?? '', + "client": user.hospital?.id ?? '', "complaint": serviceRequest.maintenanceIssue, "image": json.encode(serviceRequest.devicePhotos), "priority": (serviceRequest.priority?.id).toString(), @@ -174,8 +174,8 @@ class ServiceRequestsProvider extends ChangeNotifier { }) async { Response response; Map body = issue.toMap(); - body["uid"] = user.id; - body["token"] = user.token; + body["uid"] = user.id??""; + body["token"] = user.token??""; try { response = await post( Uri.parse(host + URLs.createReport), @@ -199,8 +199,8 @@ class ServiceRequestsProvider extends ChangeNotifier { }) async { Response response; Map body = {}; - body["uid"] = user.id; - body["token"] = user.token; + body["uid"] = user.id??""; + body["token"] = user.token??""; body["nid"] = request.id ?? ''; body["date"] = newDate; body["ass_emp"] = employee.id.toString(); @@ -228,8 +228,8 @@ class ServiceRequestsProvider extends ChangeNotifier { }) async { Response response; Map body = report.toMap(); - body["uid"] = user.id; - body["token"] = user.token; + body["uid"] = user.id??""; + body["token"] = user.token??""; body["job_id"] = request.id ?? ''; try { response = await post( @@ -285,8 +285,8 @@ class ServiceRequestsProvider extends ChangeNotifier { }) async { Response response; Map body = report.toMap(); - body["uid"] = user.id; - body["token"] = user.token; + body["uid"] = user.id??""; + body["token"] = user.token??""; body["job_id"] = request.id ?? ''; body["report_id"] = request.reportID ?? ''; try { @@ -314,15 +314,15 @@ class ServiceRequestsProvider extends ChangeNotifier { }) async { Response response; Map body = {}; - body["uid"] = user.id; - body["token"] = user.token; + body["uid"] = user.id??""; + body["token"] = user.token??""; body["job_id"] = request.id ?? ''; body["start_time"] = - (timer.startAt.millisecondsSinceEpoch / 1000).toStringAsFixed(0); + ((timer.startAt?.millisecondsSinceEpoch??0) / 1000).toStringAsFixed(0); body["end_time"] = - (timer.endAt.millisecondsSinceEpoch / 1000).toStringAsFixed(0); + ((timer.endAt?.millisecondsSinceEpoch??0) / 1000).toStringAsFixed(0); body["working_hours"] = - (timer.durationInSecond / 60 / 60).toStringAsFixed(5); + ((timer.durationInSecond??0) / 60 / 60).toStringAsFixed(5); body["report_id"] = request.reportID ?? ''; try { response = await post( diff --git a/old_lib/controllers/providers/api/user_provider.dart b/old_lib/controllers/providers/api/user_provider.dart index bf8c9cc2..5265114e 100644 --- a/old_lib/controllers/providers/api/user_provider.dart +++ b/old_lib/controllers/providers/api/user_provider.dart @@ -128,8 +128,8 @@ class UserProvider extends ChangeNotifier { Map jsonObject = {}; jsonObject["uid"] = user.id; jsonObject["token"] = user.token; - if (user.department.id != _user?.department.id) { - jsonObject["department"] = user.department.id; + if (user.department?.id != _user?.department?.id) { + jsonObject["department"] = user.department?.id; } if (user.whatsApp != _user?.whatsApp) { jsonObject["whatsapp"] = user.whatsApp; diff --git a/old_lib/models/app_notification.dart b/old_lib/models/app_notification.dart index d199a07e..528b412a 100644 --- a/old_lib/models/app_notification.dart +++ b/old_lib/models/app_notification.dart @@ -1,11 +1,12 @@ -import 'package:test_sa/views/pages/user/requests/future_request_service_details.dart'; + +import '../views/pages/user/requests/future_request_service_details.dart'; class AppNotification{ - String requestId; - String title; - String description; - String date; - String path; + String? requestId; + String? title; + String? description; + String? date; + String? path; AppNotification({ this.requestId, diff --git a/old_lib/models/department.dart b/old_lib/models/department.dart index 27df7b06..cee28dba 100644 --- a/old_lib/models/department.dart +++ b/old_lib/models/department.dart @@ -1,6 +1,6 @@ class Department{ - String id; - String name; + String? id; + String? name; Department({ this.id, diff --git a/old_lib/models/hospital.dart b/old_lib/models/hospital.dart index 34e2e3a9..ca541477 100644 --- a/old_lib/models/hospital.dart +++ b/old_lib/models/hospital.dart @@ -1,6 +1,6 @@ class Hospital{ - String id; - String name; + String? id; + String? name; Hospital({ this.id, diff --git a/old_lib/models/issue.dart b/old_lib/models/issue.dart index cc186eb6..bca0e70f 100644 --- a/old_lib/models/issue.dart +++ b/old_lib/models/issue.dart @@ -1,10 +1,10 @@ class Issue{ - String title; - String userId; - List reports; - String serviceRequestId; - String description; - bool isSelected; + String? title; + String? userId; + List? reports; + String? serviceRequestId; + String? description; + bool? isSelected; Issue({ this.description, @@ -17,11 +17,11 @@ class Issue{ Map toMap(){ Map map ={}; - if(title != null) map["title"] = title; + if(title != null) map["title"] = title??""; if(reports != null) map["issue_report"] = reports.toString(); - if(userId != null) map["uid"] = userId; - if(description != null) map["desc"] = description; - if(serviceRequestId != null) map["call_id"] = serviceRequestId; + if(userId != null) map["uid"] = userId??""; + if(description != null) map["desc"] = description??""; + if(serviceRequestId != null) map["call_id"] = serviceRequestId??""; return map; } } \ No newline at end of file diff --git a/old_lib/models/lookup.dart b/old_lib/models/lookup.dart index 93e1f9ec..0ddf72f4 100644 --- a/old_lib/models/lookup.dart +++ b/old_lib/models/lookup.dart @@ -1,8 +1,8 @@ class Lookup{ - final String label; - final String key; - final int id; + final String? label; + final String? key; + final int? id; const Lookup({ this.label, @@ -29,7 +29,6 @@ class Lookup{ } factory Lookup.fromJson(Map parsedJson){ - if(parsedJson["id"] == null && parsedJson["uid"] == null) return null; return Lookup( label: parsedJson["value"], id: parsedJson["id"] is int diff --git a/old_lib/models/pantry/pentry.dart b/old_lib/models/pantry/pentry.dart index 967b8bdc..a90dd9b5 100644 --- a/old_lib/models/pantry/pentry.dart +++ b/old_lib/models/pantry/pentry.dart @@ -54,11 +54,11 @@ class Pentry { .toStringAsFixed(0); if (timer != null) { map["start_date"] = - (timer!.startAt.millisecondsSinceEpoch / 1000).toStringAsFixed(0); + ((timer!.startAt?.millisecondsSinceEpoch??0) / 1000).toStringAsFixed(0); map["end_date"] = - ((timer!.endAt).millisecondsSinceEpoch / 1000).toStringAsFixed(0); + (((timer!.endAt)?.millisecondsSinceEpoch??0) / 1000).toStringAsFixed(0); map["working_hours"] = - (timer!.durationInSecond / 60 / 60).toStringAsFixed(5); + ((timer!.durationInSecond??0) / 60 / 60).toStringAsFixed(5); } // if(contacts?.isNotEmpty == true) { // for(int i = 0;i parts; - String image; - Device device; - String quantity; - String jobSheetNumber; - TimerModel timer; + String? id; + String? operatingHours; + DateTime? visitDate; + DateTime? endDate; + Lookup? serviceType; + Lookup? callLastSituation; + Lookup? status; + Lookup? type; + Lookup? reason; + String? faultDescription; + String? workPreformed; + String? travelingHours; + String? invoiceNumber; + String? invoiceCode; + List? parts; + String? image; + Device? device; + String? quantity; + String? jobSheetNumber; + TimerModel? timer; ServiceReport({ this.id, @@ -36,7 +35,6 @@ class ServiceReport { this.status, this.type, this.faultDescription, - //this.workHours, this.travelingHours, this.parts, this.workPreformed, @@ -54,38 +52,39 @@ class ServiceReport { Map toMap(){ Map _map = {}; - if(id != null) _map["id"] = id; - if(visitDate != null) _map["visit_date"] = (visitDate.millisecondsSinceEpoch ~/ 1000).toString(); - if(serviceType != null) _map["service_type"] = serviceType.id.toString(); - if(status != null) _map["status"] = status.id.toString(); - if(type != null) _map["service_report_type"] = type.id.toString(); - if(faultDescription != null && faultDescription.isNotEmpty) _map["fault_description"] = faultDescription; + if(id != null) _map["id"] = id??""; + if(visitDate != null) _map["visit_date"] = ((visitDate?.millisecondsSinceEpoch??0) ~/ 1000).toString(); + if(serviceType != null) _map["service_type"] = serviceType?.id.toString()??""; + if(status != null) _map["status"] = status?.id.toString()??""; + if(type != null) _map["service_report_type"] = type?.id.toString()??""; + if(faultDescription != null && (faultDescription?.isNotEmpty??false)) _map["fault_description"] = faultDescription??""; //if(workHours != null && workHours.isNotEmpty) _map["working_hours"] = workHours; if(timer != null){ - _map["start_time"] = (timer.startAt.millisecondsSinceEpoch / 1000).toStringAsFixed(0); - _map["end_time"] = ((timer.endAt ?? DateTime.now()).millisecondsSinceEpoch / 1000).toStringAsFixed(0); - _map["working_hours"] = (timer.durationInSecond / 60 / 60).toStringAsFixed(5); + _map["start_time"] = ((timer?.startAt?.millisecondsSinceEpoch??0) / 1000).toStringAsFixed(0); + _map["end_time"] = ((timer?.endAt ?? DateTime.now()).millisecondsSinceEpoch / 1000).toStringAsFixed(0); + _map["working_hours"] = ((timer?.durationInSecond??0) / 60 / 60).toStringAsFixed(5); } - if(travelingHours != null && travelingHours.isNotEmpty) _map["traveling_hours"] = travelingHours; - if(workPreformed != null && workPreformed.isNotEmpty) _map["work_performed"] = workPreformed; - if(jobSheetNumber != null && jobSheetNumber.isNotEmpty) _map["job_sheet_no"] = jobSheetNumber; - if(parts != null && parts.isNotEmpty){ + if(travelingHours != null && (travelingHours?.isNotEmpty??false)) _map["traveling_hours"] = travelingHours??""; + if(workPreformed != null && (workPreformed?.isNotEmpty??false)) _map["work_performed"] = workPreformed??""; + if(jobSheetNumber != null && (jobSheetNumber?.isNotEmpty??false)) _map["job_sheet_no"] = jobSheetNumber??""; + if(parts != null && (parts?.isNotEmpty??false)){ Map _partsMap = {}; - parts.forEach((part) { - if(part.id.isNotEmpty) - _partsMap[part.id] = part.quantity; + parts?.forEach((part) { + if((part.id?.isNotEmpty??false)) { + _partsMap[part?.id??""] = part.quantity; + } }); _map["parts"] = json.encode(_partsMap); } - if(device?.id != null && device.id != null) _map["eq_id"] = device.id; - if(quantity != null && quantity.isNotEmpty) _map["qty"] = quantity; - if(endDate != null) _map["end_date"] = (endDate.millisecondsSinceEpoch ~/ 1000).toString(); - if(reason != null) _map["reasons"] = reason.id.toString(); - if(operatingHours != null && operatingHours.isNotEmpty) _map["operation_hours"] = operatingHours; - if(callLastSituation != null) _map["call_last_situtation"] = callLastSituation.id.toString(); - if(image != null) _map["image"] = image; - if(invoiceCode != null) _map["invoice_no"] = invoiceCode; - if(invoiceNumber != null) _map["invoice_code"] = invoiceNumber; + if(device?.id != null && device?.id != null) _map["eq_id"] = device?.id??""; + if(quantity != null && (quantity?.isNotEmpty??false)) _map["qty"] = quantity??""; + if(endDate != null) _map["end_date"] = ((endDate?.millisecondsSinceEpoch??0) ~/ 1000).toString(); + if(reason != null) _map["reasons"] = reason?.id.toString()??""; + if(operatingHours != null && (operatingHours?.isNotEmpty??false)) _map["operation_hours"] = operatingHours??""; + if(callLastSituation != null) _map["call_last_situtation"] = callLastSituation?.id.toString()??""; + if(image != null) _map["image"] = image??""; + if(invoiceCode != null) _map["invoice_no"] = invoiceCode??""; + if(invoiceNumber != null) _map["invoice_code"] = invoiceNumber??""; return _map; } @@ -102,7 +101,7 @@ class ServiceReport { if(parts == null) return false; //if(endDate == null) return false; //if(reason == null) return false; - if((device?.id == null || device.id.isEmpty) && type?.id != 1) return false; + if((device?.id == null ||(device?.id?.isEmpty??false)) && type?.id != 1) return false; //if(quantity == null || quantity.isEmpty) return false; //if(image == null) return false; return true; @@ -144,6 +143,6 @@ class ServiceReport { static getDate(String date){ return date == null || date.isEmpty - ? null : DateTime.fromMillisecondsSinceEpoch(int.tryParse(date) * 1000); + ? null : DateTime.fromMillisecondsSinceEpoch((int.tryParse(date)??0) * 1000); } } \ No newline at end of file diff --git a/old_lib/models/subtitle.dart b/old_lib/models/subtitle.dart index a2f212c2..e11df311 100644 --- a/old_lib/models/subtitle.dart +++ b/old_lib/models/subtitle.dart @@ -226,187 +226,187 @@ class Subtitle{ } Subtitle({ - @required this.currentlyServiceNotAvailable, - @required this.waitUntilYourRequestComplete, - @required this.requestCompleteSuccessfully, - @required this.failedToCompleteRequest, - @required this.update, - @required this.cancel, - @required this.confirm, - @required this.exit, - @required this.exitAlert, - @required this.signOutAlert, - @required this.language, - @required this.name, - @required this.email, - @required this.phoneNumber, - @required this.password, - @required this.forgetPassword, - @required this.confirmPassword, - @required this.signIn, - @required this.signUp, - @required this.nameValidateMessage, - @required this.emailValidateMessage, - @required this.phoneNumberValidateMessage, - @required this.passwordValidateMessage, - @required this.confirmPasswordValidateMessage, - @required this.emailExist, - @required this.forgetPasswordWithMark, - @required this.phoneNumberExist, - @required this.showPassword, - @required this.signOut, - @required this.wrongEmailOrPassword, - @required this.next, - @required this.back, - @required this.search, - @required this.searchByName, - @required this.address, - @required this.description, - @required this.title, - @required this.addressNotFound, - @required this.addressValidateMessage, - @required this.dataNotFound, - @required this.descriptionNotFound, - @required this.descriptionValidateMessage, - @required this.edit, - @required this.emailNotFound, - @required this.from, - @required this.linkNotFound, - @required this.nameNotFound, - @required this.phoneNumberNotFound, - @required this.titleNotFound, - @required this.titleValidateMessage, - @required this.to, - @required this.urlNotFound, + required this.currentlyServiceNotAvailable, + required this.waitUntilYourRequestComplete, + required this.requestCompleteSuccessfully, + required this.failedToCompleteRequest, + required this.update, + required this.cancel, + required this.confirm, + required this.exit, + required this.exitAlert, + required this.signOutAlert, + required this.language, + required this.name, + required this.email, + required this.phoneNumber, + required this.password, + required this.forgetPassword, + required this.confirmPassword, + required this.signIn, + required this.signUp, + required this.nameValidateMessage, + required this.emailValidateMessage, + required this.phoneNumberValidateMessage, + required this.passwordValidateMessage, + required this.confirmPasswordValidateMessage, + required this.emailExist, + required this.forgetPasswordWithMark, + required this.phoneNumberExist, + required this.showPassword, + required this.signOut, + required this.wrongEmailOrPassword, + required this.next, + required this.back, + required this.search, + required this.searchByName, + required this.address, + required this.description, + required this.title, + required this.addressNotFound, + required this.addressValidateMessage, + required this.dataNotFound, + required this.descriptionNotFound, + required this.descriptionValidateMessage, + required this.edit, + required this.emailNotFound, + required this.from, + required this.linkNotFound, + required this.nameNotFound, + required this.phoneNumberNotFound, + required this.titleNotFound, + required this.titleValidateMessage, + required this.to, + required this.urlNotFound, - @required this.nameExist, - @required this.unitRequired, - @required this.unite, - @required this.hospitalRequired, - @required this.whatsApp, - @required this.submit, - @required this.shareAntherIssue, - @required this.reportIssue, - @required this.noUniteFound, - @required this.pickUnite, - @required this.noHospitalFound, - @required this.pickHospital, - @required this.shareApp, - @required this.ourWebsite, - @required this.linkedIn, - @required this.facebook, - @required this.hotLine, - @required this.trackServiceRequest, - @required this.newServiceRequest, - @required this.deviceModel, - @required this.noServiceRequestFound, - @required this.engineerName, - @required this.serviceRequests, - @required this.jobSheetNumber, - @required this.visitDate, - @required this.workPerformed, - @required this.faultDescription, - @required this.serviceRequestInformation, - @required this.maintenanceIssue, - @required this.deviceArName, - @required this.hospital, - @required this.status, - @required this.date, - @required this.engineerPhone, - @required this.device, - @required this.deviceSN, - @required this.details, - @required this.requestInformation, - @required this.model, - @required this.brand, - @required this.noDeviceFound, - @required this.noDateFound, - @required this.searchBySn, - @required this.pickDevice, - @required this.notifications, - @required this.notificationsNotFound, - @required this.twitter, - @required this.add, - @required this.code, - @required this.deviceEnName, - @required this.deviceName, - @required this.serialNumber, - @required this.policy, - @required this.clearSearch, - @required this.closed, - @required this.create, - @required this.createServiceRequest, - @required this.delete, - @required this.deviceImages, - @required this.deviceRequired, - @required this.general, - @required this.maintenanceIssueRequired, - @required this.maxImagesNumberIs5, - @required this.newWord, - @required this.noModelFound, - @required this.noSnFound, - @required this.reason1, - @required this.reason2, - @required this.reason3, - @required this.reason4, - @required this.reason5, - @required this.repaired, - @required this.repeated, - @required this.sn, - @required this.underRepair, - @required this.actualDate, - @required this.expectDate, - @required this.visitInformation, - @required this.regularVisitsUpdatedSuccessfully, - @required this.regularVisits, - @required this.updateRegularVisits, - @required this.updatingDots, - @required this.preventiveMaintenanceUpdatedSuccessfully, - @required this.updatePreventiveMaintenance, - @required this.preventiveMaintenance, - @required this.requiredStatus, - @required this.noSerialNumberFound, - @required this.updateVisitsGroup, - @required this.pickFromGallery, - @required this.pickFromCamera, - @required this.images, - @required this.done, - @required this.imagesRequired, - @required this.notYet, - @required this.noVisitsFound, - @required this.onHold, - @required this.nextVisitDate, - @required this.contactStatus, - @required this.travelingHours, - @required this.workingHours, - @required this.taskStatus, - @required this.image, - @required this.pickImage, - @required this.requiredImage, - @required this.activationAlert, + required this.nameExist, + required this.unitRequired, + required this.unite, + required this.hospitalRequired, + required this.whatsApp, + required this.submit, + required this.shareAntherIssue, + required this.reportIssue, + required this.noUniteFound, + required this.pickUnite, + required this.noHospitalFound, + required this.pickHospital, + required this.shareApp, + required this.ourWebsite, + required this.linkedIn, + required this.facebook, + required this.hotLine, + required this.trackServiceRequest, + required this.newServiceRequest, + required this.deviceModel, + required this.noServiceRequestFound, + required this.engineerName, + required this.serviceRequests, + required this.jobSheetNumber, + required this.visitDate, + required this.workPerformed, + required this.faultDescription, + required this.serviceRequestInformation, + required this.maintenanceIssue, + required this.deviceArName, + required this.hospital, + required this.status, + required this.date, + required this.engineerPhone, + required this.device, + required this.deviceSN, + required this.details, + required this.requestInformation, + required this.model, + required this.brand, + required this.noDeviceFound, + required this.noDateFound, + required this.searchBySn, + required this.pickDevice, + required this.notifications, + required this.notificationsNotFound, + required this.twitter, + required this.add, + required this.code, + required this.deviceEnName, + required this.deviceName, + required this.serialNumber, + required this.policy, + required this.clearSearch, + required this.closed, + required this.create, + required this.createServiceRequest, + required this.delete, + required this.deviceImages, + required this.deviceRequired, + required this.general, + required this.maintenanceIssueRequired, + required this.maxImagesNumberIs5, + required this.newWord, + required this.noModelFound, + required this.noSnFound, + required this.reason1, + required this.reason2, + required this.reason3, + required this.reason4, + required this.reason5, + required this.repaired, + required this.repeated, + required this.sn, + required this.underRepair, + required this.actualDate, + required this.expectDate, + required this.visitInformation, + required this.regularVisitsUpdatedSuccessfully, + required this.regularVisits, + required this.updateRegularVisits, + required this.updatingDots, + required this.preventiveMaintenanceUpdatedSuccessfully, + required this.updatePreventiveMaintenance, + required this.preventiveMaintenance, + required this.requiredStatus, + required this.noSerialNumberFound, + required this.updateVisitsGroup, + required this.pickFromGallery, + required this.pickFromCamera, + required this.images, + required this.done, + required this.imagesRequired, + required this.notYet, + required this.noVisitsFound, + required this.onHold, + required this.nextVisitDate, + required this.contactStatus, + required this.travelingHours, + required this.workingHours, + required this.taskStatus, + required this.image, + required this.pickImage, + required this.requiredImage, + required this.activationAlert, - @required this.callId, - @required this.requiredWord, - @required this.quantity, - @required this.callLastSituation, - @required this.invoiceNumber, - @required this.invoiceCode, - @required this.attachImage, - @required this.customer, - @required this.editServiceReport, - @required this.newServiceReport, - @required this.number, - @required this.operatingHours, - @required this.partNumber, - @required this.reasons, - @required this.reportStatus, - @required this.reportType, - @required this.serviceType, - @required this.workPreformed, - @required this.alert, - @required this.duplicateAlert, - @required this.duplicateAlertMessage, - @required this.duplicateRequest, + required this.callId, + required this.requiredWord, + required this.quantity, + required this.callLastSituation, + required this.invoiceNumber, + required this.invoiceCode, + required this.attachImage, + required this.customer, + required this.editServiceReport, + required this.newServiceReport, + required this.number, + required this.operatingHours, + required this.partNumber, + required this.reasons, + required this.reportStatus, + required this.reportType, + required this.serviceType, + required this.workPreformed, + required this.alert, + required this.duplicateAlert, + required this.duplicateAlertMessage, + required this.duplicateRequest, }); factory Subtitle.fromJson(Map parsedJson){ diff --git a/old_lib/models/timer_model.dart b/old_lib/models/timer_model.dart index 191128fd..b2a7fd7f 100644 --- a/old_lib/models/timer_model.dart +++ b/old_lib/models/timer_model.dart @@ -1,7 +1,7 @@ class TimerModel { - DateTime startAt; - DateTime endAt; - int durationInSecond; + DateTime? startAt; + DateTime? endAt; + int? durationInSecond; TimerModel({this.startAt,this.endAt,this.durationInSecond}); } \ No newline at end of file diff --git a/old_lib/models/user.dart b/old_lib/models/user.dart index caa9e7fb..69e5d3fe 100644 --- a/old_lib/models/user.dart +++ b/old_lib/models/user.dart @@ -1,20 +1,22 @@ -import 'package:test_sa/controllers/notification/firebase_notification_manger.dart'; -import 'package:test_sa/models/department.dart'; -import 'package:test_sa/models/enums/user_types.dart'; -import 'package:test_sa/models/hospital.dart'; + + +import '../controllers/notification/firebase_notification_manger.dart'; +import 'department.dart'; +import 'enums/user_types.dart'; +import 'hospital.dart'; class User { - String id; + String? id; String userName; String password; String email; - String image; - Hospital hospital; - Department department; - UsersTypes type; - String phoneNumber; - String whatsApp; - String token; + String? image; + Hospital? hospital; + Department? department; + UsersTypes? type; + String? phoneNumber; + String? whatsApp; + String? token; bool isActive; User( @@ -22,7 +24,7 @@ class User { this.userName = "", this.email = "", this.password = "", - this.phoneNumber = "", + this.phoneNumber, this.hospital, this.image, this.department, @@ -42,9 +44,9 @@ class User { Map toUpdateProfileJson() { Map jsonObject = {}; - if (department?.id != null && department.id.isNotEmpty) jsonObject["department"] = department.id; - if (whatsApp != null && whatsApp.isNotEmpty) jsonObject["whatsapp"] = whatsApp; - if (phoneNumber != null && phoneNumber.isNotEmpty) jsonObject["phone"] = phoneNumber; + if (department?.id != null && (department?.id?.isNotEmpty??false)) jsonObject["department"] = department?.id??""; + if (whatsApp != null && (whatsApp?.isNotEmpty??false)) jsonObject["whatsapp"] = whatsApp; + if (phoneNumber != null && (phoneNumber?.isNotEmpty??false)) jsonObject["phone"] = phoneNumber; return jsonObject; } @@ -54,7 +56,7 @@ class User { "username": userName, "email": email, "whatsapp": whatsApp, - "client": hospital.id, + "client": hospital?.id, "department": department?.id, "phone": phoneNumber, "pass": password, diff --git a/old_lib/models/visits/visit.dart b/old_lib/models/visits/visit.dart index b6562e4c..f3823b77 100644 --- a/old_lib/models/visits/visit.dart +++ b/old_lib/models/visits/visit.dart @@ -1,24 +1,25 @@ -import 'package:test_sa/models/lookup.dart'; + +import '../lookup.dart'; class Visit{ - String id; - String serialNumber; - String expectDate; - String actualDate; - String hospitalId; - String hospitalName; - String deviceId; - String deviceSerialNumber; - String deviceArabicName; - String deviceEnglishName; - String employId; - String employName; - String modelAndBrand; - String contactStatus; - Lookup status; - String assignTo; - String deviceNumber; - List images; + String? id; + String? serialNumber; + String? expectDate; + String? actualDate; + String? hospitalId; + String? hospitalName; + String? deviceId; + String? deviceSerialNumber; + String? deviceArabicName; + String? deviceEnglishName; + String? employId; + String? employName; + String? modelAndBrand; + String? contactStatus; + Lookup? status; + String? assignTo; + String? deviceNumber; + List? images; Visit({ this.id, @@ -60,7 +61,7 @@ class Visit{ contactStatus: parsedJson["contactStatus"], images: List.from(parsedJson["images"] ?? []), status: Lookup( - id: int.tryParse(parsedJson["status"] ?? "-1"), // actual value (0,1,2) + id: int.tryParse(parsedJson["status"] ?? "-1")??-1, // actual value (0,1,2) label: parsedJson["status_value"] // text value ), assignTo: parsedJson["assigned_to"], diff --git a/old_lib/models/visits/visits_group.dart b/old_lib/models/visits/visits_group.dart index abe6dfc0..05ca4c65 100644 --- a/old_lib/models/visits/visits_group.dart +++ b/old_lib/models/visits/visits_group.dart @@ -1,17 +1,19 @@ -import 'package:test_sa/models/lookup.dart'; -import 'package:test_sa/models/visits/visit.dart'; + + +import '../lookup.dart'; +import 'visit.dart'; class VisitsGroup{ - String userId; - String workingHours; - String travelingHours; - String jobSheetNumber; - String image; - Lookup status; - Lookup taskStatus; - DateTime date; - List visits; + String? userId; + String? workingHours; + String? travelingHours; + String? jobSheetNumber; + String? image; + Lookup? status; + Lookup? taskStatus; + DateTime? date; + List? visits; VisitsGroup({ this.userId, @@ -27,17 +29,20 @@ class VisitsGroup{ Map toJson(){ Map jsonObject = {}; - jsonObject["nids"] = visits.map((e) => e.id).toList().join(','); - if(status != null) jsonObject["status"] = status.id.toString(); + jsonObject["nids"] = visits!.map((e) => e.id).toList().join(','); + if(status != null) jsonObject["status"] = status?.id.toString()??""; if(date != null) jsonObject["date"] = date.toString().split(" ").first; - if(jobSheetNumber != null && jobSheetNumber.isNotEmpty) - jsonObject["job_sheet_no"] = jobSheetNumber; - if(travelingHours != null && travelingHours.isNotEmpty) - jsonObject["traveling_hours"] = travelingHours; - if(workingHours != null && workingHours.isNotEmpty) - jsonObject["working_hours"] = workingHours; - if(image != null) jsonObject["image"] = image; - if(taskStatus != null) jsonObject["task_status"] = taskStatus.id.toString(); + if(jobSheetNumber != null && (jobSheetNumber?.isNotEmpty??false)) { + jsonObject["job_sheet_no"] = jobSheetNumber!; + } + if(travelingHours != null &&(travelingHours?.isNotEmpty??false)) { + jsonObject["traveling_hours"] = travelingHours??""; + } + if(workingHours != null && (workingHours?.isNotEmpty??false)) { + jsonObject["working_hours"] = workingHours??""; + } + if(image != null) jsonObject["image"] = image??""; + if(taskStatus != null) jsonObject["task_status"] = taskStatus?.id.toString()??""; return jsonObject; } diff --git a/old_lib/models/visits/visits_search.dart b/old_lib/models/visits/visits_search.dart index 7cfd4ceb..70454b9b 100644 --- a/old_lib/models/visits/visits_search.dart +++ b/old_lib/models/visits/visits_search.dart @@ -1,14 +1,14 @@ class VisitsSearch{ - String deviceSerialNumber; - String hospitalName; - String brand; - String model; - String contactStatus; - DateTime expectedDateFrom; - DateTime expectedDateTo; - DateTime actualDateFrom; - DateTime actualDateTo; - int statusValue; + String? deviceSerialNumber; + String? hospitalName; + String? brand; + String? model; + String? contactStatus; + DateTime? expectedDateFrom; + DateTime? expectedDateTo; + DateTime? actualDateFrom; + DateTime? actualDateTo; + int? statusValue; VisitsSearch({ this.deviceSerialNumber, @@ -38,36 +38,36 @@ class VisitsSearch{ String toSearchString(){ String _search = ""; - if(deviceSerialNumber != null && deviceSerialNumber.isNotEmpty){ + if(deviceSerialNumber != null && (deviceSerialNumber?.isNotEmpty??false)){ _search += "&sn_id=$deviceSerialNumber"; } - if(hospitalName != null && hospitalName.isNotEmpty){ + if(hospitalName != null && (hospitalName?.isNotEmpty??false)){ _search += "&client=$hospitalName"; } - if(brand != null && brand.isNotEmpty){ + if(brand != null && (brand?.isNotEmpty??false)){ _search += "&brand=$brand"; } - if(model != null && model.isNotEmpty){ + if(model != null && (model?.isNotEmpty??false)){ _search += "&model=$model"; } if(expectedDateFrom != null){ - _search += "&expected_date_from=${expectedDateFrom.millisecondsSinceEpoch ~/ 1000}"; + _search += "&expected_date_from=${(expectedDateFrom?.millisecondsSinceEpoch??0) ~/ 1000}"; } if(expectedDateTo != null){ - _search += "&expected_date_to=${expectedDateTo.millisecondsSinceEpoch~/1000}"; + _search += "&expected_date_to=${(expectedDateTo?.millisecondsSinceEpoch??0) ~/1000}"; } if(actualDateFrom != null){ - _search += "&actual_date_from=${actualDateFrom.millisecondsSinceEpoch ~/ 1000}"; + _search += "&actual_date_from=${(actualDateFrom?.millisecondsSinceEpoch??0) ~/ 1000}"; } if(actualDateTo != null){ - _search += "&actual_date_to=${actualDateTo.millisecondsSinceEpoch~/1000}"; + _search += "&actual_date_to=${(actualDateTo?.millisecondsSinceEpoch??0) ~/1000}"; } if(statusValue != null){ diff --git a/old_lib/views/pages/device_transfer/device_transfer_details.dart b/old_lib/views/pages/device_transfer/device_transfer_details.dart index 20e80a0e..64a519b6 100644 --- a/old_lib/views/pages/device_transfer/device_transfer_details.dart +++ b/old_lib/views/pages/device_transfer/device_transfer_details.dart @@ -45,12 +45,12 @@ class _DeviceTransferDetailsState extends State { @override Widget build(BuildContext context) { - _subtitle = AppLocalization.of(context).subtitle; + _subtitle = AppLocalization.of(context)?.subtitle; _userProvider = Provider.of(context); _settingProvider = Provider.of(context); _deviceTransferProvider = Provider.of(context); - _isSender = _userProvider?.user.id == widget.model.sender?.userId; - _isReceiver = _userProvider?.user.id == widget.model.receiver?.userId; + _isSender = _userProvider?.user?.id == widget.model.sender?.userId; + _isReceiver = _userProvider?.user?.id == widget.model.receiver?.userId; return Scaffold( key: _scaffoldKey, body: SafeArea( @@ -92,11 +92,11 @@ class _DeviceTransferDetailsState extends State { children: [ RequestInfoRow( title: _subtitle?.title??"", - info: widget.model.title, + info: widget.model.title??"", ), RequestInfoRow( title: _subtitle?.device??"", - info: widget.model.device.serialNumber, + info: widget.model.device?.serialNumber??"", ), const SizedBox(height:8), Row( diff --git a/old_lib/views/pages/device_transfer/request_device_transfer.dart b/old_lib/views/pages/device_transfer/request_device_transfer.dart index 6f3b2c91..3788420d 100644 --- a/old_lib/views/pages/device_transfer/request_device_transfer.dart +++ b/old_lib/views/pages/device_transfer/request_device_transfer.dart @@ -2,12 +2,22 @@ import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; +import '../../../controllers/http_status_manger/http_status_manger.dart'; +import '../../../controllers/localization/localization.dart'; import '../../../controllers/providers/api/device_transfer_provider.dart'; import '../../../controllers/providers/api/user_provider.dart'; import '../../../controllers/providers/settings/setting_provider.dart'; +import '../../../extensions/int_extensions.dart'; import '../../../models/device/device_transfer.dart'; import '../../../models/device/device_transfer_info.dart'; import '../../../models/subtitle.dart'; +import '../../app_style/sizing.dart'; +import '../../widgets/buttons/app_button.dart'; +import '../../widgets/departments/department_button.dart'; +import '../../widgets/equipment/device_button.dart'; +import '../../widgets/hospitals/hospital_button.dart'; +import '../../widgets/loaders/loading_manager.dart'; +import '../../widgets/titles/app_sub_title.dart'; class RequestDeviceTransfer extends StatefulWidget { static const String id = "/request-device-transfer"; @@ -36,11 +46,11 @@ class _RequestDeviceTransferState extends State { _onSubmit() async { _validate = true; - if (!_formKey.currentState.validate()) { + if ((_formKey.currentState?.validate()??false)) { setState(() {}); return false; } - _formKey.currentState.save(); + _formKey.currentState?.save(); if (!_formModel.validate()) { setState(() {}); @@ -50,16 +60,16 @@ class _RequestDeviceTransferState extends State { _isLoading = true; setState(() {}); - int status = await _deviceTransferProvider.createRequest( - user: _userProvider.user, - host: _settingProvider.host, + int? status = await _deviceTransferProvider?.createRequest( + user: _userProvider?.user, + host: _settingProvider?.host??"", model: _formModel, ); _isLoading = false; setState(() {}); - if (status >= 200 && status < 300) { + if (status!=null && status >= 200 && status < 300) { Fluttertoast.showToast( - msg: _subtitle.requestCompleteSuccessfully, + msg: _subtitle?.requestCompleteSuccessfully??"", ); Navigator.of(context).pop(); } else { @@ -78,7 +88,7 @@ class _RequestDeviceTransferState extends State { @override Widget build(BuildContext context) { - _subtitle = AppLocalization.of(context).subtitle; + _subtitle = AppLocalization.of(context)?.subtitle; _userProvider = Provider.of(context); _settingProvider = Provider.of(context); _deviceTransferProvider = Provider.of(context, listen: false); @@ -102,7 +112,7 @@ class _RequestDeviceTransferState extends State { padding: const EdgeInsets.all(8.0), child: Text( "Transfer Device", - style: Theme.of(context).textTheme.headline5.copyWith(color: Theme.of(context).primaryColor, fontSize: 28, fontWeight: FontWeight.bold), + style: Theme.of(context).textTheme.headline5?.copyWith(color: Theme.of(context).primaryColor, fontSize: 28, fontWeight: FontWeight.bold), ), ), ), @@ -124,7 +134,7 @@ class _RequestDeviceTransferState extends State { const ASubTitle("Device"), if (_validate && _formModel.device == null) ASubTitle( - _subtitle.requiredWord, + _subtitle?.requiredWord??"", color: Colors.red, ), 6.height, @@ -149,37 +159,37 @@ class _RequestDeviceTransferState extends State { // ), 12.height, const ASubTitle("Destination Client"), - if (_validate && _formModel.receiver.client == null) + if (_validate && _formModel.receiver?.client == null) ASubTitle( - _subtitle.requiredWord, + _subtitle?.requiredWord??"", color: Colors.red, ), 6.height, HospitalButton( - hospital: _formModel.receiver.client, + hospital: _formModel.receiver?.client, onHospitalPick: (hospital) { - _formModel.receiver.client = hospital; + _formModel.receiver?.client = hospital; setState(() {}); }, ), 12.height, const ASubTitle("Destination Department"), - if (_validate && _formModel.receiver.department == null) + if (_validate && _formModel.receiver?.department == null) ASubTitle( - _subtitle.requiredWord, + _subtitle?.requiredWord??"", color: Colors.red, ), 6.height, DepartmentButton( - department: _formModel.receiver.department, + department: _formModel.receiver?.department, onDepartmentPick: (department) { - _formModel.receiver.department = department; + _formModel.receiver?.department = department; setState(() {}); }, ), 12.height, AButton( - text: _subtitle.submit, + text: _subtitle?.submit??"", onPressed: _onSubmit, ), const SizedBox( diff --git a/old_lib/views/pages/device_transfer/track_device_transfer.dart b/old_lib/views/pages/device_transfer/track_device_transfer.dart index 454d6d30..8e5c7733 100644 --- a/old_lib/views/pages/device_transfer/track_device_transfer.dart +++ b/old_lib/views/pages/device_transfer/track_device_transfer.dart @@ -1,18 +1,21 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'; -import 'package:test_sa/controllers/providers/api/user_provider.dart'; -import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; -import 'package:test_sa/models/subtitle.dart'; -import 'package:test_sa/views/app_style/colors.dart'; -import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; -import 'package:test_sa/views/widgets/device_trancfer/device_transfer_list.dart'; -import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; + +import '../../../controllers/localization/localization.dart'; +import '../../../controllers/providers/api/device_transfer_provider.dart'; +import '../../../controllers/providers/api/user_provider.dart'; +import '../../../controllers/providers/settings/setting_provider.dart'; +import '../../../models/subtitle.dart'; +import '../../../models/user.dart'; +import '../../app_style/colors.dart'; +import '../../widgets/buttons/app_back_button.dart'; +import '../../widgets/device_trancfer/device_transfer_list.dart'; +import '../../widgets/loaders/loading_manager.dart'; + class TrackDeviceTransferPage extends StatefulWidget { static const String id = "/track-device-transfer"; - const TrackDeviceTransferPage({Key key}) : super(key: key); + const TrackDeviceTransferPage({Key? key}) : super(key: key); @override State createState() => _TrackDeviceTransferPageState(); @@ -20,27 +23,27 @@ class TrackDeviceTransferPage extends StatefulWidget { class _TrackDeviceTransferPageState extends State with TickerProviderStateMixin{ - DeviceTransferProvider _deviceTransferProvider; - UserProvider _userProvider; - SettingProvider _settingProvider; + late DeviceTransferProvider _deviceTransferProvider; + UserProvider? _userProvider; + late SettingProvider _settingProvider; @override Widget build(BuildContext context) { _deviceTransferProvider = Provider.of(context); _userProvider = Provider.of(context); _settingProvider = Provider.of(context); - Subtitle _subtitle = AppLocalization.of(context).subtitle; + Subtitle? _subtitle = AppLocalization.of(context)?.subtitle; return Scaffold( body: SafeArea( child: LoadingManager( - isLoading: _deviceTransferProvider.isLoading, + isLoading: _deviceTransferProvider.isLoading??false, isFailedLoading: _deviceTransferProvider.items == null, - stateCode: _deviceTransferProvider.stateCode, + stateCode: _deviceTransferProvider.stateCode??0, onRefresh: () async { _deviceTransferProvider.reset(); await _deviceTransferProvider.getRequests( - user: _userProvider.user, - host: _settingProvider.host, + user: _userProvider?.user??User(), + host: _settingProvider.host??"", ); }, child: Stack( @@ -59,7 +62,7 @@ class _TrackDeviceTransferPageState extends State child: Center( child: Text( "Device Transfer", - style: Theme.of(context).textTheme.headline6.copyWith( + style: Theme.of(context).textTheme.headline6?.copyWith( color: AColors.white, fontStyle: FontStyle.italic ), @@ -78,8 +81,8 @@ class _TrackDeviceTransferPageState extends State nextPage: _deviceTransferProvider.nextPage, onLazyLoad: () async { await _deviceTransferProvider.getRequests( - user: _userProvider.user, - host: _settingProvider.host, + user: _userProvider?.user??User(), + host: _settingProvider.host??"", ); }, items: _deviceTransferProvider.items, diff --git a/old_lib/views/pages/device_transfer/update_device_transfer.dart b/old_lib/views/pages/device_transfer/update_device_transfer.dart index 2b407a48..735b100f 100644 --- a/old_lib/views/pages/device_transfer/update_device_transfer.dart +++ b/old_lib/views/pages/device_transfer/update_device_transfer.dart @@ -1,29 +1,21 @@ -import 'dart:convert'; +.import 'dart:convert'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/http_status_manger/http_status_manger.dart'; -import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'; -import 'package:test_sa/controllers/providers/api/user_provider.dart'; -import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; -import 'package:test_sa/models/device/device_transfer.dart'; -import 'package:test_sa/models/device/device_transfer_info.dart'; -import 'package:test_sa/models/subtitle.dart'; -import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:test_sa/views/widgets/app_text_form_field.dart'; -import 'package:test_sa/views/widgets/buttons/app_button.dart'; -import 'package:test_sa/views/widgets/e_signature/e_signature.dart'; -import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -import 'package:test_sa/views/widgets/status/gas_refill/gas_status.dart'; -import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; -import '../../../../controllers/localization/localization.dart'; +import '../../../controllers/providers/api/device_transfer_provider.dart'; +import '../../../controllers/providers/api/user_provider.dart'; +import '../../../controllers/providers/settings/setting_provider.dart'; +import '../../../models/device/device_transfer.dart'; +import '../../../models/device/device_transfer_info.dart'; +import '../../../models/subtitle.dart'; + class UpdateDeviceTransfer extends StatefulWidget { - final DeviceTransfer model; - final bool isSender; - const UpdateDeviceTransfer({Key key, this.model, this.isSender}) : super(key: key); + final DeviceTransfer? model; + final bool? isSender; + const UpdateDeviceTransfer({Key? key, this.model, this.isSender}) : super(key: key); @override State createState() => _UpdateDeviceTransferState(); @@ -32,11 +24,11 @@ class UpdateDeviceTransfer extends StatefulWidget { class _UpdateDeviceTransferState extends State { bool _isLoading = false; bool _validate = false; - Subtitle _subtitle; - UserProvider _userProvider; - SettingProvider _settingProvider; - Uint8List _signature; - DeviceTransferProvider _deviceTransferProvider; + Subtitle? _subtitle; + UserProvider? _userProvider; + SettingProvider? _settingProvider; + Uint8List? _signature; + DeviceTransferProvider? _deviceTransferProvider; final TextEditingController _requestedQuantityController = TextEditingController(); final DeviceTransferInfo _formModel = DeviceTransferInfo(); final GlobalKey _formKey = GlobalKey(); @@ -44,27 +36,27 @@ class _UpdateDeviceTransferState extends State { _update() async { _validate = true; - if(!_formKey.currentState.validate()){ + if((_formKey.currentState?.validate()??false)){ setState(() {}); return false; } - _formKey.currentState.save(); + _formKey.currentState?.save(); _isLoading =true; setState(() {}); - int status = await _deviceTransferProvider.updateRequest( + int? status = await _deviceTransferProvider?.updateRequest( user: _userProvider.user, host: _settingProvider.host, - requestId: widget.model.id, - isSender: widget.isSender, + requestId: widget.model., + isSender: widget.isSender??false, newModel: _formModel, oldModel: widget.model ); _isLoading =false; setState(() {}); - if(status >= 200 && status < 300){ + if(status!=null && status >= 200 && status < 300){ Fluttertoast.showToast( - msg: _subtitle.requestCompleteSuccessfully, + msg: _subtitle?.requestCompleteSuccessfully??"", ); _validate = false; Navigator.of(context).pop(); diff --git a/old_lib/views/widgets/device_trancfer/device_transfer_list.dart b/old_lib/views/widgets/device_trancfer/device_transfer_list.dart index 18bee922..8a80f6d5 100644 --- a/old_lib/views/widgets/device_trancfer/device_transfer_list.dart +++ b/old_lib/views/widgets/device_trancfer/device_transfer_list.dart @@ -1,31 +1,33 @@ import 'package:flutter/material.dart'; -import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/models/device/device_transfer.dart'; -import 'package:test_sa/models/subtitle.dart'; -import 'package:test_sa/views/pages/device_transfer/device_transfer_details.dart'; -import 'package:test_sa/views/widgets/device_trancfer/device_transfer_item.dart'; -import 'package:test_sa/views/widgets/loaders/lazy_loading.dart'; -import 'package:test_sa/views/widgets/loaders/no_item_found.dart'; + +import '../../../controllers/localization/localization.dart'; +import '../../../models/device/device_transfer.dart'; +import '../../../models/subtitle.dart'; +import '../../pages/device_transfer/device_transfer_details.dart'; +import '../loaders/lazy_loading.dart'; +import '../loaders/no_item_found.dart'; +import 'device_transfer_item.dart'; + class DeviceTransferList extends StatelessWidget { - final List items; - final bool nextPage; - final Future Function() onLazyLoad; + final List? items; + final bool? nextPage; + final Future Function()? onLazyLoad; - const DeviceTransferList({Key key, this.items, this.nextPage, this.onLazyLoad}) : super(key: key); + const DeviceTransferList({Key? key, this.items, this.nextPage, this.onLazyLoad}) : super(key: key); @override Widget build(BuildContext context) { - if(items.length == 0){ - Subtitle subtitle = AppLocalization.of(context).subtitle; - return NoItemFound(message: subtitle.noServiceRequestFound,); + if((items?.isEmpty??0) == 0){ + Subtitle? subtitle = AppLocalization.of(context)?.subtitle; + return NoItemFound(message: subtitle?.noServiceRequestFound??"",); } return LazyLoading( nextPage: nextPage, onLazyLoad: onLazyLoad, child: ListView.builder( //physics: const BouncingScrollPhysics(), - itemCount: items.length, + itemCount: items?.length, padding: const EdgeInsets.symmetric(horizontal: 16,vertical: 8), itemBuilder: (context,itemIndex){ return DeviceTransferItem( diff --git a/old_lib/views/widgets/loaders/image_loader.dart b/old_lib/views/widgets/loaders/image_loader.dart index 7550de1d..bd7c6258 100644 --- a/old_lib/views/widgets/loaders/image_loader.dart +++ b/old_lib/views/widgets/loaders/image_loader.dart @@ -7,7 +7,7 @@ class ImageLoader extends StatelessWidget { final Alignment alignment; const ImageLoader({ Key key, - @required this.url, + this.url, this.boxFit, this.color, this.alignment diff --git a/old_lib/views/widgets/loaders/lazy_loading.dart b/old_lib/views/widgets/loaders/lazy_loading.dart index d5e5f2ed..a6df6105 100644 --- a/old_lib/views/widgets/loaders/lazy_loading.dart +++ b/old_lib/views/widgets/loaders/lazy_loading.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:test_sa/views/app_style/sizing.dart'; - +import '../../app_style/sizing.dart'; import 'app_loading.dart'; + class LazyLoading extends StatefulWidget { final Widget child; final bool nextPage; @@ -9,11 +9,11 @@ class LazyLoading extends StatefulWidget { final VoidCallback onLoadingEnd; const LazyLoading({ - Key key, + Key? key, this.nextPage = false, - this.child, - this.onLazyLoad, - this.onLoadingEnd, + required this.child, + required this.onLazyLoad, + required this.onLoadingEnd, }) : super(key: key); @override @@ -22,17 +22,17 @@ class LazyLoading extends StatefulWidget { class _LazyLoadingState extends State with TickerProviderStateMixin { - AnimationController _animationController; - Animation _offsetAnimation; + late AnimationController _animationController; + late Animation _offsetAnimation; _scrollListener() async { if (!_animationController.isAnimating && !_animationController.isCompleted && widget.nextPage) { - _animationController.forward(); + _animationController?.forward(); setState(() {}); await widget.onLazyLoad(); await Future.delayed(Duration(milliseconds: 600)); setState(() {}); - _animationController.reverse(); + _animationController?.reverse(); } } @@ -57,7 +57,7 @@ class _LazyLoadingState extends State with TickerProviderStateMixin @override void dispose() { super.dispose(); - _animationController.dispose(); + _animationController?.dispose(); } @override @@ -77,7 +77,7 @@ class _LazyLoadingState extends State with TickerProviderStateMixin position: _offsetAnimation, child: Center( child: Visibility( - visible: _animationController.isAnimating || _animationController.isCompleted, + visible: (_animationController?.isAnimating??false) || (_animationController?.isCompleted??false), child: Container( height: 36 * AppStyle.getScaleFactor(context), width: 36 * AppStyle.getScaleFactor(context), diff --git a/old_lib/views/widgets/loaders/loading_manager.dart b/old_lib/views/widgets/loaders/loading_manager.dart index 8ed322e0..121e28e6 100644 --- a/old_lib/views/widgets/loaders/loading_manager.dart +++ b/old_lib/views/widgets/loaders/loading_manager.dart @@ -17,11 +17,11 @@ class LoadingManager extends StatefulWidget { LoadingManager({ Key key, - @required this.isLoading, - @required this.isFailedLoading, - @required this.stateCode, - @required this.onRefresh, - @required this.child, + this.isLoading, + this.isFailedLoading, + this.stateCode, + this.onRefresh, + this.child, this.progress, this.isNotPage = false, this.askOnBack = false, diff --git a/old_lib/views/widgets/sound/record_sound.dart b/old_lib/views/widgets/sound/record_sound.dart index 5ca797e4..616a0ae9 100644 --- a/old_lib/views/widgets/sound/record_sound.dart +++ b/old_lib/views/widgets/sound/record_sound.dart @@ -12,7 +12,7 @@ import '../../app_style/sizing.dart'; class RecordSound extends StatefulWidget { final Function(String) onRecord; - const RecordSound({Key key, @required this.onRecord}) : super(key: key); + const RecordSound({Key key, this.onRecord}) : super(key: key); @override State createState() => _RecordSoundState(); diff --git a/old_lib/views/widgets/status/report/service_report_last_call.dart b/old_lib/views/widgets/status/report/service_report_last_call.dart index a3f59211..79eb2d89 100644 --- a/old_lib/views/widgets/status/report/service_report_last_call.dart +++ b/old_lib/views/widgets/status/report/service_report_last_call.dart @@ -10,7 +10,7 @@ class ServiceReportLastCallsMenu extends StatelessWidget { final ServiceReport report; const ServiceReportLastCallsMenu({ - Key key,@required this.onSelect,@required this.report}) : super(key: key); + Key key, this.onSelect, this.report}) : super(key: key); @override Widget build(BuildContext context) { ServiceReportLastCallsProvider _menuProvider = Provider.of(context); diff --git a/old_lib/views/widgets/titles/app_sub_title.dart b/old_lib/views/widgets/titles/app_sub_title.dart index f5651c65..8e25778b 100644 --- a/old_lib/views/widgets/titles/app_sub_title.dart +++ b/old_lib/views/widgets/titles/app_sub_title.dart @@ -1,18 +1,20 @@ import 'package:flutter/material.dart'; -import 'package:test_sa/views/app_style/sizing.dart'; + +import '../../app_style/sizing.dart'; + class ASubTitle extends StatelessWidget { final String text; - final EdgeInsets padding; - final Color color; - final double font; - const ASubTitle(this.text, {Key key,this.padding, this.color, this.font}) : super(key: key); + final EdgeInsets? padding; + final Color? color; + final double? font; + const ASubTitle(this.text, {Key? key,this.padding, this.color, this.font}) : super(key: key); @override Widget build(BuildContext context) { return Padding( padding: padding ?? EdgeInsets.zero, child: Text( text, - style: Theme.of(context).textTheme.bodyText1.copyWith( + style: Theme.of(context).textTheme.bodyText1?.copyWith( // fontWeight: FontWeight.bold, fontSize: font, color: color