From 1ce6f0f72c00f7d957609a00c54c6007401ec524 Mon Sep 17 00:00:00 2001 From: "muhammad.abbasi" Date: Sun, 15 Sep 2024 16:48:15 +0300 Subject: [PATCH] null seafty bug fixes --- .../stapper_widget/components/base_step.dart | 40 ++++---- .../stapper_widget/custom_stepper.dart | 9 +- lib/dashboard_latest/dashboard_provider.dart | 2 +- .../request_detail_provider.dart | 72 +++++++------- .../service_request_bottomsheet.dart | 95 +++++++++---------- .../forms/asset_retired/asset_retired.dart | 39 ++++---- .../asset_retired/verify_asset_detail.dart | 64 ++++++------- .../components/external_request.dart | 49 +++++----- .../components/internal_request.dart | 55 +++++------ .../maintenance_request_main.dart | 23 +---- .../forms/spare_part/spare_part_request.dart | 40 ++++---- .../components/asset_conditon_view.dart | 86 ++++++++--------- .../components/attachments_view.dart | 4 +- .../components/time_duration_view.dart | 12 +-- .../work_order/work_order_form_view.dart | 12 +-- .../views/nurse/create_new_request_view.dart | 36 +++---- .../widgets/date_and_time/date_picker.dart | 7 +- .../widgets/e_signature/e_signature.dart | 53 ++++++----- 18 files changed, 323 insertions(+), 375 deletions(-) diff --git a/lib/common_widgets/stapper_widget/components/base_step.dart b/lib/common_widgets/stapper_widget/components/base_step.dart index 890010c1..080118f5 100644 --- a/lib/common_widgets/stapper_widget/components/base_step.dart +++ b/lib/common_widgets/stapper_widget/components/base_step.dart @@ -59,7 +59,7 @@ class BaseStep extends StatelessWidget { child: CustomMultiChildLayout( delegate: BaseStepDelegate( stepRadius: radius, - topTitle: step.topTitle, + topTitle: step.topTitle??false, direction: Axis.horizontal), children: [ LayoutId( @@ -134,10 +134,10 @@ class BaseStep extends StatelessWidget { child: step.customStep ?? Icon( isActive && step.activeIcon != null - ? step.activeIcon.icon + ? step.activeIcon!.icon : isFinished && step.finishIcon != null - ? step.finishIcon.icon - : step.icon.icon, + ? step.finishIcon!.icon + : step.icon!.icon, size: radius * 0.9, color: Colors.white, ), @@ -147,25 +147,25 @@ class BaseStep extends StatelessWidget { } class StepModel { - final Icon icon; - final Icon finishIcon; - final Icon activeIcon; + final Icon ?icon; + final Icon ?finishIcon; + final Icon ?activeIcon; final Widget? customStep; - final String title; - final Widget customTitle; - final String lineText; - final Widget customLineWidget; - final bool topTitle; - final bool enabled; + final String ?title; + final Widget ?customTitle; + final String ?lineText; + final Widget ?customLineWidget; + final bool? topTitle; + final bool? enabled; const StepModel({ - required this.icon, - required this.finishIcon, - required this.activeIcon, - required this.title, - required this.lineText, + this.icon, + this.finishIcon, + this.activeIcon, + this.title, + this.lineText, this.customStep, - required this.customTitle, - required this.customLineWidget, + this.customTitle, + this.customLineWidget, this.topTitle = false, this.enabled = true, }); diff --git a/lib/common_widgets/stapper_widget/custom_stepper.dart b/lib/common_widgets/stapper_widget/custom_stepper.dart index 19b3095b..eae43d52 100644 --- a/lib/common_widgets/stapper_widget/custom_stepper.dart +++ b/lib/common_widgets/stapper_widget/custom_stepper.dart @@ -96,7 +96,7 @@ class _CustomStepperState extends State { _scrollController = ScrollController(); _padding = const EdgeInsetsDirectional.all(10); - if (widget.steps.any((element) => element.topTitle)) { + if (widget.steps.any((element) => element.topTitle??false)) { _padding = _padding!.add(const EdgeInsetsDirectional.only(top: 45)); } if (widget.titlesAreLargerThanSteps) { @@ -189,7 +189,7 @@ class _CustomStepperState extends State { stepRadius: widget.stepBorderRadius??10, showStepBorder: widget.showStepBorder, lineLength: lineStyle!.lineLength, - enabled: widget.steps[index].enabled, + enabled: widget.steps[index].enabled??false, ); } @@ -238,14 +238,13 @@ class _CustomStepperState extends State { ), child: _buildBaseLine(index, axis), ), - if (axis == Axis.horizontal && - widget.steps[index].lineText != null) ...[ + if (axis == Axis.horizontal) ...[ const SizedBox(height: 5), SizedBox( width: lineStyle!.lineLength, child: widget.steps[index].customLineWidget ?? Text( - widget.steps[index].lineText, + widget.steps[index].lineText??'', maxLines: 3, textAlign: TextAlign.center, style: Theme.of(context).textTheme.labelSmall, diff --git a/lib/dashboard_latest/dashboard_provider.dart b/lib/dashboard_latest/dashboard_provider.dart index 3272a2c4..28082d88 100644 --- a/lib/dashboard_latest/dashboard_provider.dart +++ b/lib/dashboard_latest/dashboard_provider.dart @@ -106,7 +106,7 @@ class DashBoardProvider extends ChangeNotifier { isDetailLoading = false; notifyListeners(); } else { - requestDetailList!.data!.addAll(DD.DashboardDetail.fromJson(json.decode(response.body)['data']); + requestDetailList!.data!.addAll(DD.DashboardDetail.fromJson(json.decode(response.body)["data"][0]).data??[]); isDetailLoading = false; notifyListeners(); } diff --git a/lib/service_request_latest/request_detail_provider.dart b/lib/service_request_latest/request_detail_provider.dart index efd32140..675d4f8d 100644 --- a/lib/service_request_latest/request_detail_provider.dart +++ b/lib/service_request_latest/request_detail_provider.dart @@ -20,7 +20,7 @@ class RequestDetailProvider extends ChangeNotifier { } DateTime timerStartTime = DateTime(0, 0, 0, 0, 0, 0); // Start from 00:00:00 - Timer timer; + Timer? timer; bool isTimerRunning = false; void startTimer() { @@ -56,65 +56,65 @@ class RequestDetailProvider extends ChangeNotifier { notifyListeners(); } - WorkOrderDetail _currentWorkOrder; - FixRemotely _fixRemotelyModel; - NeedVisit _needVisitModel; - MarkAsFixed _markAsFixed; - ActivitySparePartModel _activitySparePartModel; + WorkOrderDetail ?_currentWorkOrder; + FixRemotely ?_fixRemotelyModel=FixRemotely(); + NeedVisit ?_needVisitModel=NeedVisit(); + MarkAsFixed ?_markAsFixed=MarkAsFixed(); + ActivitySparePartModel ?_activitySparePartModel= ActivitySparePartModel(); - ActivitySparePartModel get activitySparePartModel => _activitySparePartModel; + ActivitySparePartModel ?get activitySparePartModel => _activitySparePartModel; - set activitySparePartModel(ActivitySparePartModel value) { + set activitySparePartModel(ActivitySparePartModel ? value) { _activitySparePartModel = value; notifyListeners(); } - MarkAsFixed get markAsFixed => _markAsFixed; + MarkAsFixed ? get markAsFixed => _markAsFixed; - set markAsFixed(MarkAsFixed value) { + set markAsFixed(MarkAsFixed ? value) { _markAsFixed = value; notifyListeners(); } - NurseActionModel _nurseActionModel; + NurseActionModel ?_nurseActionModel; - NurseActionModel get nurseActionModel => _nurseActionModel; + NurseActionModel? get nurseActionModel => _nurseActionModel; - set nurseActionModel(NurseActionModel value) { + set nurseActionModel(NurseActionModel? value) { _nurseActionModel = value; notifyListeners(); } - NeedVisit get needVisitModel => _needVisitModel; + NeedVisit ?get needVisitModel => _needVisitModel; - set needVisitModel(NeedVisit value) { + set needVisitModel(NeedVisit? value) { _needVisitModel = value; notifyListeners(); } - FixRemotely get fixRemotelyModel => _fixRemotelyModel; + FixRemotely ?get fixRemotelyModel => _fixRemotelyModel; - set fixRemotelyModel(FixRemotely value) { + set fixRemotelyModel(FixRemotely? value) { _fixRemotelyModel = value; notifyListeners(); } - WorkOrderDetail get currentWorkOrder => _currentWorkOrder; + WorkOrderDetail ?get currentWorkOrder => _currentWorkOrder; - set currentWorkOrder(WorkOrderDetail value) { + set currentWorkOrder(WorkOrderDetail? value) { _currentWorkOrder = value; notifyListeners(); } - int stateCode; + int ?stateCode; // true if there is next page in product list and false if not bool nextPage = true; - TimeOfDay _selectedTime ; + TimeOfDay? _selectedTime ; - TimeOfDay get selectedTime => _selectedTime; + TimeOfDay? get selectedTime => _selectedTime; - set selectedTime(TimeOfDay value) { + set selectedTime(TimeOfDay? value) { _selectedTime = value; notifyListeners(); } // list of user requests @@ -127,7 +127,7 @@ class RequestDetailProvider extends ChangeNotifier { notifyListeners(); } //getWorkOrderById...... - Future getWorkOrderById({@required String id}) async { + Future getWorkOrderById({required String id}) async { try { isLoading = true; final response = await ApiManager.instance.get(URLs.getWorkOrderByIdUrl+"?workOrderId=$id"); @@ -150,7 +150,7 @@ class RequestDetailProvider extends ChangeNotifier { } } //engineerAcceptWorkOrder...... - Future engineerAcceptWorkOrder({@required String id}) async { + Future engineerAcceptWorkOrder({required String id}) async { try { final body = { "workOrderId": id, @@ -177,11 +177,11 @@ class RequestDetailProvider extends ChangeNotifier { } } //engineerRejectWorkOrder...... - Future engineerRejectWorkOrder({@required String id,String feedBack}) async { + Future engineerRejectWorkOrder({required String id,String? feedBack}) async { try { final body = { "workOrderId": id, - "feedback": feedBack, + "feedback": feedBack??'', }; isLoading = true; final response = await ApiManager.instance.post(URLs.engineerRejectUrl,body: body); @@ -208,7 +208,7 @@ class RequestDetailProvider extends ChangeNotifier { Future engineerFixRemotely() async { try { isLoading = true; - final response = await ApiManager.instance.post(URLs.engineerFixRemotlyUrl,body: fixRemotelyModel.toJson()); + final response = await ApiManager.instance.post(URLs.engineerFixRemotlyUrl,body: fixRemotelyModel!.toJson()); stateCode = response.statusCode; if (response.statusCode >= 200 && response.statusCode < 300) { CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body)); @@ -232,7 +232,7 @@ class RequestDetailProvider extends ChangeNotifier { Future engineerNeedVisit() async { try { isLoading = true; - final response = await ApiManager.instance.post(URLs.engineerNeedVisitUrl,body: needVisitModel.toJson()); + final response = await ApiManager.instance.post(URLs.engineerNeedVisitUrl,body: needVisitModel!.toJson()); stateCode = response.statusCode; if (response.statusCode >= 200 && response.statusCode < 300) { CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body)); @@ -256,7 +256,7 @@ class RequestDetailProvider extends ChangeNotifier { Future engineerMarkAsFixed() async { try { isLoading = true; - final response = await ApiManager.instance.post(URLs.engineerMarkAsFixUrl,body: markAsFixed.toJson()); + final response = await ApiManager.instance.post(URLs.engineerMarkAsFixUrl,body: markAsFixed!.toJson()); stateCode = response.statusCode; if (response.statusCode >= 200 && response.statusCode < 300) { CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body)); @@ -277,7 +277,7 @@ class RequestDetailProvider extends ChangeNotifier { } } //assignEngineerToWorkOrder...... - Future assignEngineerWorkOrder({@required String workOrderId,@required String engineerId}) async { + Future assignEngineerWorkOrder({required String workOrderId,required String engineerId}) async { try { final body = { "workOrderId": workOrderId, @@ -308,7 +308,7 @@ class RequestDetailProvider extends ChangeNotifier { Future nurseReopen() async { try { isLoading = true; - final response = await ApiManager.instance.post(URLs.nurseConfirmReopenUrl,body: nurseActionModel.toJson()); + final response = await ApiManager.instance.post(URLs.nurseConfirmReopenUrl,body: nurseActionModel!.toJson()); stateCode = response.statusCode; if (response.statusCode >= 200 && response.statusCode < 300) { CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body)); @@ -332,7 +332,7 @@ class RequestDetailProvider extends ChangeNotifier { Future nurseClose() async { try { isLoading = true; - final response = await ApiManager.instance.post(URLs.nurseConfirmCloseUrl,body: nurseActionModel.toJson()); + final response = await ApiManager.instance.post(URLs.nurseConfirmCloseUrl,body: nurseActionModel!.toJson()); stateCode = response.statusCode; if (response.statusCode >= 200 && response.statusCode < 300) { CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body)); @@ -354,7 +354,7 @@ class RequestDetailProvider extends ChangeNotifier { } - Future updateActivitySparePart({@required ActivitySparePartModel activitySparePartModel}) async { + Future updateActivitySparePart({required ActivitySparePartModel activitySparePartModel}) async { isLoading = true; try { final response = await ApiManager.instance.put( @@ -375,7 +375,7 @@ class RequestDetailProvider extends ChangeNotifier { return -1; } } - Future deleteActivitySparePart({@required int id,@required int workOrderId}) async { + Future deleteActivitySparePart({required int id,required int workOrderId}) async { isLoading = true; var body = { 'id':id, @@ -400,7 +400,7 @@ class RequestDetailProvider extends ChangeNotifier { return -1; } } - Future createActivitySparePart({@required ActivitySparePartModel activitySparePartModel}) async { + Future createActivitySparePart({required ActivitySparePartModel activitySparePartModel}) async { isLoading = true; try { final response = await ApiManager.instance.put( diff --git a/lib/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart b/lib/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart index 3954fcf1..90a9684e 100644 --- a/lib/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart +++ b/lib/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart @@ -25,7 +25,7 @@ import '../../../../new_views/common_widgets/app_filled_button.dart'; import '../../../../new_views/common_widgets/app_text_form_field.dart'; class ServiceRequestBottomSheet { - static Future fixRemotelyBottomSheet({@required BuildContext context}) { + static Future fixRemotelyBottomSheet({required BuildContext context}) { final GlobalKey _formKey = GlobalKey(); return showModalBottomSheet( context: context, @@ -60,7 +60,7 @@ class ServiceRequestBottomSheet { hideShadow: true, height: 80.toScreenHeight, backgroundColor: AppColor.neutral100, - date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest.startDate ?? ""), + date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest?.startDate ?? ""), formatDateWithTime: true, onDatePicker: (selectedDate) { if (selectedDate != null) { @@ -77,17 +77,16 @@ class ServiceRequestBottomSheet { selectedTime.hour, selectedTime.minute, ); - if (selectedDateTime != null) { - if (selectedDateTime.isBefore(DateTime.parse(serviceRequestProvider.currentSelectedRequest.date))) { + //serviceRequestProvider.currentSelectedRequest?.date + if (selectedDateTime.isBefore(DateTime.parse(serviceRequestProvider.currentSelectedRequest!.date!))) { "Visit Date time must be greater then request date".showToast; return; } setState(() { - serviceRequestProvider.currentSelectedRequest.startDate = selectedDateTime?.toIso8601String(); + serviceRequestProvider.currentSelectedRequest?.startDate = selectedDateTime.toIso8601String(); }); - print('start date i got is ${serviceRequestProvider.currentSelectedRequest.startDate}'); - } + print('start date i got is ${serviceRequestProvider.currentSelectedRequest?.startDate}'); } }); } @@ -123,10 +122,10 @@ class ServiceRequestBottomSheet { backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral100, alignLabelWithHint: true, onChange: (text) { - serviceRequestProvider.currentSelectedRequest.comments = text; + serviceRequestProvider.currentSelectedRequest?.comments = text; }, onSaved: (text) { - serviceRequestProvider.currentSelectedRequest.comments = text; + serviceRequestProvider.currentSelectedRequest?.comments = text; }, ), 16.height, @@ -169,7 +168,7 @@ class ServiceRequestBottomSheet { })); } - static Future initialVisitBottomSheet({@required BuildContext context}) { + static Future initialVisitBottomSheet({required BuildContext context}) { final GlobalKey _formKey = GlobalKey(); return showModalBottomSheet( context: context, @@ -194,7 +193,7 @@ class ServiceRequestBottomSheet { hideShadow: true, backgroundColor: AppColor.neutral100, height: 70.toScreenHeight, - date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest.visitDate ?? ""), + date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest?.visitDate ?? ""), formatDateWithTime: true, onDatePicker: (selectedDate) { if (selectedDate != null) { @@ -211,25 +210,23 @@ class ServiceRequestBottomSheet { selectedTime.hour, selectedTime.minute, ); - if (selectedDateTime != null) { - if (selectedDateTime.isBefore(DateTime.parse(serviceRequestProvider.currentSelectedRequest.date))) { + if (selectedDateTime.isBefore(DateTime.parse(serviceRequestProvider.currentSelectedRequest!.date!))) { "Visit Date time must be greater then request date".showToast; return; } - serviceRequestProvider.currentSelectedRequest.visitDate = selectedDateTime?.toIso8601String(); - } + serviceRequestProvider.currentSelectedRequest?.visitDate = selectedDateTime?.toIso8601String(); } }); } }, ), - if (serviceRequestProvider.currentSelectedRequest.firstAction?.id == 404 && Provider.of(context, listen: false).assetGroup.id == 1) ...[ + if (serviceRequestProvider.currentSelectedRequest?.firstAction?.id == 404 && Provider.of(context, listen: false).assetGroup?.id == 1) ...[ 8.height, Row( children: [ ADatePicker( label: context.translation.startDate, - date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest.startDate ?? ""), + date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest?.startDate ?? ""), formatDateWithTime: true, onDatePicker: (selectedDate) { if (selectedDate != null) { @@ -247,7 +244,7 @@ class ServiceRequestBottomSheet { selectedTime.minute, ); if (selectedDateTime != null) { - serviceRequestProvider.currentSelectedRequest.startDate = selectedDateTime?.toIso8601String(); + serviceRequestProvider.currentSelectedRequest?.startDate = selectedDateTime?.toIso8601String(); } } }); @@ -257,7 +254,7 @@ class ServiceRequestBottomSheet { 8.width, ADatePicker( label: context.translation.endDate, - date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest.endDate ?? ""), + date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest?.endDate ?? ""), formatDateWithTime: true, onDatePicker: (selectedDate) { if (selectedDate != null) { @@ -275,9 +272,9 @@ class ServiceRequestBottomSheet { selectedTime.minute, ); if (selectedDateTime != null) { - serviceRequestProvider.currentSelectedRequest.endDate = selectedDateTime?.toIso8601String(); - serviceRequestProvider.currentSelectedRequest.workingHours = (((DateTime.parse(serviceRequestProvider.currentSelectedRequest.endDate) - .difference(DateTime.parse(serviceRequestProvider.currentSelectedRequest.startDate)) + serviceRequestProvider.currentSelectedRequest?.endDate = selectedDateTime?.toIso8601String(); + serviceRequestProvider.currentSelectedRequest?.workingHours = (((DateTime.parse(serviceRequestProvider.currentSelectedRequest!.endDate!) + .difference(DateTime.parse(serviceRequestProvider.currentSelectedRequest!.startDate!)) .inSeconds ?? 0) / 60) / @@ -300,10 +297,10 @@ class ServiceRequestBottomSheet { textInputType: TextInputType.multiline, alignLabelWithHint: true, onChange: (text) { - serviceRequestProvider.currentSelectedRequest.comments = text; + serviceRequestProvider.currentSelectedRequest?.comments = text; }, onSaved: (text) { - serviceRequestProvider.currentSelectedRequest.comments = text; + serviceRequestProvider.currentSelectedRequest?.comments = text; }, ), 12.height, @@ -313,7 +310,7 @@ class ServiceRequestBottomSheet { loading: serviceRequestProvider.isLoading ?? false, onPressed: () async { - _formKey.currentState.save(); + _formKey.currentState?.save(); // await snapshot.updateRequest(user: userProvider.user, request: serviceRequestProvider.serviceRequest); // Navigator.pop(context, true); @@ -328,7 +325,7 @@ class ServiceRequestBottomSheet { })); } - static Future rejectRequestBottomSheet({@required BuildContext context}) { + static Future rejectRequestBottomSheet({required BuildContext context}) { final GlobalKey _formKey = GlobalKey(); return showModalBottomSheet( context: context, @@ -352,11 +349,11 @@ class ServiceRequestBottomSheet { backgroundColor: AppColor.neutral100, height: 70.toScreenHeight, title: context.translation.rejectionReason, - initialValue: serviceRequestProvider.currentSelectedRequest.firstAction, //_serviceRequest.firstAction, + initialValue: serviceRequestProvider.currentSelectedRequest?.firstAction, //_serviceRequest.firstAction, onSelect: (value) { - serviceRequestProvider.currentSelectedRequest.firstAction = value; - if (serviceRequestProvider.currentSelectedRequest.firstAction.value != 2) { - serviceRequestProvider.currentSelectedRequest.visitDate = null; + serviceRequestProvider.currentSelectedRequest?.firstAction = value; + if (serviceRequestProvider.currentSelectedRequest?.firstAction?.value != 2) { + serviceRequestProvider.currentSelectedRequest?.visitDate = null; } }, ), @@ -367,10 +364,10 @@ class ServiceRequestBottomSheet { textInputType: TextInputType.multiline, alignLabelWithHint: true, onChange: (text) { - serviceRequestProvider.currentSelectedRequest.comments = text; + serviceRequestProvider.currentSelectedRequest?.comments = text; }, onSaved: (text) { - serviceRequestProvider.currentSelectedRequest.comments = text; + serviceRequestProvider.currentSelectedRequest?.comments = text; }, ), 16.height, @@ -383,7 +380,7 @@ class ServiceRequestBottomSheet { showBorder: true, loading: snapshot.isLoading ?? false, onPressed: () async { - _formKey.currentState.save(); + _formKey.currentState?.save(); //Todo implement backend logic.. // serviceRequestProvider.serviceRequest.device = asset; // await snapshot.updateRequest(user: userProvider.user, request: serviceRequestProvider.currentSelectedRequest); @@ -399,12 +396,12 @@ class ServiceRequestBottomSheet { })); } - static Future activityTypeBottomSheet({@required BuildContext context}) { + static Future activityTypeBottomSheet({required BuildContext context}) { final List> items = [ {'heading': context.translation.sparePartRequest, 'subHeading': context.translation.sparePartRequestDetail, 'icon': AppAsset.sparePartIcon}, {'heading': context.translation.maintenanceRequest, 'subHeading': context.translation.sparePartRequestDetail, 'icon': AppAsset.maintenanceIcon}, ]; - Widget listItem({@required BuildContext context, @required String icon, @required String heading, @required String subHeading, @required VoidCallback onTap}) { + Widget listItem({required BuildContext context, required String icon, required String heading, required String subHeading, required VoidCallback onTap}) { return Card( color: AppColor.neutral80, shape: RoundedRectangleBorder( @@ -430,7 +427,7 @@ class ServiceRequestBottomSheet { ); } - void onItemTap({@required int index, @required ServiceRequest serviceRequest, @required BuildContext context}) { + void onItemTap({required int index, required ServiceRequest serviceRequest, required BuildContext context}) { switch (index) { case 0: Navigator.of(context).push(MaterialPageRoute(builder: (_) => const SparePartRequest())); @@ -493,12 +490,12 @@ class ServiceRequestBottomSheet { itemBuilder: (context, index) { final item = items[index]; return listItem( - icon: item['icon'], - heading: item['heading'], - subHeading: item['subHeading'], + icon: item['icon']!, + heading: item['heading']!, + subHeading: item['subHeading']!, context: context, onTap: () { - onItemTap(serviceRequest: serviceRequestProvider.currentSelectedRequest, index: index, context: context); + onItemTap(serviceRequest: serviceRequestProvider.currentSelectedRequest!, index: index, context: context); }); }, ), @@ -508,7 +505,7 @@ class ServiceRequestBottomSheet { })); } - static Future actionBottomSheet({@required BuildContext context, @required String title, String button1Text, String button2Text, VoidCallback button1Tap, VoidCallback button2Tap}) { + static Future actionBottomSheet({required BuildContext context, required String title, String? button1Text, String ?button2Text, VoidCallback ?button1Tap, VoidCallback ?button2Tap}) { return showModalBottomSheet( context: context, useSafeArea: true, @@ -562,7 +559,7 @@ class ServiceRequestBottomSheet { ); })); } - static Future feedBackBottomSheet({@required BuildContext context}) { + static Future feedBackBottomSheet({required BuildContext context}) { final GlobalKey _formKey = GlobalKey(); return showModalBottomSheet( context: context, @@ -599,10 +596,10 @@ class ServiceRequestBottomSheet { backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral100, alignLabelWithHint: true, onChange: (text) { - serviceRequestProvider.currentSelectedRequest.comments = text; + serviceRequestProvider.currentSelectedRequest?.comments = text; }, onSaved: (text) { - serviceRequestProvider.currentSelectedRequest.comments = text; + serviceRequestProvider.currentSelectedRequest?.comments = text; }, ), 16.height, @@ -620,7 +617,7 @@ class ServiceRequestBottomSheet { ); })); } - static Future nurseTakeActionBottomSheet({@required BuildContext context}) { + static Future nurseTakeActionBottomSheet({required BuildContext context}) { final GlobalKey _formKey = GlobalKey(); return showModalBottomSheet( context: context, @@ -633,7 +630,7 @@ class ServiceRequestBottomSheet { child: SingleChildScrollView( child: StatefulBuilder(builder: (context, setState) { bool acknowledge = false; - Uint8List newSignature; + Uint8List ?newSignature; return Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ @@ -647,11 +644,11 @@ class ServiceRequestBottomSheet { Row( children: [ Checkbox( - value: serviceRequestProvider.ackhnowledge, + value: acknowledge, activeColor: AppColor.blueStatus(context), onChanged: (value) { setState(() { - acknowledge = !value; + acknowledge = !value!; }); print('acknowledge value is $acknowledge'); @@ -663,7 +660,7 @@ class ServiceRequestBottomSheet { ESignature( title: '', oldSignature: '', - newSignature: newSignature, + newSignature: newSignature, backgroundColor: AppColor.neutral100, showShadow: false, onSaved: (signature) { diff --git a/lib/service_request_latest/views/forms/asset_retired/asset_retired.dart b/lib/service_request_latest/views/forms/asset_retired/asset_retired.dart index fec8d708..26d6e0bb 100644 --- a/lib/service_request_latest/views/forms/asset_retired/asset_retired.dart +++ b/lib/service_request_latest/views/forms/asset_retired/asset_retired.dart @@ -27,18 +27,17 @@ import '../../../../../../new_views/common_widgets/default_app_bar.dart'; class AssetRetired extends StatefulWidget { static const String id = "/asset-tobe-retired"; - const AssetRetired({Key key}) : super(key: key); + const AssetRetired({Key? key}) : super(key: key); @override _AssetRetiredState createState() => _AssetRetiredState(); } class _AssetRetiredState extends State with TickerProviderStateMixin { - UserProvider _userProvider; - SettingProvider _settingProvider; - ServiceRequestsProvider _serviceRequestsProvider; - ServiceStatusProvider _assetTypeProvider; - ServiceReport _serviceReport; + + ServiceRequestsProvider? _serviceRequestsProvider; + ServiceStatusProvider ?_assetTypeProvider; + ServiceReport ?_serviceReport; bool _isLoading = false; final GlobalKey _formKey = GlobalKey(); final GlobalKey _scaffoldKey = GlobalKey(); @@ -56,38 +55,34 @@ class _AssetRetiredState extends State with TickerProviderStateMix ServiceRequestsProvider serviceRequestsProvider = Provider.of(context, listen: false); Provider.of(context, listen: false).reset(); Provider.of(context, listen: false).reset(); - Provider.of(context, listen: false).serviceRequestId = serviceRequestsProvider.currentSelectedRequest.id; + Provider.of(context, listen: false).serviceRequestId = serviceRequestsProvider.currentSelectedRequest?.id; } // _isLoading = true; } - Asset loanAvailabilityAsset; - void getRequestForWorkOrder() async { _isLoading = true; setState(() {}); ServiceRequestsProvider serviceRequestsProvider = Provider.of(context, listen: false); - _serviceReport.callRequest = await _serviceRequestsProvider.getCallRequestForWorkOrder(callId: serviceRequestsProvider.currentSelectedRequest.id); - await _assetTypeProvider.getTypes(user: _userProvider.user, host: _settingProvider.host); - _serviceReport.assignedEmployee = _serviceReport.callRequest?.assignedEmployee; - _serviceReport.equipmentStatus = _serviceReport.callRequest?.defectType; - _serviceReport.serviceType = Lookup(id: 65, name: "Interval", value: 1); // default value in service type as in web + _serviceReport?.callRequest = await _serviceRequestsProvider?.getCallRequestForWorkOrder(callId: serviceRequestsProvider.currentSelectedRequest?.id??'0'); + await _assetTypeProvider?.getTypes(); + _serviceReport?.assignedEmployee = _serviceReport?.callRequest?.assignedEmployee; + _serviceReport?.equipmentStatus = _serviceReport?.callRequest?.defectType; + _serviceReport?.serviceType = Lookup(id: 65, name: "Interval", value: 1); // default value in service type as in web _isLoading = false; setState(() {}); } @override Widget build(BuildContext context) { - _userProvider = Provider.of(context); - _settingProvider = Provider.of(context); _serviceRequestsProvider = Provider.of(context); _assetTypeProvider = Provider.of(context); - if (_serviceReport.callRequest == null) { + if (_serviceReport?.callRequest == null) { getRequestForWorkOrder(); } - _serviceReport.assetType = _assetTypeProvider.statuses?.firstWhere( - (element) => element.value == _serviceReport.callRequest?.assetType, - orElse: () => null, + _serviceReport?.assetType = _assetTypeProvider?.statuses?.firstWhere( + (element) => element.value == _serviceReport?.callRequest?.assetType, + orElse: () => Lookup(), ); final List _files = []; @@ -131,10 +126,10 @@ class _AssetRetiredState extends State with TickerProviderStateMix backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral100, alignLabelWithHint: true, onChange: (text) { - serviceRequestProvider.currentSelectedRequest.comments = text; + serviceRequestProvider.currentSelectedRequest?.comments = text; }, onSaved: (text) { - serviceRequestProvider.currentSelectedRequest.comments = text; + serviceRequestProvider.currentSelectedRequest?.comments = text; }, ), 23.height, diff --git a/lib/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart b/lib/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart index f37c1852..656b8a65 100644 --- a/lib/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart +++ b/lib/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart @@ -27,23 +27,22 @@ import '../../../../../../new_views/common_widgets/default_app_bar.dart'; class VerifyAssetDetails extends StatefulWidget { static const String id = "/verify-asset-detail"; - const VerifyAssetDetails({Key key}) : super(key: key); + const VerifyAssetDetails({Key? key}) : super(key: key); @override _VerifyAssetDetailsState createState() => _VerifyAssetDetailsState(); } class _VerifyAssetDetailsState extends State with TickerProviderStateMixin { - UserProvider _userProvider; - SettingProvider _settingProvider; - ServiceRequestsProvider _serviceRequestsProvider; - ServiceStatusProvider _assetTypeProvider; - PartsProvider _partsProvider; - ServiceReport _serviceReport; + + ServiceRequestsProvider? _serviceRequestsProvider; + ServiceStatusProvider ?_assetTypeProvider; + ServiceReport? _serviceReport; bool _isLoading = false; final GlobalKey _formKey = GlobalKey(); final GlobalKey _scaffoldKey = GlobalKey(); int _selectedValue = 1; + var loanAvailabilityAsset; @override void initState() { @@ -58,39 +57,34 @@ class _VerifyAssetDetailsState extends State with TickerProv ServiceRequestsProvider serviceRequestsProvider = Provider.of(context, listen: false); Provider.of(context, listen: false).reset(); Provider.of(context, listen: false).reset(); - Provider.of(context, listen: false).serviceRequestId = serviceRequestsProvider.currentSelectedRequest.id; + Provider.of(context, listen: false).serviceRequestId = serviceRequestsProvider.currentSelectedRequest?.id; } // _isLoading = true; } - Asset loanAvailabilityAsset; - void getRequestForWorkOrder() async { _isLoading = true; setState(() {}); ServiceRequestsProvider serviceRequestsProvider = Provider.of(context, listen: false); - _serviceReport.callRequest = await _serviceRequestsProvider.getCallRequestForWorkOrder(callId: serviceRequestsProvider.currentSelectedRequest.id); - await _assetTypeProvider.getTypes(user: _userProvider.user, host: _settingProvider.host); - _serviceReport.assignedEmployee = _serviceReport.callRequest?.assignedEmployee; - _serviceReport.equipmentStatus = _serviceReport.callRequest?.defectType; - _serviceReport.serviceType = Lookup(id: 65, name: "Interval", value: 1); // default value in service type as in web + _serviceReport?.callRequest = await _serviceRequestsProvider?.getCallRequestForWorkOrder(callId: serviceRequestsProvider.currentSelectedRequest?.id??'0'); + await _assetTypeProvider?.getTypes(); + _serviceReport?.assignedEmployee = _serviceReport?.callRequest?.assignedEmployee; + _serviceReport?.equipmentStatus = _serviceReport?.callRequest?.defectType; + _serviceReport?.serviceType = Lookup(id: 65, name: "Interval", value: 1); // default value in service type as in web _isLoading = false; setState(() {}); } @override Widget build(BuildContext context) { - _userProvider = Provider.of(context); - _settingProvider = Provider.of(context); _serviceRequestsProvider = Provider.of(context); _assetTypeProvider = Provider.of(context); - _partsProvider = Provider.of(context); - if (_serviceReport.callRequest == null) { + if (_serviceReport?.callRequest == null) { getRequestForWorkOrder(); } - _serviceReport.assetType = _assetTypeProvider.statuses?.firstWhere( - (element) => element.value == _serviceReport.callRequest?.assetType, - orElse: () => null, + _serviceReport?.assetType = _assetTypeProvider?.statuses?.firstWhere( + (element) => element.value == _serviceReport?.callRequest?.assetType, + orElse: () => Lookup(), ); return Scaffold( @@ -121,7 +115,7 @@ class _VerifyAssetDetailsState extends State with TickerProv hideShadow: true, height: 70.toScreenHeight, backgroundColor: AppColor.neutral100, - date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest.startDate ?? ""), + date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest?.startDate ?? ""), formatDateWithTime: true, onDatePicker: (selectedDate) { if (selectedDate != null) { @@ -131,7 +125,7 @@ class _VerifyAssetDetailsState extends State with TickerProv ).then((selectedTime) { // Handle the selected date and time here. if (selectedTime != null) { - DateTime selectedDateTime = DateTime( + DateTime? selectedDateTime = DateTime( selectedDate.year, selectedDate.month, selectedDate.day, @@ -139,15 +133,15 @@ class _VerifyAssetDetailsState extends State with TickerProv selectedTime.minute, ); if (selectedDateTime != null) { - if (selectedDateTime.isBefore(DateTime.parse(serviceRequestProvider.currentSelectedRequest.date))) { + if (selectedDateTime.isBefore(DateTime.parse(serviceRequestProvider.currentSelectedRequest!.date!))) { "Visit Date time must be greater then request date".showToast; return; } setState(() { - serviceRequestProvider.currentSelectedRequest.startDate = selectedDateTime?.toIso8601String(); + serviceRequestProvider.currentSelectedRequest?.startDate = selectedDateTime.toIso8601String(); }); - print('start date i got is ${serviceRequestProvider.currentSelectedRequest.startDate}'); + print('start date i got is ${serviceRequestProvider.currentSelectedRequest?.startDate}'); } } }); @@ -162,10 +156,10 @@ class _VerifyAssetDetailsState extends State with TickerProv onSelect: (status) { if (status != null) { setState(() { - _serviceReport.loanAvailablity = status; - if (_serviceReport.loanAvailablity.value != 1) { - loanAvailabilityAsset = null; - _serviceReport.assetLoan = null; + _serviceReport?.loanAvailablity = status; + if (_serviceReport?.loanAvailablity?.value != 1) { + // loanAvailabilityAsset = null; + _serviceReport?.assetLoan = null; } }); } @@ -177,7 +171,7 @@ class _VerifyAssetDetailsState extends State with TickerProv device: loanAvailabilityAsset, // ?? _serviceReport.device, onPickAsset: (asset) { if (asset != null) { - _serviceReport.assetLoan = AssetInfo.fromJson(asset.toJson()); + _serviceReport?.assetLoan = AssetInfo.fromJson(asset.toJson()); setState(() { loanAvailabilityAsset = asset; }); @@ -252,7 +246,7 @@ class _VerifyAssetDetailsState extends State with TickerProv ); } - Widget radioButtonWidget({@required String label, @required dynamic value}) { + Widget radioButtonWidget({required String label, required dynamic value}) { return Row( mainAxisSize: MainAxisSize.min, children: [ @@ -264,9 +258,9 @@ class _VerifyAssetDetailsState extends State with TickerProv activeColor: AppColor.primary10, value: value, groupValue: _selectedValue, - onChanged: (int value) { + onChanged: (int ?value) { setState(() { - _selectedValue = value; + _selectedValue = value!; }); }, ), diff --git a/lib/service_request_latest/views/forms/maintenance_request/components/external_request.dart b/lib/service_request_latest/views/forms/maintenance_request/components/external_request.dart index 592f4f9e..67569da8 100644 --- a/lib/service_request_latest/views/forms/maintenance_request/components/external_request.dart +++ b/lib/service_request_latest/views/forms/maintenance_request/components/external_request.dart @@ -29,24 +29,23 @@ import '../../../../../new_views/common_widgets/single_item_drop_down_menu.dart' class ExternalMaintenanceRequest extends StatefulWidget { static const String id = "/add-external-activity"; - const ExternalMaintenanceRequest({Key key}) : super(key: key); + const ExternalMaintenanceRequest({Key? key}) : super(key: key); @override _ExternalMaintenanceRequestState createState() => _ExternalMaintenanceRequestState(); } class _ExternalMaintenanceRequestState extends State with TickerProviderStateMixin { - UserProvider _userProvider; - SettingProvider _settingProvider; - ServiceRequest _request; - ServiceRequestsProvider _serviceRequestsProvider; - ServiceStatusProvider _assetTypeProvider; - ServiceReport _serviceReport; + + ServiceRequest? _request; + ServiceRequestsProvider ?_serviceRequestsProvider; + ServiceStatusProvider? _assetTypeProvider; + ServiceReport ?_serviceReport; bool _isLoading = false; - TimeOfDay _startTime; + TimeOfDay ?_startTime; int _selectedValue = 1; - TimeOfDay _endTime; + TimeOfDay ?_endTime; final GlobalKey _formKey = GlobalKey(); final TextEditingController _faultController = TextEditingController(); @@ -67,13 +66,11 @@ class _ExternalMaintenanceRequestState extends State _request = Provider.of(context, listen: false).currentSelectedRequest; Provider.of(context, listen: false).reset(); Provider.of(context, listen: false).reset(); - Provider.of(context, listen: false).serviceRequestId = _request.id; + Provider.of(context, listen: false).serviceRequestId = _request?.id; } // _isLoading = true; } - Asset loanAvailabilityAsset; - @override void dispose() { _faultController.dispose(); @@ -85,27 +82,25 @@ class _ExternalMaintenanceRequestState extends State void getRequestForWorkOrder() async { _isLoading = true; setState(() {}); - _serviceReport.callRequest = await _serviceRequestsProvider.getCallRequestForWorkOrder(callId: _request.id); - await _assetTypeProvider.getTypes(user: _userProvider.user, host: _settingProvider.host); - _serviceReport.assignedEmployee = _serviceReport.callRequest?.assignedEmployee; - _serviceReport.equipmentStatus = _serviceReport.callRequest?.defectType; - _serviceReport.serviceType = Lookup(id: 65, name: "Interval", value: 1); // default value in service type as in web + _serviceReport?.callRequest = await _serviceRequestsProvider?.getCallRequestForWorkOrder(callId: _request?.id??'0'); + await _assetTypeProvider?.getTypes(); + _serviceReport?.assignedEmployee = _serviceReport?.callRequest?.assignedEmployee; + _serviceReport?.equipmentStatus = _serviceReport?.callRequest?.defectType; + _serviceReport?.serviceType = Lookup(id: 65, name: "Interval", value: 1); // default value in service type as in web _isLoading = false; setState(() {}); } @override Widget build(BuildContext context) { - _userProvider = Provider.of(context); - _settingProvider = Provider.of(context); _serviceRequestsProvider = Provider.of(context); _assetTypeProvider = Provider.of(context); - if (_serviceReport.callRequest == null) { + if (_serviceReport?.callRequest == null) { getRequestForWorkOrder(); } - _serviceReport.assetType = _assetTypeProvider.statuses?.firstWhere( - (element) => element.value == _serviceReport.callRequest?.assetType, - orElse: () => null, + _serviceReport?.assetType = _assetTypeProvider?.statuses?.firstWhere( + (element) => element.value == _serviceReport?.callRequest?.assetType, + orElse: () => Lookup(), ); return LoadingManager( @@ -131,7 +126,7 @@ class _ExternalMaintenanceRequestState extends State staticData: Provider.of(context).calls, initialValue: _serviceReport?.calllastSituation, onSelect: (status) { - _serviceReport.calllastSituation = status; + _serviceReport?.calllastSituation = status; }, ), // Container( @@ -248,7 +243,7 @@ class _ExternalMaintenanceRequestState extends State ); } - Widget radioButtonWidget({@required String label, @required dynamic value}) { + Widget radioButtonWidget({required String label, required dynamic value}) { return Row( mainAxisSize: MainAxisSize.min, children: [ @@ -260,9 +255,9 @@ class _ExternalMaintenanceRequestState extends State activeColor: AppColor.primary10, value: value, groupValue: _selectedValue, - onChanged: (int value) { + onChanged: (int? value) { setState(() { - _selectedValue = value; + _selectedValue = value!; }); }, ), diff --git a/lib/service_request_latest/views/forms/maintenance_request/components/internal_request.dart b/lib/service_request_latest/views/forms/maintenance_request/components/internal_request.dart index 82dde80e..103114f9 100644 --- a/lib/service_request_latest/views/forms/maintenance_request/components/internal_request.dart +++ b/lib/service_request_latest/views/forms/maintenance_request/components/internal_request.dart @@ -28,25 +28,23 @@ import '../../../../../new_views/common_widgets/single_item_drop_down_menu.dart' class InternalMaintenanceRequest extends StatefulWidget { static const String id = "/add-internal-activity"; - const InternalMaintenanceRequest({Key key}) : super(key: key); + const InternalMaintenanceRequest({Key ?key}) : super(key: key); @override _InternalMaintenanceRequestState createState() => _InternalMaintenanceRequestState(); } class _InternalMaintenanceRequestState extends State with TickerProviderStateMixin { - UserProvider _userProvider; - SettingProvider _settingProvider; - ServiceRequest _request; - ServiceRequestsProvider _serviceRequestsProvider; - ServiceStatusProvider _assetTypeProvider; - PartsProvider _partsProvider; - ServiceReport _serviceReport; + + ServiceRequest? _request; + ServiceRequestsProvider ?_serviceRequestsProvider; + ServiceStatusProvider? _assetTypeProvider; + ServiceReport ?_serviceReport; bool _isLoading = false; - TimeOfDay _startTime; + TimeOfDay ?_startTime; int _selectedValue = 1; - TimeOfDay _endTime; + TimeOfDay ?_endTime; final GlobalKey _formKey = GlobalKey(); final TextEditingController _faultController = TextEditingController(); @@ -67,13 +65,11 @@ class _InternalMaintenanceRequestState extends State _request = Provider.of(context, listen: false).currentSelectedRequest; Provider.of(context, listen: false).reset(); Provider.of(context, listen: false).reset(); - Provider.of(context, listen: false).serviceRequestId = _request.id; + Provider.of(context, listen: false).serviceRequestId = _request?.id??'0'; } // _isLoading = true; } - Asset loanAvailabilityAsset; - @override void dispose() { _faultController.dispose(); @@ -85,28 +81,25 @@ class _InternalMaintenanceRequestState extends State void getRequestForWorkOrder() async { _isLoading = true; setState(() {}); - _serviceReport.callRequest = await _serviceRequestsProvider.getCallRequestForWorkOrder(callId: _request.id); - await _assetTypeProvider.getTypes(user: _userProvider.user, host: _settingProvider.host); - _serviceReport.assignedEmployee = _serviceReport.callRequest?.assignedEmployee; - _serviceReport.equipmentStatus = _serviceReport.callRequest?.defectType; - _serviceReport.serviceType = Lookup(id: 65, name: "Interval", value: 1); // default value in service type as in web + _serviceReport?.callRequest = await _serviceRequestsProvider?.getCallRequestForWorkOrder(callId: _request?.id??'0'); + await _assetTypeProvider?.getTypes(); + _serviceReport?.assignedEmployee = _serviceReport?.callRequest?.assignedEmployee; + _serviceReport?.equipmentStatus = _serviceReport?.callRequest?.defectType; + _serviceReport?.serviceType = Lookup(id: 65, name: "Interval", value: 1); // default value in service type as in web _isLoading = false; setState(() {}); } @override Widget build(BuildContext context) { - _userProvider = Provider.of(context); - _settingProvider = Provider.of(context); _serviceRequestsProvider = Provider.of(context); _assetTypeProvider = Provider.of(context); - _partsProvider = Provider.of(context); - if (_serviceReport.callRequest == null) { + if (_serviceReport?.callRequest == null) { getRequestForWorkOrder(); } - _serviceReport.assetType = _assetTypeProvider.statuses?.firstWhere( - (element) => element.value == _serviceReport.callRequest?.assetType, - orElse: () => null, + _serviceReport?.assetType = _assetTypeProvider?.statuses?.firstWhere( + (element) => element.value == _serviceReport?.callRequest?.assetType, + orElse: () => Lookup(), ); return LoadingManager( @@ -132,7 +125,7 @@ class _InternalMaintenanceRequestState extends State staticData: Provider.of(context).calls, initialValue: _serviceReport?.calllastSituation, onSelect: (status) { - _serviceReport.calllastSituation = status; + _serviceReport?.calllastSituation = status; }, ), 8.height, @@ -212,7 +205,7 @@ class _InternalMaintenanceRequestState extends State contentPadding: EdgeInsets.symmetric(vertical: 18.toScreenHeight, horizontal: 16.toScreenWidth), showShadow: false, onSaved: (value) { - _serviceReport.travelingHours = double.tryParse(value) ?? 0.0; + _serviceReport?.travelingHours = double.tryParse(value) ?? 0.0; }, ), 16.height, @@ -239,7 +232,7 @@ class _InternalMaintenanceRequestState extends State alignLabelWithHint: true, textInputType: TextInputType.multiline, onSaved: (value) { - _serviceReport.comment = value; + _serviceReport?.comment = value; }, ), ], @@ -272,7 +265,7 @@ class _InternalMaintenanceRequestState extends State ); } - Widget radioButtonWidget({@required String label, @required dynamic value}) { + Widget radioButtonWidget({required String label, required dynamic value}) { return Row( mainAxisSize: MainAxisSize.min, children: [ @@ -284,9 +277,9 @@ class _InternalMaintenanceRequestState extends State activeColor: AppColor.primary10, value: value, groupValue: _selectedValue, - onChanged: (int value) { + onChanged: (int ?value) { setState(() { - _selectedValue = value; + _selectedValue = value!; }); }, ), diff --git a/lib/service_request_latest/views/forms/maintenance_request/maintenance_request_main.dart b/lib/service_request_latest/views/forms/maintenance_request/maintenance_request_main.dart index dbddb731..a4b37723 100644 --- a/lib/service_request_latest/views/forms/maintenance_request/maintenance_request_main.dart +++ b/lib/service_request_latest/views/forms/maintenance_request/maintenance_request_main.dart @@ -4,46 +4,25 @@ import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; -import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; -import 'package:test_sa/service_request_latest/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/service_request_latest/views/forms/maintenance_request/components/external_request.dart'; import 'package:test_sa/service_request_latest/views/forms/maintenance_request/components/internal_request.dart'; class MaintenanceRequestForm extends StatefulWidget { - const MaintenanceRequestForm({Key key}) : super(key: key); + const MaintenanceRequestForm({Key? key}) : super(key: key); @override _MaintenanceRequestFormState createState() => _MaintenanceRequestFormState(); } class _MaintenanceRequestFormState extends State with SingleTickerProviderStateMixin { - TabController _tabController; int initialIndex = 0; @override void initState() { super.initState(); - // _tabController = TabController(length: 2, vsync: this); - // print('tab controller i got is ${_tabController.length}'); - // _tabController.addListener(() { - // print('add listner called..'); - // setState(() { - // print('index i got is ${_tabController.index}'); - // if (_tabController.index == 0) { - // _buttonLabel = 'abc'; - // } else if (_tabController.index == 1) { - // _buttonLabel = 'def'; - // } - // }); - // }); } - @override - void dispose() { - _tabController.dispose(); - super.dispose(); - } @override Widget build(BuildContext context) { diff --git a/lib/service_request_latest/views/forms/spare_part/spare_part_request.dart b/lib/service_request_latest/views/forms/spare_part/spare_part_request.dart index 90ae345f..de8465ee 100644 --- a/lib/service_request_latest/views/forms/spare_part/spare_part_request.dart +++ b/lib/service_request_latest/views/forms/spare_part/spare_part_request.dart @@ -31,19 +31,19 @@ import '../../../../controllers/validator/validator.dart'; class SparePartRequest extends StatefulWidget { static const String id = "/spare-part-request"; - const SparePartRequest({Key key}) : super(key: key); + const SparePartRequest({Key ?key}) : super(key: key); @override _SparePartRequestState createState() => _SparePartRequestState(); } class _SparePartRequestState extends State with TickerProviderStateMixin { - UserProvider _userProvider; - SettingProvider _settingProvider; - ServiceRequestsProvider _serviceRequestsProvider; - ServiceStatusProvider _assetTypeProvider; - PartsProvider _partsProvider; - ServiceReport _serviceReport; + UserProvider? _userProvider; + SettingProvider ?_settingProvider; + ServiceRequestsProvider? _serviceRequestsProvider; + ServiceStatusProvider? _assetTypeProvider; + PartsProvider? _partsProvider; + ServiceReport? _serviceReport; bool _isLoading = false; List _spareParts = []; @@ -66,12 +66,11 @@ class _SparePartRequestState extends State with TickerProvider ServiceRequestsProvider serviceRequestsProvider = Provider.of(context, listen: false); Provider.of(context, listen: false).reset(); Provider.of(context, listen: false).reset(); - Provider.of(context, listen: false).serviceRequestId = serviceRequestsProvider.currentSelectedRequest.id; + Provider.of(context, listen: false).serviceRequestId = serviceRequestsProvider.currentSelectedRequest!.id; } // _isLoading = true; } - Asset loanAvailabilityAsset; @override void dispose() { @@ -84,12 +83,12 @@ class _SparePartRequestState extends State with TickerProvider _isLoading = true; setState(() {}); ServiceRequestsProvider serviceRequestsProvider = Provider.of(context, listen: false); - _serviceReport.callRequest = await _serviceRequestsProvider.getCallRequestForWorkOrder(callId: serviceRequestsProvider.currentSelectedRequest.id); - await _assetTypeProvider.getTypes(user: _userProvider.user, host: _settingProvider.host); - _serviceReport.assignedEmployee = _serviceReport.callRequest?.assignedEmployee; - _serviceReport.equipmentStatus = _serviceReport.callRequest?.defectType; - _serviceReport.serviceType = Lookup(id: 65, name: "Interval", value: 1); // default value in service type as in web - _spareParts = await _partsProvider.getPartsList(assetId: serviceRequestsProvider.currentSelectedRequest.deviceId); + _serviceReport?.callRequest = await _serviceRequestsProvider?.getCallRequestForWorkOrder(callId: serviceRequestsProvider!.currentSelectedRequest!.id!); + await _assetTypeProvider?.getTypes(); + _serviceReport?.assignedEmployee = _serviceReport?.callRequest?.assignedEmployee; + _serviceReport?.equipmentStatus = _serviceReport?.callRequest?.defectType; + _serviceReport?.serviceType = Lookup(id: 65, name: "Interval", value: 1); // default value in service type as in web + _spareParts = await _partsProvider!.getPartsList(assetId: serviceRequestsProvider.currentSelectedRequest!.deviceId); _isLoading = false; setState(() {}); } @@ -101,12 +100,12 @@ class _SparePartRequestState extends State with TickerProvider _serviceRequestsProvider = Provider.of(context); _assetTypeProvider = Provider.of(context); _partsProvider = Provider.of(context); - if (_serviceReport.callRequest == null) { + if (_serviceReport?.callRequest == null) { getRequestForWorkOrder(); } - _serviceReport.assetType = _assetTypeProvider.statuses?.firstWhere( - (element) => element.value == _serviceReport.callRequest?.assetType, - orElse: () => null, + _serviceReport?.assetType = _assetTypeProvider?.statuses?.firstWhere( + (element) => element.value == _serviceReport?.callRequest?.assetType, + orElse: () => Lookup(), ); return Scaffold( @@ -142,7 +141,6 @@ class _SparePartRequestState extends State with TickerProvider initialValue: serviceRequestProvider.initialSelectedSparePart.sparePart, backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral90, onSelect: (part) { - print('part i got is ${part.id}'); serviceRequestProvider.initialSelectedSparePart = SparePartsWorkOrders(id: 0, sparePart: part, qty: 0); }, ), @@ -192,7 +190,7 @@ class _SparePartRequestState extends State with TickerProvider showWithoutDecoration: true, textInputType: TextInputType.multiline, onSaved: (value) { - _serviceReport.comment = value; + _serviceReport?.comment = value; }, ), 15.height, diff --git a/lib/service_request_latest/views/forms/work_order/components/asset_conditon_view.dart b/lib/service_request_latest/views/forms/work_order/components/asset_conditon_view.dart index 1b881fa1..6dca5c88 100644 --- a/lib/service_request_latest/views/forms/work_order/components/asset_conditon_view.dart +++ b/lib/service_request_latest/views/forms/work_order/components/asset_conditon_view.dart @@ -1,4 +1,3 @@ -import 'dart:io'; import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; @@ -8,7 +7,6 @@ import 'package:test_sa/controllers/providers/api/status_drop_down/report/servic import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_types_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; -import 'package:test_sa/controllers/validator/validator.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/models/device/asset.dart'; @@ -20,7 +18,6 @@ import 'package:test_sa/models/service_request/supp_engineer_work_orders.dart'; import 'package:test_sa/models/service_request/supplier_details.dart'; import 'package:test_sa/models/service_request/wo_call_request.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; -import 'package:test_sa/new_views/common_widgets/app_text_form_field.dart'; import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.dart'; import 'package:test_sa/providers/loading_list_notifier.dart'; import 'package:test_sa/providers/service_request_providers/equipment_status_provider.dart'; @@ -30,9 +27,9 @@ import 'package:test_sa/views/widgets/loaders/app_loading.dart'; class AssetConditionView extends StatefulWidget { static const id = "/CreateSubWorkOrder"; - final SearchWorkOrder workOrder; + final SearchWorkOrder ?workOrder; - const AssetConditionView({this.workOrder, Key key}) : super(key: key); + const AssetConditionView({this.workOrder, Key? key}) : super(key: key); @override State createState() => _AssetConditionViewState(); @@ -40,22 +37,22 @@ class AssetConditionView extends StatefulWidget { class _AssetConditionViewState extends State { final GlobalKey _formKey = GlobalKey(); - SearchWorkOrder _subWorkOrders; - ServiceReport _serviceReport; - PartsProvider _partsProvider; + SearchWorkOrder? _subWorkOrders; + ServiceReport ?_serviceReport; + PartsProvider ?_partsProvider; List _spareParts = []; bool _isLoading = false; bool _showVendorFields = false; - SuppEngineerWorkOrders engineer; - SupplierDetails initialSupplier; + SuppEngineerWorkOrders ?engineer; + SupplierDetails ?initialSupplier; final TextEditingController _workPreformedController = TextEditingController(); final TextEditingController _partQtyController = TextEditingController(); @override void initState() { _subWorkOrders = SearchWorkOrder( - assignedEmployee: widget?.workOrder?.callRequest?.assignedEmployee, - callRequest: CallRequest(id: widget?.workOrder?.callRequest?.id), + assignedEmployee: widget.workOrder?.callRequest?.assignedEmployee, + callRequest: CallRequest(id: widget.workOrder?.callRequest?.id), currentSituation: null, supplier: null, // parentWOId: widget.workOrder.id, @@ -71,18 +68,18 @@ class _AssetConditionViewState extends State { // } } - ServiceStatusProvider assetTypesProvider; - CallRequest _callRequestForWorkOrder; + ServiceStatusProvider? assetTypesProvider; + CallRequest ?_callRequestForWorkOrder; void getData() async { ReasonProvider reasonProvider = Provider.of(context,listen: false); ServiceRequestsProvider serviceRequestsProvider = Provider.of(context,listen: false); - _spareParts = await Provider.of(context,listen: false).getPartsList(assetId: serviceRequestsProvider.currentSelectedRequest.deviceId); + _spareParts = await Provider.of(context,listen: false).getPartsList(assetId: serviceRequestsProvider.currentSelectedRequest?.deviceId); // _serviceReport = serviceRequestsProvider.currentSelectedRequest; // Provider.of(context).getDate(); // Provider.of(context).getDate(); - reasonProvider.serviceRequestId = serviceRequestsProvider.currentSelectedRequest.id; + reasonProvider.serviceRequestId = serviceRequestsProvider.currentSelectedRequest?.id; reasonProvider.getDate(); // Provider.of(context).getDate(); // Provider.of(context).getDate(); @@ -92,36 +89,36 @@ class _AssetConditionViewState extends State { final serviceRequestProvider = Provider.of(context); Provider.of(context, listen: false).reset(); assetTypesProvider = Provider.of(context, listen: false); - _callRequestForWorkOrder = await serviceRequestProvider.getCallRequestForWorkOrder(callId: widget.workOrder?.callRequest?.id?.toString()); + _callRequestForWorkOrder = await serviceRequestProvider.getCallRequestForWorkOrder(callId: widget.workOrder!.callRequest!.id!.toString()); if (_subWorkOrders?.parentWOId != null) { - final subWoDetails = await serviceRequestProvider.getSubWorkOrderDetails(parentId: _subWorkOrders?.parentWOId.toString()); - _subWorkOrders.copyDetails(subWoDetails); - _serviceReport.equipmentStatus = subWoDetails.equipmentStatus; - _serviceReport.reason = subWoDetails.reason; - initialSupplier = subWoDetails.supplier; - _serviceReport.faultDescription = subWoDetails.faultDescription; - _subWorkOrders.visitDate = subWoDetails.visitDate; - _subWorkOrders.sparePartsWorkOrders = subWoDetails.sparePartsWorkOrders; + final subWoDetails = await serviceRequestProvider.getSubWorkOrderDetails(parentId: _subWorkOrders!.parentWOId.toString()); + _subWorkOrders?.copyDetails(subWoDetails!); + _serviceReport!.equipmentStatus = subWoDetails?.equipmentStatus; + _serviceReport?.reason = subWoDetails?.reason; + initialSupplier = subWoDetails?.supplier; + _serviceReport?.faultDescription = subWoDetails?.faultDescription; + _subWorkOrders?.visitDate = subWoDetails?.visitDate; + _subWorkOrders?.sparePartsWorkOrders = subWoDetails?.sparePartsWorkOrders; } - await assetTypesProvider.getTypes(); - _subWorkOrders?.assetType = assetTypesProvider.statuses?.firstWhere( + await assetTypesProvider?.getTypes(); + _subWorkOrders?.assetType = assetTypesProvider?.statuses?.firstWhere( (element) => element.value == _callRequestForWorkOrder?.assetType, - orElse: () => null, + orElse: () => Lookup(), ); - if (checkVendorFieldsVisibility(_subWorkOrders.calllastSituation)) { - if (_subWorkOrders.suppEngineerWorkOrders?.isNotEmpty ?? false) { - engineer = _subWorkOrders.suppEngineerWorkOrders?.last; + if (checkVendorFieldsVisibility(_subWorkOrders!.calllastSituation!)) { + if (_subWorkOrders?.suppEngineerWorkOrders?.isNotEmpty ?? false) { + engineer = _subWorkOrders?.suppEngineerWorkOrders?.last; engineer?.id = engineer?.supplierContactId; } - _subWorkOrders.supplier ??= SupplierDetails(id: _subWorkOrders?.supplier?.id); + _subWorkOrders?.supplier ??= SupplierDetails(id: _subWorkOrders?.supplier?.id); } - _spareParts = await _partsProvider.getPartsList(assetId: widget.workOrder?.callRequest?.asset?.id); + _spareParts = await _partsProvider!.getPartsList(assetId: widget.workOrder?.callRequest?.asset?.id); setState(() { _isLoading = false; }); } - Asset loanAvailabilityAsset; + Asset ?loanAvailabilityAsset; @override void dispose() { @@ -143,7 +140,6 @@ class _AssetConditionViewState extends State { // // getAssetType(); // } - bool disablePart = _subWorkOrders.calllastSituation?.value == 12; return Consumer( builder: (context, serviceRequestProvider,child) { @@ -163,10 +159,10 @@ class _AssetConditionViewState extends State { SingleItemDropDownMenu( context: context, title: context.translation.reason, - initialValue: _subWorkOrders.reason, + initialValue: _subWorkOrders?.reason, onSelect: (value) { if (value != null) { - _subWorkOrders.reason = value; + _subWorkOrders?.reason = value; } }, ), @@ -174,10 +170,10 @@ class _AssetConditionViewState extends State { SingleItemDropDownMenu( context: context, title: context.translation.equipmentStatus, - initialValue: _subWorkOrders.equipmentStatus, + initialValue: _subWorkOrders?.equipmentStatus, onSelect: (value) { if (value != null) { - _subWorkOrders.equipmentStatus = value; + _subWorkOrders?.equipmentStatus = value; } }, ), @@ -233,22 +229,22 @@ class _AssetConditionViewState extends State { } Future validate() async { - if (_subWorkOrders.reason == null) { + if (_subWorkOrders?.reason == null) { Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.reason}"); return false; - } else if (_subWorkOrders.equipmentStatus == null) { + } else if (_subWorkOrders?.equipmentStatus == null) { Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.equipmentStatus}"); return false; - } else if (_subWorkOrders.calllastSituation == null) { + } else if (_subWorkOrders?.calllastSituation == null) { Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.callLastSituation}"); return false; - } else if (_showVendorFields && _subWorkOrders.suppEngineerWorkOrders == null) { + } else if (_showVendorFields && _subWorkOrders?.suppEngineerWorkOrders == null) { Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.supplierEngineer}"); return false; - } else if (_showVendorFields && (_subWorkOrders.supplier.suppliername == null || _subWorkOrders.supplier.suppliername.isEmpty)) { + } else if (_showVendorFields && (_subWorkOrders?.supplier?.suppliername == null || _subWorkOrders!.supplier!.suppliername!.isEmpty)) { Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.supplier}"); return false; - } else if (_subWorkOrders.calllastSituation.value == 12 && (_subWorkOrders.sparePartsWorkOrders == null || _subWorkOrders.sparePartsWorkOrders.isEmpty)) { + } else if (_subWorkOrders?.calllastSituation?.value == 12 && (_subWorkOrders?.sparePartsWorkOrders == null || _subWorkOrders!.sparePartsWorkOrders!.isEmpty)) { Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.partNo}"); return false; } else if (_subWorkOrders?.timer?.startAt == null) { diff --git a/lib/service_request_latest/views/forms/work_order/components/attachments_view.dart b/lib/service_request_latest/views/forms/work_order/components/attachments_view.dart index 5a07b5d1..297a0fd3 100644 --- a/lib/service_request_latest/views/forms/work_order/components/attachments_view.dart +++ b/lib/service_request_latest/views/forms/work_order/components/attachments_view.dart @@ -8,7 +8,7 @@ import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; class AttachmentView extends StatelessWidget { - const AttachmentView({Key key}) : super(key: key); + const AttachmentView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -16,7 +16,7 @@ class AttachmentView extends StatelessWidget { final GlobalKey _formKey = GlobalKey(); final List _files = []; return Consumer(builder: (context, serviceRequestProvider, child) { - serviceRequestProvider.currentSelectedRequest.visitDate = ''; + serviceRequestProvider.currentSelectedRequest?.visitDate = ''; return Form( key: _formKey, child: SingleChildScrollView( diff --git a/lib/service_request_latest/views/forms/work_order/components/time_duration_view.dart b/lib/service_request_latest/views/forms/work_order/components/time_duration_view.dart index 7f81c0cc..3babfc8f 100644 --- a/lib/service_request_latest/views/forms/work_order/components/time_duration_view.dart +++ b/lib/service_request_latest/views/forms/work_order/components/time_duration_view.dart @@ -13,7 +13,7 @@ import 'package:test_sa/views/widgets/date_and_time/time_picker.dart'; import 'package:test_sa/views/widgets/timer/app_timer.dart'; class TimeDurationView extends StatelessWidget { - const TimeDurationView({Key key}) : super(key: key); + const TimeDurationView({Key ?key}) : super(key: key); @override Widget build(BuildContext context) { @@ -21,7 +21,7 @@ class TimeDurationView extends StatelessWidget { final GlobalKey _formKey = GlobalKey(); return Consumer( builder: (context, serviceRequestProvider,child) { - serviceRequestProvider.currentSelectedRequest.visitDate = ''; + serviceRequestProvider.currentSelectedRequest?.visitDate = ''; return Form( key: _formKey, child: SingleChildScrollView( @@ -33,7 +33,7 @@ class TimeDurationView extends StatelessWidget { withIcon: false, hint: context.translation.select, height: 70.toScreenHeight, - date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest.visitDate ?? ""), + date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest?.visitDate ?? ""), formatDateWithTime: true, onDatePicker: (selectedDate) { if (selectedDate != null) { @@ -43,16 +43,14 @@ class TimeDurationView extends StatelessWidget { ).then((selectedTime) { // Handle the selected date and time here. if (selectedTime != null) { - DateTime selectedDateTime = DateTime( + DateTime ? selectedDateTime = DateTime( selectedDate.year, selectedDate.month, selectedDate.day, selectedTime.hour, selectedTime.minute, ); - if (selectedDateTime != null) { - serviceRequestProvider.currentSelectedRequest.visitDate = selectedDateTime?.toIso8601String(); - } + serviceRequestProvider.currentSelectedRequest?.visitDate = selectedDateTime?.toIso8601String(); } }); } diff --git a/lib/service_request_latest/views/forms/work_order/work_order_form_view.dart b/lib/service_request_latest/views/forms/work_order/work_order_form_view.dart index 20f4a53a..cc446047 100644 --- a/lib/service_request_latest/views/forms/work_order/work_order_form_view.dart +++ b/lib/service_request_latest/views/forms/work_order/work_order_form_view.dart @@ -16,7 +16,7 @@ import 'package:test_sa/service_request_latest/views/forms/work_order/components class WorkOrderFormView extends StatefulWidget { - const WorkOrderFormView({Key key}) : super(key: key); + const WorkOrderFormView({Key? key}) : super(key: key); @override _WorkOrderFormViewState createState() => _WorkOrderFormViewState(); @@ -191,7 +191,7 @@ class _WorkOrderFormViewState extends State { // Your onPressed code - Widget customStepWidget({@required int index, @required int stepIndex}) { + Widget customStepWidget({required int index, required int stepIndex}) { return CircleAvatar( backgroundColor: activeStep >= index ? AppColor.primary10 : AppColor.background(context), child: activeStep > index @@ -213,7 +213,7 @@ class _WorkOrderFormViewState extends State { ); } - Widget customStepLabel({@required String label, @required int index}) { + Widget customStepLabel({required String label, required int index}) { return Column( children: [ Text( @@ -230,11 +230,11 @@ class _WorkOrderFormViewState extends State { Widget getStepWidget() { switch (activeStep) { case 0: - return const TimeDurationView(); + return const TimeDurationView(); case 1: - return const AssetConditionView(); + return AssetConditionView(); case 2: - return const AttachmentView(); + return AttachmentView(); default: return const SizedBox(); } diff --git a/lib/service_request_latest/views/nurse/create_new_request_view.dart b/lib/service_request_latest/views/nurse/create_new_request_view.dart index 26e3a6fa..9c5774f0 100644 --- a/lib/service_request_latest/views/nurse/create_new_request_view.dart +++ b/lib/service_request_latest/views/nurse/create_new_request_view.dart @@ -26,7 +26,7 @@ import '../../../../../../new_views/common_widgets/default_app_bar.dart'; class CreateNewRequest extends StatefulWidget { static const String id = "/create-new-request"; - const CreateNewRequest({Key key}) : super(key: key); + const CreateNewRequest({Key ?key}) : super(key: key); @override _CreateNewRequestState createState() => _CreateNewRequestState(); @@ -34,11 +34,11 @@ class CreateNewRequest extends StatefulWidget { class _CreateNewRequestState extends State with TickerProviderStateMixin { - AssetProvider _devicesProvider; + AssetProvider? _devicesProvider; bool _isLoading = false; int _selectedEStatus = 1; - bool _isHighPrority = false; - String text; + bool _isHighPriority = false; + String text=''; final GlobalKey _formKey = GlobalKey(); final GlobalKey _scaffoldKey = GlobalKey(); @@ -49,20 +49,20 @@ class _CreateNewRequestState extends State with TickerProvider if (context.mounted) { ServiceRequestsProvider serviceRequestsProvider = Provider.of(context, listen: false); Provider.of(context, listen: false).reset(); + _devicesProvider = Provider.of(context, listen: false); Provider.of(context, listen: false).reset(); - Provider.of(context, listen: false).serviceRequestId = serviceRequestsProvider.currentSelectedRequest.id; + Provider.of(context, listen: false).serviceRequestId = serviceRequestsProvider.currentSelectedRequest?.id; } // _isLoading = true; } - _getDevice(String result, {bool isQr = false}) async { + _getDevice(String? result, {bool isQr = false}) async { if (result == null) return; - _devicesProvider.reset(); - await _devicesProvider.getAssets( + _devicesProvider!.reset(); + await _devicesProvider!.getAssets( search: AssetSearch(assetNo: result, assetSerialNumber: ""), isQr: isQr, ); } - Asset loanAvailabilityAsset; @override @@ -91,8 +91,8 @@ class _CreateNewRequestState extends State with TickerProvider children: [ AppFilledButton( label: context.translation.scanOrPickAsset, - showIcon: true, - icon: "scan_asset".toSvgAsset(height: 20, fit: BoxFit.contain, color: Theme.of(context).scaffoldBackgroundColor), + // showIcon: true, + // icon: "scan_asset".toSvgAsset(height: 20, fit: BoxFit.contain, color: Theme.of(context).scaffoldBackgroundColor), buttonColor: AppColor.neutral50, onPressed: () async { String result = await Navigator.of(context).push( @@ -107,12 +107,12 @@ class _CreateNewRequestState extends State with TickerProvider children: [ context.translation.highPriority.bodyText(context).custom(color: AppColor.black20), CupertinoSwitch( - value: _isHighPrority, + value: _isHighPriority, onChanged: (value) { setState(() { // listingVm.listing[listingVm.listingParameter]['bayut'] = value; - _isHighPrority = value; + _isHighPriority = value; }); }, thumbColor: AppColor.red70, @@ -142,8 +142,8 @@ class _CreateNewRequestState extends State with TickerProvider validator: (value) => Validator.hasValue(value) ? null : context.translation.requiredField, textInputType: TextInputType.multiline, suffixIcon: "comment_send".toSvgAsset().paddingOnly(end: 16).onPress(() { - if (_formKey.currentState.validate()) { - _formKey.currentState.save(); + if (_formKey.currentState!.validate()) { + _formKey.currentState!.save(); // final comment = Comment(id: 0, callRequestId: num.tryParse(widget.requestId ?? ""), comment: text); // commentsProvider.addComment(context, comment: comment); } @@ -184,7 +184,7 @@ class _CreateNewRequestState extends State with TickerProvider ); } - Widget radioButtonWidget({@required String label, @required dynamic value}) { + Widget radioButtonWidget({required String label, required dynamic value}) { return Row( mainAxisSize: MainAxisSize.min, children: [ @@ -196,9 +196,9 @@ class _CreateNewRequestState extends State with TickerProvider activeColor: AppColor.primary10, value: value, groupValue: _selectedEStatus, - onChanged: (int value) { + onChanged: (int? value) { setState(() { - _selectedEStatus = value; + _selectedEStatus = value!; }); }, ), diff --git a/lib/views/widgets/date_and_time/date_picker.dart b/lib/views/widgets/date_and_time/date_picker.dart index 1af8a172..cc4b323e 100644 --- a/lib/views/widgets/date_and_time/date_picker.dart +++ b/lib/views/widgets/date_and_time/date_picker.dart @@ -16,6 +16,7 @@ class ADatePicker extends StatelessWidget { final Function(DateTime)? onDatePicker; // Nullable final bool enable; final bool withBorder; + final bool ?withIcon; final Color? backgroundColor; // Nullable final bool formatDateWithTime; final double? height; // Nullable @@ -29,6 +30,7 @@ class ADatePicker extends StatelessWidget { this.hideShadow = false, this.hint, this.date, + this.withIcon = false, this.formatDateWithTime = false, this.onDatePicker, this.from, @@ -62,13 +64,14 @@ class ADatePicker extends StatelessWidget { (date == null ? hint ?? context.translation.pickADate : (formatDateWithTime - ? date?.toIso8601String()?.toFirstActionFormat // Use null-aware operator - : (date?.toIso8601String()?.split("T")?.first ?? context.translation.pickADate)))! + ? date?.toIso8601String().toFirstActionFormat // Use null-aware operator + : (date?.toIso8601String().split("T").first ?? context.translation.pickADate)))! .bodyText(context) .custom(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), ], ).expanded, enable ? 16.width : const Spacer(), + "calender".toSvgAsset(width: 20, color: context.isDark ? AppColor.neutral10 : null), ], ), diff --git a/lib/views/widgets/e_signature/e_signature.dart b/lib/views/widgets/e_signature/e_signature.dart index 86d61899..320cecba 100644 --- a/lib/views/widgets/e_signature/e_signature.dart +++ b/lib/views/widgets/e_signature/e_signature.dart @@ -14,10 +14,12 @@ class ESignature extends StatefulWidget { final String? oldSignature; final Uint8List? newSignature; final Function(Uint8List?)? onSaved; + final Color? backgroundColor; final Function(Uint8List)? onChange; + final bool showShadow; final String title; - const ESignature({Key? key, required this.title, required this.oldSignature, this.onSaved, this.onChange, required this.newSignature}) : super(key: key); + const ESignature({Key? key, required this.title, required this.oldSignature, this.backgroundColor, this.onSaved, this.onChange, this.showShadow=true, required this.newSignature}) : super(key: key); @override State createState() => _ESignatureState(); @@ -53,7 +55,6 @@ class _ESignatureState extends State { penColor: context.isDark ? Colors.white : Colors.black, exportBackgroundColor: AppColor.background(context), ); - print(widget.oldSignature); return FormField(onSaved: (_) async { if (widget.onSaved != null) widget.onSaved!(signature); }, builder: (FormFieldState state) { @@ -63,9 +64,9 @@ class _ESignatureState extends State { width: MediaQuery.of(context).size.width, padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight), decoration: BoxDecoration( - color: context.isDark ? AppColor.background(context) : Colors.white, + color: widget.backgroundColor ?? (context.isDark ? AppColor.background(context) : Colors.white), borderRadius: _editable ? const BorderRadius.only(topLeft: Radius.circular(10), topRight: Radius.circular(10)) : BorderRadius.circular(10), - boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)], + boxShadow: widget.showShadow? [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)]:null, ), child: Column( crossAxisAlignment: CrossAxisAlignment.center, @@ -76,15 +77,15 @@ class _ESignatureState extends State { children: [ widget.title.tinyFont(context).paddingOnly(top: 8), (!_editable - ? "edit".toSvgAsset(width: 48).paddingOnly(top: 8) - : Container( - width: 48.toScreenWidth, - height: 48.toScreenWidth, - decoration: BoxDecoration(borderRadius: BorderRadius.circular(100), border: Border.all(color: AppColor.neutral30)), - padding: const EdgeInsets.all(11), - margin: const EdgeInsets.only(top: 8), - child: "done".toSvgAsset(width: 26), - )) + ? "edit".toSvgAsset(width: 48).paddingOnly(top: 8) + : Container( + width: 48.toScreenWidth, + height: 48.toScreenWidth, + decoration: BoxDecoration(borderRadius: BorderRadius.circular(100), border: Border.all(color: AppColor.neutral30)), + padding: const EdgeInsets.all(11), + margin: const EdgeInsets.only(top: 8), + child: "done".toSvgAsset(width: 26), + )) .onPress(() async { if (_editable) { signature = await _controller!.toPngBytes(); @@ -99,20 +100,20 @@ class _ESignatureState extends State { ), ((widget.oldSignature != null || signature != null) && !_editable) ? Container( - height: 135.toScreenHeight, - width: MediaQuery.of(context).size.width, - padding: const EdgeInsets.only(bottom: 8), - child: signature != null ? Image.memory(signature!) : ImageLoader(boxFit: BoxFit.contain, url: URLs.getFileUrl(widget.oldSignature)!), - ) + height: 135.toScreenHeight, + width: MediaQuery.of(context).size.width, + padding: const EdgeInsets.only(bottom: 8), + child: signature != null ? Image.memory(signature!) : ImageLoader(boxFit: BoxFit.contain, url: URLs.getFileUrl(widget.oldSignature)!), + ) : AbsorbPointer( - absorbing: !_editable, - child: Signature( - controller: _controller!, - height: 135.toScreenHeight, - width: MediaQuery.of(context).size.width - 64.toScreenWidth, - backgroundColor: Colors.transparent, - ), - ), + absorbing: !_editable, + child: Signature( + controller: _controller!, + height: 135.toScreenHeight, + width: MediaQuery.of(context).size.width - 64.toScreenWidth, + backgroundColor: Colors.transparent, + ), + ), ], ), ),