From f3695b90fbb868197dc9866100ca4f5dbaa88acc Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Sun, 6 Oct 2024 18:50:41 +0300 Subject: [PATCH] assistant employee improvements --- .../firebase_notification_manger.dart | 4 +- .../components/assistant_employee_card.dart | 269 +++++++++--------- .../components/internal_request.dart | 12 +- .../status/assistant_employee_menu.dart | 234 ++++++++------- ...ervice_report_assistant_employee_menu.dart | 3 +- 5 files changed, 276 insertions(+), 246 deletions(-) diff --git a/lib/controllers/notification/firebase_notification_manger.dart b/lib/controllers/notification/firebase_notification_manger.dart index 1b47cafc..573bd8ca 100644 --- a/lib/controllers/notification/firebase_notification_manger.dart +++ b/lib/controllers/notification/firebase_notification_manger.dart @@ -34,7 +34,7 @@ class FirebaseNotificationManger { h_push.Push.getTokenStream.listen((hToken) { // onToken(token); - print("Huawei Token: ${hToken}"); + // print("Huawei Token: ${hToken}"); token = hToken; }, onError: (e) { print( "Huawei TokenError"+e.toString()); @@ -57,7 +57,7 @@ class FirebaseNotificationManger { } catch (ex) {} } } - print("pushToken:$token"); + //print("pushToken:$token"); } static void _onMessageReceived(h_push.RemoteMessage remoteMessage) { diff --git a/lib/service_request_latest/views/forms/maintenance_request/components/assistant_employee_card.dart b/lib/service_request_latest/views/forms/maintenance_request/components/assistant_employee_card.dart index aa921bda..a543b0bc 100644 --- a/lib/service_request_latest/views/forms/maintenance_request/components/assistant_employee_card.dart +++ b/lib/service_request_latest/views/forms/maintenance_request/components/assistant_employee_card.dart @@ -6,7 +6,6 @@ import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; -import 'package:test_sa/models/helper_data_models/maintenance_request/activity_maintenance_model.dart'; import 'package:test_sa/models/new_models/work_order_detail_model.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'; @@ -22,7 +21,6 @@ class AssistantEmployeeCard extends StatefulWidget { } class _AssistantEmployeeCardState extends State { - bool status = false; final TextEditingController _workingHoursController = TextEditingController(text: ''); bool isCurrentUserIsAssistantEmp = false; @@ -57,147 +55,148 @@ class _AssistantEmployeeCardState extends State { @override Widget build(BuildContext context) { return Consumer(builder: (context, requestDetailProvider, child) { - return Column( + return Column( children: [ SizedBox( height: 56.toScreenHeight, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - context.translation.assistantEmployee.bodyText(context).custom(color: AppColor.black20), - IconButton(onPressed: (){ - setState(() { - isExpanded=!isExpanded; - }); - }, icon: Icon(isExpanded?Icons.arrow_drop_up_outlined:Icons.arrow_drop_down)), - ],), - ), - isExpanded? Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - ServiceReportAssistantEmployeeMenu( - title: context.translation.select, - backgroundColor: AppColor.neutral100, - assetId: requestDetailProvider.currentWorkOrder!.data!.asset!.id!, - initialValue: (requestDetailProvider.activityMaintenanceHelperModel?.assistantEmployees?.isNotEmpty ?? false) - ? requestDetailProvider.activityMaintenanceHelperModel?.assistantEmployees?.first - : null, - //TODO add check... - // enable: !isCurrentUserIsAssistantEmp, - onSelect: (employee) { - print('on select called...${employee?.toJson()}'); - if (employee == null) { - requestDetailProvider.activityMaintenanceHelperModel?.assistantEmployees = []; - } else { - requestDetailProvider.activityMaintenanceHelperModel?.assistantEmployees = [employee.copyWith(id: 0)]; - requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.user= AssignedEmployee(userId: employee.user?.id,userName:employee.user?.name ); - - } - }, - ), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - ADatePicker( - label: context.translation.startTime, - hideShadow: true, - backgroundColor: AppColor.neutral100, - date: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate, - formatDateWithTime: true, - onDatePicker: (selectedDate) { - showTimePicker( - context: context, - initialTime: TimeOfDay.now(), - ).then((selectedTime) { - // Handle the selected date and time here. - if (selectedTime != null) { - DateTime selectedDateTime = DateTime( - selectedDate.year, - selectedDate.month, - selectedDate.day, - selectedTime.hour, - selectedTime.minute, - ); - requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate = selectedDateTime; - requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel); - assignWorkingHours(requestDetailProvider: requestDetailProvider); + context.translation.assistantEmployee.bodyText(context).custom(color: AppColor.black20), + Icon(isExpanded ? Icons.arrow_drop_up_outlined : Icons.arrow_drop_down), + ], + ), + ).onPress(() { + setState(() { + isExpanded = !isExpanded; + }); + }), + isExpanded + ? Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + ServiceReportAssistantEmployeeMenu( + title: context.translation.select, + backgroundColor: AppColor.neutral100, + assetId: requestDetailProvider.currentWorkOrder!.data!.asset!.id!, + initialValue: (requestDetailProvider.activityMaintenanceHelperModel?.assistantEmployees?.isNotEmpty ?? false) + ? requestDetailProvider.activityMaintenanceHelperModel?.assistantEmployees?.first + : null, + //TODO add check... + // enable: !isCurrentUserIsAssistantEmp, + onSelect: (employee) { + print('on select called...${employee?.toJson()}'); + if (employee == null) { + requestDetailProvider.activityMaintenanceHelperModel?.assistantEmployees = []; + } else { + requestDetailProvider.activityMaintenanceHelperModel?.assistantEmployees = [employee.copyWith(id: 0)]; + requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.user = AssignedEmployee(userId: employee.user?.id, userName: employee.user?.name); } - }); - }, - ).expanded, - 8.width, - ADatePicker( - label: context.translation.endTime, - hideShadow: true, - backgroundColor: AppColor.neutral100, - date: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.endDate, - formatDateWithTime: true, - onDatePicker: (selectedDate) { - showTimePicker( - context: context, - initialTime: TimeOfDay.now(), - ).then((selectedTime) { - // Handle the selected date and time here. - if (selectedTime != null) { - DateTime selectedDateTime = DateTime( - selectedDate.year, - selectedDate.month, - selectedDate.day, - selectedTime.hour, - selectedTime.minute, - ); - if (requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate != null && - selectedDateTime.isBefore(requestDetailProvider.activityMaintenanceHelperModel!.modelAssistantEmployees!.startDate!)) { - "End Date time must be greater then start date".showToast; - return; - } - requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.endDate = selectedDateTime; - requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel); - assignWorkingHours(requestDetailProvider: requestDetailProvider); - } - }); - }, - ).expanded, - ], - ), - 8.height, - AppTextFormField( - labelText: context.translation.workingHours, - backgroundColor: AppColor.neutral80, - controller: _workingHoursController, - suffixIcon: "clock".toSvgAsset(width: 20, color: context.isDark ? AppColor.neutral10 : null).paddingOnly(end: 16), - initialValue: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.workingHours != null - ? requestDetailProvider.activityMaintenanceHelperModel!.modelAssistantEmployees!.workingHours.toString() - : '', - textAlign: TextAlign.center, - labelStyle: AppTextStyles.textFieldLabelStyle, - enable: false, - showShadow: false, - style: Theme.of(context).textTheme.titleMedium, - ), - 8.height, - AppTextFormField( - initialValue: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.technicalComment, - labelText: context.translation.technicalComment, - backgroundColor: AppColor.neutral100, - showShadow: false, - labelStyle: AppTextStyles.textFieldLabelStyle, - alignLabelWithHint: true, - textInputType: TextInputType.multiline, - onChange: (value) { - requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.technicalComment = value; - }, - onSaved: (value) { - requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.technicalComment = value; - }, - ), - 8.height, - ], - ):const SizedBox(), + }, + ), + 8.height, + Row( + mainAxisSize: MainAxisSize.min, + children: [ + ADatePicker( + label: context.translation.startTime, + hideShadow: true, + backgroundColor: AppColor.neutral100, + date: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate, + formatDateWithTime: true, + onDatePicker: (selectedDate) { + showTimePicker( + context: context, + initialTime: TimeOfDay.now(), + ).then((selectedTime) { + // Handle the selected date and time here. + if (selectedTime != null) { + DateTime selectedDateTime = DateTime( + selectedDate.year, + selectedDate.month, + selectedDate.day, + selectedTime.hour, + selectedTime.minute, + ); + requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate = selectedDateTime; + requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel); + assignWorkingHours(requestDetailProvider: requestDetailProvider); + } + }); + }, + ).expanded, + 8.width, + ADatePicker( + label: context.translation.endTime, + hideShadow: true, + backgroundColor: AppColor.neutral100, + date: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.endDate, + formatDateWithTime: true, + onDatePicker: (selectedDate) { + showTimePicker( + context: context, + initialTime: TimeOfDay.now(), + ).then((selectedTime) { + // Handle the selected date and time here. + if (selectedTime != null) { + DateTime selectedDateTime = DateTime( + selectedDate.year, + selectedDate.month, + selectedDate.day, + selectedTime.hour, + selectedTime.minute, + ); + if (requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate != null && + selectedDateTime.isBefore(requestDetailProvider.activityMaintenanceHelperModel!.modelAssistantEmployees!.startDate!)) { + "End Date time must be greater then start date".showToast; + return; + } + requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.endDate = selectedDateTime; + requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel); + assignWorkingHours(requestDetailProvider: requestDetailProvider); + } + }); + }, + ).expanded, + ], + ), + 8.height, + AppTextFormField( + labelText: context.translation.workingHours, + backgroundColor: AppColor.neutral80, + controller: _workingHoursController, + suffixIcon: "clock".toSvgAsset(width: 20, color: context.isDark ? AppColor.neutral10 : null).paddingOnly(end: 16), + initialValue: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.workingHours != null + ? requestDetailProvider.activityMaintenanceHelperModel!.modelAssistantEmployees!.workingHours.toString() + : '', + textAlign: TextAlign.center, + labelStyle: AppTextStyles.textFieldLabelStyle, + enable: false, + showShadow: false, + style: Theme.of(context).textTheme.titleMedium, + ), + 8.height, + AppTextFormField( + initialValue: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.technicalComment, + labelText: context.translation.technicalComment, + backgroundColor: AppColor.neutral100, + showShadow: false, + labelStyle: AppTextStyles.textFieldLabelStyle, + alignLabelWithHint: true, + textInputType: TextInputType.multiline, + onChange: (value) { + requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.technicalComment = value; + }, + onSaved: (value) { + requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.technicalComment = value; + }, + ), + 8.height, + ], + ) + : const SizedBox(), ], ); - }); } @@ -205,7 +204,7 @@ class _AssistantEmployeeCardState extends State { double calculateWorkingHours(DateTime? startTime, DateTime? endTime) { if (startTime != null && endTime != null) { Duration difference = endTime.difference(startTime); - int hours = difference.inHours ; + int hours = difference.inHours; int minutes = difference.inMinutes % 60; return hours.toDouble(); } else { 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 0a5fc50d..c58c95c7 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 @@ -1,26 +1,20 @@ import 'package:flutter/material.dart'; -import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_repair_location_provider.dart'; -import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; -import 'package:test_sa/models/helper_data_models/maintenance_request/activity_maintenance_model.dart'; import 'package:test_sa/models/service_request/service_report.dart'; import 'package:test_sa/models/service_request/service_request.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/providers/service_request_providers/last_situation_provider.dart'; import 'package:test_sa/providers/work_order/activity_status_provider.dart'; import 'package:test_sa/service_request_latest/request_detail_provider.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/assistant_employee_card.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; -import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import '../../../../../controllers/providers/api/status_drop_down/report/service_types_provider.dart'; import '../../../../../models/lookup.dart'; @@ -101,8 +95,10 @@ class _InternalMaintenanceRequestState extends State showAsBottomSheet: true, initialValue: requestDetailProvider.activityMaintenanceHelperModel?.lastSituation, onSelect: (status) { - requestDetailProvider.activityMaintenanceHelperModel?.lastSituation = status; - setState(() {}); + if (status != null) { + requestDetailProvider.activityMaintenanceHelperModel?.lastSituation = status; + setState(() {}); + } }, ), 8.height, diff --git a/lib/views/widgets/status/assistant_employee_menu.dart b/lib/views/widgets/status/assistant_employee_menu.dart index e81307bd..259d38cc 100644 --- a/lib/views/widgets/status/assistant_employee_menu.dart +++ b/lib/views/widgets/status/assistant_employee_menu.dart @@ -1,131 +1,165 @@ import 'package:flutter/material.dart'; import 'package:test_sa/extensions/context_extension.dart'; -import'package:test_sa/extensions/int_extensions.dart'; +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/models/base.dart'; +import 'package:test_sa/providers/loading_list_notifier.dart'; +import 'package:test_sa/views/widgets/bottom_sheets/selection_bottom_sheet.dart'; import '../../../models/new_models/assistant_employee.dart'; import '../../../new_views/app_style/app_color.dart'; class AssistantEmployeeMenu extends StatefulWidget { final List statuses; - Color? backgroundColor; + Color? backgroundColor; final AssistantEmployees? initialStatus; // Now nullable final Function(AssistantEmployees?) onSelect; // Now accepts nullable values final String? title; // Now nullable final bool enable; + final bool showAsBottomSheet; - AssistantEmployeeMenu({Key? key, required this.statuses, this.title, required this.onSelect, this.initialStatus,this.backgroundColor, this.enable = true}) : super(key: key); + AssistantEmployeeMenu({Key? key, required this.statuses, this.title, this.showAsBottomSheet = false, required this.onSelect, this.initialStatus, this.backgroundColor, this.enable = true}) + : super(key: key); @override _SingleAssistantEmployeeMenuState createState() => _SingleAssistantEmployeeMenuState(); } -class _SingleAssistantEmployeeMenuState extends State {AssistantEmployees? _selectedStatus; // Now nullable +class _SingleAssistantEmployeeMenuState extends State { + AssistantEmployees? _selectedStatus; // Now nullable -@override -void setState(VoidCallback fn) { - if (mounted) super.setState(fn); -} + @override + void setState(VoidCallback fn) { + if (mounted) super.setState(fn); + } -@override -void didUpdateWidget(covariant AssistantEmployeeMenu oldWidget) { - if (widget.initialStatus != null) { - final result = widget.statuses.where((element) => element.user?.id == widget.initialStatus?.user?.id); - if (result.isNotEmpty) { - _selectedStatus = result.first; + @override + void didUpdateWidget(covariant AssistantEmployeeMenu oldWidget) { + if (widget.initialStatus != null) { + final result = widget.statuses.where((element) => element.user?.id == widget.initialStatus?.user?.id); + if (result.isNotEmpty) { + _selectedStatus = result.first; + } else { + _selectedStatus = null; + } + if (widget.initialStatus?.user?.id != _selectedStatus?.user?.id) { + widget.onSelect(_selectedStatus); + } } else { _selectedStatus = null; } - if (widget.initialStatus?.user?.id != _selectedStatus?.user?.id) { - widget.onSelect(_selectedStatus); - } - } else { - _selectedStatus = null; + super.didUpdateWidget(oldWidget); } - super.didUpdateWidget(oldWidget); -} -@override -void initState() { - if (widget.initialStatus != null) { - final result = widget.statuses.where((element) => element.user?.id == widget.initialStatus?.user?.id); - if (result.isNotEmpty) { - _selectedStatus = result.first; - } - if (widget.initialStatus?.user?.id != _selectedStatus?.user?.id) { - widget.onSelect(_selectedStatus); + @override + void initState() { + if (widget.initialStatus != null) { + final result = widget.statuses.where((element) => element.user?.id == widget.initialStatus?.user?.id); + if (result.isNotEmpty) { + _selectedStatus = result.first; + } + if (widget.initialStatus?.user?.id != _selectedStatus?.user?.id) { + widget.onSelect(_selectedStatus); + } } + super.initState(); } - super.initState(); -} -@override -Widget build(BuildContext context) { - return Container( - height: 60.toScreenHeight, - padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth), - decoration: BoxDecoration( - color:widget.backgroundColor ?? (context.isDark ? AppColor.neutral50 : AppColor.neutral120), - borderRadius: BorderRadius.circular(10), - boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)], - ), - child: Stack( - alignment: Alignment.center, - children: [ - PositionedDirectional( - end: 0, - child: Icon( - Icons.keyboard_arrow_down_rounded, - color: widget.enable ? null : Colors.grey, - ), - ), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - if (widget.title != null) - Text( - widget.title!, // Non-null assertion after null check - style: Theme.of(context).textTheme.bodySmall?.copyWith(color: context.isDark ? null : AppColor.neutral20, fontWeight: FontWeight.w500), - ), - DropdownButton( - value: _selectedStatus, - dropdownColor: AppColor.white10, - iconSize: 24, - isDense: true, - icon: const SizedBox.shrink(), - elevation: 0, - isExpanded: true, - hint: Text( - context.translation.select, - style: Theme.of(context).textTheme.bodyLarge, - ), - style: AppTextStyles.bodyText2.copyWith(color: AppColor.black20), - underline: const SizedBox.shrink(), - onChanged: widget.enable - ? (AssistantEmployees? newValue) { // Now accepts nullable values - setState(() { - _selectedStatus = newValue; - }); - widget.onSelect(newValue); - } - :null, - items: widget.statuses.map>( - (AssistantEmployees value) { - return DropdownMenuItem( - value: value, - child: Text( - value.user?.name ?? "NULL", // Use null-aware operator for user.name - style: AppTextStyles.bodyText.copyWith(color: AppColor.black20), - ), - ); - }, - ).toList(), + @override + Widget build(BuildContext context) { + return Container( + height: 60.toScreenHeight, + padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth), + decoration: BoxDecoration( + color: widget.backgroundColor ?? (context.isDark ? AppColor.neutral50 : AppColor.neutral120), + borderRadius: BorderRadius.circular(10), + boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)], + ), + child: Stack( + alignment: Alignment.center, + children: [ + PositionedDirectional( + end: 0, + child: Icon( + Icons.keyboard_arrow_down_rounded, + color: widget.enable ? null : Colors.grey, ), - ], - ), - ], - ), - ); + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + if (widget.title != null) + Text( + widget.title!, // Non-null assertion after null check + style: Theme.of(context).textTheme.bodySmall?.copyWith(color: context.isDark ? null : AppColor.neutral20, fontWeight: FontWeight.w500), + ), + DropdownButton( + value: _selectedStatus, + dropdownColor: AppColor.white10, + iconSize: 24, + isDense: true, + icon: const SizedBox.shrink(), + elevation: 0, + isExpanded: true, + hint: Text( + context.translation.select, + style: Theme.of(context).textTheme.bodyLarge, + ), + style: AppTextStyles.bodyText2.copyWith(color: AppColor.black20), + underline: const SizedBox.shrink(), + onChanged: (widget.enable == false || widget.showAsBottomSheet) + ? null + : (AssistantEmployees? newValue) { + // Now accepts nullable values + setState(() { + _selectedStatus = newValue; + }); + widget.onSelect(newValue); + }, + items: widget.statuses.map>( + (AssistantEmployees value) { + return DropdownMenuItem( + value: value, + child: Text( + value.user?.name ?? "NULL", // Use null-aware operator for user.name + style: AppTextStyles.bodyText.copyWith(color: AppColor.black20), + ), + ); + }, + ).toList(), + ).onPress(widget.showAsBottomSheet + ? () async { + final selectedT = await showModalBottomSheet( + // Specify return type + context: context, + isScrollControlled: true, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.vertical( + top: Radius.circular(20), + ), + ), + clipBehavior: Clip.antiAliasWithSaveLayer, + builder: (BuildContext context) => SelectionBottomSheet( + items: widget.statuses, + selectedItem: _selectedStatus, + title: "Select", + builderString: (emp) => emp?.name ?? "", // Null-aware operator for emp.name + ), + ); + if (selectedT != null) { + setState(() { + _selectedStatus = selectedT; + }); + widget.onSelect(selectedT); // Non-null assertion after null check + } + } + : null), + ], + ), + ], + ), + ); + } } -} \ No newline at end of file diff --git a/lib/views/widgets/status/report/service_report_assistant_employee_menu.dart b/lib/views/widgets/status/report/service_report_assistant_employee_menu.dart index 06d18c77..533faace 100644 --- a/lib/views/widgets/status/report/service_report_assistant_employee_menu.dart +++ b/lib/views/widgets/status/report/service_report_assistant_employee_menu.dart @@ -14,7 +14,7 @@ class ServiceReportAssistantEmployeeMenu extends StatelessWidget { final num assetId; final bool enable; - ServiceReportAssistantEmployeeMenu({Key? key, required this.onSelect, required this.title, required this.initialValue, required this.assetId, this.backgroundColor, this.enable = true}) + ServiceReportAssistantEmployeeMenu({Key? key, required this.onSelect, required this.title, required this.initialValue, required this.assetId, this.backgroundColor, this.enable = true}) : super(key: key); @override @@ -30,6 +30,7 @@ class ServiceReportAssistantEmployeeMenu extends StatelessWidget { child: AssistantEmployeeMenu( initialStatus: initialValue, title: title, + showAsBottomSheet: true, statuses: menuProvider.assistantEmployees ?? [], backgroundColor: backgroundColor, // Provide an empty list if null