diff --git a/assets/images/wo/loan_wo.svg b/assets/images/wo/loan_wo.svg new file mode 100644 index 00000000..86f1bcae --- /dev/null +++ b/assets/images/wo/loan_wo.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/lib/modules/asset_inventory_module/pages/asset_inventory_form_view.dart b/lib/modules/asset_inventory_module/pages/asset_inventory_form_view.dart index 52c7cfa2..f60d5332 100644 --- a/lib/modules/asset_inventory_module/pages/asset_inventory_form_view.dart +++ b/lib/modules/asset_inventory_module/pages/asset_inventory_form_view.dart @@ -303,7 +303,7 @@ class _AssetInventoryFormViewState extends State { attachment: attachments, buttonColor: AppColor.black10, onlyImages: false, - buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120), + buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10), ), 12.height, AppTextFormField( diff --git a/lib/modules/cm_module/create_cm_request.dart b/lib/modules/cm_module/create_cm_request.dart index 95c74d29..e9d38414 100644 --- a/lib/modules/cm_module/create_cm_request.dart +++ b/lib/modules/cm_module/create_cm_request.dart @@ -158,13 +158,12 @@ class _CreateCMRequestState extends State with TickerProviderSt AttachmentPicker( label: context.translation.attachImage, attachment: _deviceImages, - buttonColor: AppColor.black10, onlyImages: false, - buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120), + buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10), ), ], ).paddingAll(0).toShadowContainer(context), - 16.height, + 12.height, commentWidget(serviceRequest: _serviceRequest), ], ), @@ -202,7 +201,7 @@ class _CreateCMRequestState extends State with TickerProviderSt crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - context.translation.assetStatus.bodyText(context).custom(color: AppColor.black20), + context.translation.assetStatus.bodyText(context).custom(color: AppColor.textStyleColor(context)), 8.height, Wrap( runSpacing: 8, @@ -222,7 +221,7 @@ class _CreateCMRequestState extends State with TickerProviderSt if (states.contains(WidgetState.selected)) { return AppColor.primary10; // Thumb color when selected } - return Colors.grey; // Thumb color when unselected (grey) + return AppColor.icon2Color(context); // Thumb color when unselected (grey) }), groupValue: _serviceRequest.defectType, onChanged: (state) { @@ -232,7 +231,7 @@ class _CreateCMRequestState extends State with TickerProviderSt }), ), 8.width, - Text(element.name ?? '', style: AppTextStyles.tinyFont.copyWith(color: AppColor.neutral120)), + Text(element.name ?? '', style: AppTextStyles.tinyFont.copyWith(color: AppColor.icon2Color(context))), ], ) ], @@ -246,7 +245,7 @@ class _CreateCMRequestState extends State with TickerProviderSt return AssetPicker( device: _serviceRequest.device, showLoading: checkPendingRequest, - borderColor: AppColor.black20, + // borderColor: AppColor.black20, onPick: (asset) async { pendingAssetServiceRequest = null; _serviceRequest.device = asset; @@ -262,7 +261,7 @@ class _CreateCMRequestState extends State with TickerProviderSt return Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - context.translation.highPriority.bodyText(context).custom(color: AppColor.black20), + context.translation.highPriority.bodyText(context).custom(color: AppColor.textStyleColor(context)), Consumer(builder: (cxt, snapshot, _) { if (snapshot.items.isNotEmpty) { _serviceRequest.priority ??= snapshot.items.firstWhere((element) => element.value == 0, orElse: () => Lookup()); diff --git a/lib/modules/cm_module/views/components/bottom_sheets/service_request_bottomsheet.dart b/lib/modules/cm_module/views/components/bottom_sheets/service_request_bottomsheet.dart index d15e2a81..90060402 100644 --- a/lib/modules/cm_module/views/components/bottom_sheets/service_request_bottomsheet.dart +++ b/lib/modules/cm_module/views/components/bottom_sheets/service_request_bottomsheet.dart @@ -40,7 +40,7 @@ class ServiceRequestBottomSheet { useSafeArea: true, isScrollControlled: true, isDismissible: isDismissible ?? true, - backgroundColor: Colors.transparent, + backgroundColor: AppColor.bottomSheetColor(context), builder: (context) => SingleChildScrollView( child: SafeArea(child: childWidget), ).bottomSheetContainer(context), diff --git a/lib/modules/cm_module/views/forms/asset_retired/asset_retired.dart b/lib/modules/cm_module/views/forms/asset_retired/asset_retired.dart index fe8760eb..d31dbf94 100644 --- a/lib/modules/cm_module/views/forms/asset_retired/asset_retired.dart +++ b/lib/modules/cm_module/views/forms/asset_retired/asset_retired.dart @@ -107,7 +107,7 @@ class _AssetRetiredState extends State with TickerProviderStateMix label: context.translation.attachFiles, attachment: _attachments, onlyImages: false, - buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120), + buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10), buttonColor: AppColor.black10, ), ], diff --git a/lib/modules/cm_module/views/forms/spare_part/spare_part_request.dart b/lib/modules/cm_module/views/forms/spare_part/spare_part_request.dart index 1821a20b..de312a41 100644 --- a/lib/modules/cm_module/views/forms/spare_part/spare_part_request.dart +++ b/lib/modules/cm_module/views/forms/spare_part/spare_part_request.dart @@ -296,7 +296,7 @@ class _SparePartRequestState extends State with TickerProvider AttachmentPicker( label: context.translation.attachQuotation, attachment: attachments, - buttonIcon: 'quotation_icon'.toSvgAsset(), + buttonIcon: 'quotation_icon'.toSvgAsset(color: AppColor.primary10), buttonColor: AppColor.primary10, ), ], diff --git a/lib/modules/cx_module/chat/helper/chat_file_picker.dart b/lib/modules/cx_module/chat/helper/chat_file_picker.dart index f080cd20..514e4a7c 100644 --- a/lib/modules/cx_module/chat/helper/chat_file_picker.dart +++ b/lib/modules/cx_module/chat/helper/chat_file_picker.dart @@ -27,13 +27,13 @@ class ChatFilePicker extends StatelessWidget { physics: const NeverScrollableScrollPhysics(), gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 1, crossAxisSpacing: 12, mainAxisSpacing: 12), children: [ - gridItem(Icons.camera_enhance_rounded, context.translation.pickFromCamera).onPress(() async { + gridItem(context, Icons.camera_enhance_rounded, context.translation.pickFromCamera).onPress(() async { await fromMediaPicker(context, ImageSource.camera); }), - gridItem(Icons.image_rounded, context.translation.pickFromGallery).onPress(() async { + gridItem(context, Icons.image_rounded, context.translation.pickFromGallery).onPress(() async { await fromMediaPicker(context, ImageSource.gallery); }), - gridItem(Icons.file_present_rounded, context.translation.pickFromFiles).onPress(() async { + gridItem(context, Icons.file_present_rounded, context.translation.pickFromFiles).onPress(() async { await fromFilePicker(context); }), ], @@ -81,23 +81,20 @@ class ChatFilePicker extends StatelessWidget { } } - Widget gridItem(IconData iconData, String title) { + Widget gridItem(BuildContext context, IconData iconData, String title) { return Container( padding: const EdgeInsets.all(12), decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(12), - border: Border.all(color: const Color(0xffF1F1F1), width: 1), + color: AppColor.background(context), + borderRadius: BorderRadius.circular(16), + border: Border.all(color: AppColor.borderColor(context), width: 2), ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Icon(iconData, color: const Color(0xff7D859A), size: 36), - Text( - title, - style: const TextStyle(fontSize: 12, fontWeight: FontWeight.w500), - ), + Icon(iconData, color: AppColor.icon2Color(context), size: 36), + title.bodyText2(context).custom(color: AppColor.labelTextStyleColor(context), fontSize: context.isTablet() ? 10.toScreenWidth : null), ], ), ); diff --git a/lib/modules/demo_module/create_demo_request_page.dart b/lib/modules/demo_module/create_demo_request_page.dart index b8cce18d..a921ed91 100644 --- a/lib/modules/demo_module/create_demo_request_page.dart +++ b/lib/modules/demo_module/create_demo_request_page.dart @@ -148,7 +148,7 @@ class _CreateDemoRequestPageState extends State with Tick enabled: demoDocumentLookup != null, documentType: demoDocumentLookup, showAsListView: true, - buttonIcon: 'image-plus'.toSvgAsset(color: (context.isDark ? AppColor.primary10 : AppColor.neutral120).withOpacity(demoDocumentLookup != null ? 1 : .4)), + buttonIcon: 'image-plus'.toSvgAsset(color: (AppColor.primary10).withOpacity(demoDocumentLookup != null ? 1 : .4)), onChange: (attachments) { _attachments = attachments; setState(() {}); diff --git a/lib/modules/demo_module/update_demo-request_view.dart b/lib/modules/demo_module/update_demo-request_view.dart index d7b1ffe9..02dae2d2 100644 --- a/lib/modules/demo_module/update_demo-request_view.dart +++ b/lib/modules/demo_module/update_demo-request_view.dart @@ -227,7 +227,7 @@ class _UpdateDemoRequestViewState extends State with Tick documentType: demoDocumentLookup, enabled: demoDocumentLookup != null, showAsListView: true, - buttonIcon: 'image-plus'.toSvgAsset(color: (context.isDark ? AppColor.primary10 : AppColor.neutral120).withOpacity(demoDocumentLookup != null ? 1 : .4)), + buttonIcon: 'image-plus'.toSvgAsset(color: (AppColor.primary10).withOpacity(demoDocumentLookup != null ? 1 : .4)), ), ], ).toShadowContainer(context, borderRadius: 20), diff --git a/lib/modules/incident_module/create_incident_request_page.dart b/lib/modules/incident_module/create_incident_request_page.dart index dc33c3e2..3085dc26 100644 --- a/lib/modules/incident_module/create_incident_request_page.dart +++ b/lib/modules/incident_module/create_incident_request_page.dart @@ -156,7 +156,7 @@ class _CreateIncidentRequestPageState extends State { buttonColor: AppColor.black10, onlyImages: false, showAsListView: true, - buttonIcon: 'image-plus'.toSvgAsset(color: context.isDark ? AppColor.primary10 : AppColor.neutral120), + buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10), onChange: (_attachments) { attachments = _attachments; setState(() {}); diff --git a/lib/modules/internal_audit_module/pages/equipment_internal_audit/update_equipment_internal_audit_page.dart b/lib/modules/internal_audit_module/pages/equipment_internal_audit/update_equipment_internal_audit_page.dart index fb317f1e..9c5be1d2 100644 --- a/lib/modules/internal_audit_module/pages/equipment_internal_audit/update_equipment_internal_audit_page.dart +++ b/lib/modules/internal_audit_module/pages/equipment_internal_audit/update_equipment_internal_audit_page.dart @@ -223,9 +223,7 @@ class _UpdateEquipmentInternalAuditPageState extends State(context, listen: false); - if ( formModel.startTime == null) { + if (formModel.startTime == null) { Fluttertoast.showToast(msg: "Working Hours Required"); return; } @@ -162,9 +162,7 @@ class _UpdateSystemInternalAuditPageState extends State with Tick attachment: attachments, onlyImages: false, showAsListView: true, - buttonIcon: 'image-plus'.toSvgAsset(color: context.isDark ? AppColor.primary10 : AppColor.neutral120), + buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10), onChange: (attachments) { attachments = attachments; setState(() {}); diff --git a/lib/modules/medical_gas_inspection/update_delivery_notes_page.dart b/lib/modules/medical_gas_inspection/update_delivery_notes_page.dart index 86cebf54..1a0dfae5 100644 --- a/lib/modules/medical_gas_inspection/update_delivery_notes_page.dart +++ b/lib/modules/medical_gas_inspection/update_delivery_notes_page.dart @@ -206,9 +206,7 @@ class _UpdateDeliveryNotesState extends State { buttonColor: AppColor.primary10, // showAsListView: true, onlyImages: false, - buttonIcon: 'attachment_icon'.toSvgAsset( - color: AppColor.primary10, - ), + buttonIcon: 'attachment_icon'.toSvgAsset(color: AppColor.primary10), ), 16.height, //should create a reusable widget. diff --git a/lib/modules/medical_gas_inspection/update_medical_gas_inspection_page.dart b/lib/modules/medical_gas_inspection/update_medical_gas_inspection_page.dart index 7175b7e1..b11a0a92 100644 --- a/lib/modules/medical_gas_inspection/update_medical_gas_inspection_page.dart +++ b/lib/modules/medical_gas_inspection/update_medical_gas_inspection_page.dart @@ -203,9 +203,7 @@ class _UpdateMedicalGasInspectionPageState extends State { attachment: ppmProvider.ppmPlanAttachments, buttonColor: AppColor.black10, onlyImages: false, - buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120), + buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10), ), ], ).toShadowContainer(context), diff --git a/lib/modules/tm_module/device_transfer/create_device_transfer_request.dart b/lib/modules/tm_module/device_transfer/create_device_transfer_request.dart index 6b9ed8aa..5c44d4c3 100644 --- a/lib/modules/tm_module/device_transfer/create_device_transfer_request.dart +++ b/lib/modules/tm_module/device_transfer/create_device_transfer_request.dart @@ -126,8 +126,8 @@ class _CreateDeviceTransferRequestState extends State { style: TextButton.styleFrom(padding: EdgeInsets.zero, tapTargetSize: MaterialTapTargetSize.shrinkWrap), child: Text( 'Clear Filters', - style: AppTextStyles.bodyText2.copyWith(color: AppColor.primary10), + style: AppTextStyles.bodyText2.copyWith(color: AppColor.red30), ), ).paddingOnly(start: 16, end: 16) ], diff --git a/lib/modules/tm_module/device_transfer/device_search_screen.dart b/lib/modules/tm_module/device_transfer/device_search_screen.dart index d9f99f8d..74cdeeb6 100644 --- a/lib/modules/tm_module/device_transfer/device_search_screen.dart +++ b/lib/modules/tm_module/device_transfer/device_search_screen.dart @@ -80,7 +80,7 @@ class _DeviceSearchScreenState extends State { style: TextButton.styleFrom(padding: EdgeInsets.zero, tapTargetSize: MaterialTapTargetSize.shrinkWrap), child: Text( 'Clear Filters', - style: AppTextStyles.bodyText2.copyWith(color: AppColor.primary10), + style: AppTextStyles.bodyText2.copyWith(color: AppColor.red30), ), ).paddingOnly(start: 16, end: 16), ], diff --git a/lib/modules/tm_module/device_transfer/search_device_page.dart b/lib/modules/tm_module/device_transfer/search_device_page.dart index cc76e370..be0eec14 100644 --- a/lib/modules/tm_module/device_transfer/search_device_page.dart +++ b/lib/modules/tm_module/device_transfer/search_device_page.dart @@ -8,6 +8,7 @@ import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; import 'package:test_sa/new_views/common_widgets/app_text_form_field.dart'; +import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; import 'package:test_sa/views/widgets/equipment/asset_item_listview.dart'; import 'package:test_sa/views/widgets/horizontal_list_widget.dart'; import 'package:test_sa/views/widgets/loaders/lazy_loading.dart'; @@ -67,27 +68,7 @@ class _SearchDevicePageState extends State { return Scaffold( resizeToAvoidBottomInset: false, - appBar: CustomAppBar( - title: context.translation.searchAsset, - - /// comment reset button because it isn't exist in new design - // actions: [ - // if (_showResetButton()) - // Row( - // crossAxisAlignment: CrossAxisAlignment.center, - // children: [ - // Text( - // context.translation.reset, - // style: AppTextStyles.bodyText2.copyWith(color: const Color(0xFF4A8DB7)), - // ).paddingAll(8).onPress(() { - // setState(() { - // _searchController.text = ""; - // }); - // }), - // ], - // ) - // ], - ), + appBar: DefaultAppBar(title: context.translation.searchAsset), body: Column( children: [ HorizontalListWidget( @@ -117,10 +98,10 @@ class _SearchDevicePageState extends State { _setValue(value); }, suffixIcon: IconButton( - icon: const Icon(Icons.search), + icon: Icon(Icons.search, color: AppColor.icon2Color(context)), splashColor: Colors.transparent, onPressed: _searchController.text.isNotEmpty ? _search : null, - color: AppColor.neutral20, + color: AppColor.icon2Color(context), ).paddingOnly(end: 0), ).paddingOnly(top: 16, start: 16, end: 16, bottom: 8), ), @@ -165,74 +146,73 @@ class _SearchDevicePageState extends State { Navigator.of(context).pop(device); } }, - selectButton: Text(title, style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context))), + selectButton: Text(title, style: AppTextStyles.bodyText.copyWith(color: AppColor.primary10)), ); }, ).expanded, if (widget.multiSelection && selectedAssets.isNotEmpty) FooterActionButton.footerContainer( - context: context, - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Expanded( - child: AppFilledButton( - label: "Clear", - buttonColor: AppColor.white60, - textColor: AppColor.black10, - loading: false, - onPressed: () async { - selectedAssets.clear(); - setState(() {}); - }, + context: context, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Expanded( + child: AppFilledButton( + label: "Clear", + buttonColor: AppColor.white60, + textColor: AppColor.black10, + loading: false, + onPressed: () async { + selectedAssets.clear(); + setState(() {}); + }, + ), ), - ), - 12.width, - Expanded( - child: AppFilledButton( - label: context.translation.select, - buttonColor: AppColor.primary10, - loading: false, - onPressed: () async { - Navigator.of(context).pop(); - List assets = _searchableList.where((asset) => selectedAssets.contains(asset.id)).toList(); - Navigator.of(context).pop(assets); - }, + 12.width, + Expanded( + child: AppFilledButton( + label: context.translation.select, + buttonColor: AppColor.primary10, + loading: false, + onPressed: () async { + Navigator.of(context).pop(); + List assets = _searchableList.where((asset) => selectedAssets.contains(asset.id)).toList(); + Navigator.of(context).pop(assets); + }, + ), ), - ), - ], - ) - ), - // Row( - // mainAxisSize: MainAxisSize.min, - // children: [ - // Expanded( - // child: AppFilledButton( - // label: "Clear", - // buttonColor: AppColor.white60, - // textColor: AppColor.black10, - // loading: false, - // onPressed: () async { - // selectedAssets.clear(); - // setState(() {}); - // }, - // ), - // ), - // 12.width, - // Expanded( - // child: AppFilledButton( - // label: context.translation.select, - // buttonColor: AppColor.primary10, - // loading: false, - // onPressed: () async { - // Navigator.of(context).pop(); - // List assets = _searchableList.where((asset) => selectedAssets.contains(asset.id)).toList(); - // Navigator.of(context).pop(assets); - // }, - // ), - // ), - // ], - // ).toShadowContainer(context), + ], + )), + // Row( + // mainAxisSize: MainAxisSize.min, + // children: [ + // Expanded( + // child: AppFilledButton( + // label: "Clear", + // buttonColor: AppColor.white60, + // textColor: AppColor.black10, + // loading: false, + // onPressed: () async { + // selectedAssets.clear(); + // setState(() {}); + // }, + // ), + // ), + // 12.width, + // Expanded( + // child: AppFilledButton( + // label: context.translation.select, + // buttonColor: AppColor.primary10, + // loading: false, + // onPressed: () async { + // Navigator.of(context).pop(); + // List assets = _searchableList.where((asset) => selectedAssets.contains(asset.id)).toList(); + // Navigator.of(context).pop(assets); + // }, + // ), + // ), + // ], + // ).toShadowContainer(context), ], ), ), diff --git a/lib/modules/tm_module/device_transfer/update_device_transfer.dart b/lib/modules/tm_module/device_transfer/update_device_transfer.dart index ec88bc59..902844c7 100644 --- a/lib/modules/tm_module/device_transfer/update_device_transfer.dart +++ b/lib/modules/tm_module/device_transfer/update_device_transfer.dart @@ -295,7 +295,7 @@ class _UpdateDeviceTransferState extends State { attachment: attachments, buttonColor: AppColor.black10, onlyImages: false, - buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120), + buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10), ), 8.height, ], diff --git a/lib/modules/tm_module/gas_refill/gas_refill_request_form.dart b/lib/modules/tm_module/gas_refill/gas_refill_request_form.dart index 8b6814c8..6e6e46d3 100644 --- a/lib/modules/tm_module/gas_refill/gas_refill_request_form.dart +++ b/lib/modules/tm_module/gas_refill/gas_refill_request_form.dart @@ -219,7 +219,7 @@ class _GasRefillRequestFormState extends State { attachment: attachments, buttonColor: AppColor.black10, onlyImages: false, - buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120), + buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10), ), ], ).toShadowContainer(context, padding: 10).paddingOnly(start: 16, end: 16, top: 16), diff --git a/lib/modules/tm_module/gas_refill/update_gas_refill_request.dart b/lib/modules/tm_module/gas_refill/update_gas_refill_request.dart index 643766ec..b254dd79 100644 --- a/lib/modules/tm_module/gas_refill/update_gas_refill_request.dart +++ b/lib/modules/tm_module/gas_refill/update_gas_refill_request.dart @@ -294,7 +294,7 @@ class _UpdateGasRefillRequestState extends State { attachment: _attachments, buttonColor: AppColor.black10, onlyImages: false, - buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120), + buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10), ), 8.height, ], diff --git a/lib/modules/tm_module/tasks/create_task_view.dart b/lib/modules/tm_module/tasks/create_task_view.dart index ef88a1af..fe088868 100644 --- a/lib/modules/tm_module/tasks/create_task_view.dart +++ b/lib/modules/tm_module/tasks/create_task_view.dart @@ -111,13 +111,13 @@ class _CreateTaskViewState extends State with TickerProviderStat _addTaskModel?.callComment = value; }, ), - 23.height, + 24.height, AttachmentPicker( label: context.translation.attachImage, attachment: attachments, buttonColor: AppColor.black10, onlyImages: false, - buttonIcon: 'image-plus'.toSvgAsset(color: context.isDark ? AppColor.primary10 : AppColor.neutral120), + buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10), //verify this if not required delete this .. onChange: (attachments) { attachments = attachments; diff --git a/lib/modules/tm_module/tasks/update_task_request_view.dart b/lib/modules/tm_module/tasks/update_task_request_view.dart index 141ac7c0..f7c94d60 100644 --- a/lib/modules/tm_module/tasks/update_task_request_view.dart +++ b/lib/modules/tm_module/tasks/update_task_request_view.dart @@ -193,7 +193,7 @@ class _UpdateTaskRequestState extends State { attachment: attachments, buttonColor: AppColor.black10, onlyImages: false, - buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120), + buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10), ), ], ).toShadowContainer(context), diff --git a/lib/modules/traf_module/update_traf_request_page.dart b/lib/modules/traf_module/update_traf_request_page.dart index 5567dd31..21297656 100644 --- a/lib/modules/traf_module/update_traf_request_page.dart +++ b/lib/modules/traf_module/update_traf_request_page.dart @@ -213,7 +213,7 @@ class _UpdateTrafRequestPageState extends State { attachment: attachments, buttonColor: AppColor.black10, onlyImages: false, - buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120), + buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10), onChange: (attachment) { attachments = attachment; }, diff --git a/lib/new_views/common_widgets/app_dashed_button.dart b/lib/new_views/common_widgets/app_dashed_button.dart index 2e733ef9..e1c94621 100644 --- a/lib/new_views/common_widgets/app_dashed_button.dart +++ b/lib/new_views/common_widgets/app_dashed_button.dart @@ -28,7 +28,7 @@ class AppDashedButton extends StatelessWidget { child: DottedBorder( strokeWidth: 1, padding: padding ?? EdgeInsets.symmetric(vertical: 16.toScreenHeight, horizontal: 16.toScreenWidth), - color: context.isDark ? AppColor.primary40 : buttonColor ?? AppColor.black20, + color: AppColor.primary10, dashPattern: const [4, 3], radius: const Radius.circular(10), borderType: BorderType.RRect, @@ -38,10 +38,10 @@ class AppDashedButton extends StatelessWidget { children: [ icon!, 7.width, - title.heading6(context).custom(color: context.isDark ? AppColor.primary40 : buttonColor ?? AppColor.black10).center, + title.heading6(context).custom(color: AppColor.primary10).center, ], ) - : title.heading6(context).custom(color: context.isDark ? AppColor.primary40 : buttonColor ?? AppColor.primary10).center, + : title.heading6(context).custom(color: AppColor.primary10).center, ), ).onPress(onPressed); } diff --git a/lib/new_views/common_widgets/app_filled_button.dart b/lib/new_views/common_widgets/app_filled_button.dart index 905516fc..9756872b 100644 --- a/lib/new_views/common_widgets/app_filled_button.dart +++ b/lib/new_views/common_widgets/app_filled_button.dart @@ -47,7 +47,7 @@ class AppFilledButton extends StatelessWidget { alignment: Alignment.center, decoration: BoxDecoration( borderRadius: BorderRadius.circular(10), - color: disableButton ?context.isDark ?AppColor.neutral20 :AppColor.neutral140 : (buttonColor ?? AppColor.primary10), + color: disableButton ? context.isDark ?AppColor.neutral20 :AppColor.neutral140 : (buttonColor ?? AppColor.primary10), border: showBorder ? Border.all(color: textColor ?? AppColor.background(context)) : null, ), child: loading diff --git a/lib/new_views/common_widgets/app_text_form_field.dart b/lib/new_views/common_widgets/app_text_form_field.dart index 360272ae..5b485df7 100644 --- a/lib/new_views/common_widgets/app_text_form_field.dart +++ b/lib/new_views/common_widgets/app_text_form_field.dart @@ -46,6 +46,7 @@ class AppTextFormField extends StatefulWidget { final bool showSpeechToText; final Color? enableColor; final bool makeMultiLinesNull; + final bool isBackgroundTransparent; const AppTextFormField({ Key? key, @@ -81,6 +82,7 @@ class AppTextFormField extends StatefulWidget { this.alignLabelWithHint = false, // Provide default value this.makeMultiLinesNull = false, this.onTap, + this.isBackgroundTransparent = false, this.enableColor, }) : super(key: key); @@ -209,12 +211,14 @@ class _AppTextFormFieldState extends State { contentPadding: widget.contentPadding ?? EdgeInsets.symmetric(vertical: 12.toScreenHeight, horizontal: 16.toScreenWidth), constraints: const BoxConstraints(), suffixIconConstraints: const BoxConstraints(minWidth: 0), - filled: true, - fillColor: (context.isDark && !widget.enable - ? AppColor.neutral50 - : !widget.enable - ? (widget.enableColor ?? AppColor.disableDark) - : AppColor.dropDownBackground(context)), + filled: !widget.isBackgroundTransparent, + fillColor: widget.isBackgroundTransparent + ? null + : (context.isDark && !widget.enable + ? AppColor.neutral50 + : !widget.enable + ? (widget.enableColor ?? AppColor.disableDark) + : AppColor.dropDownBackground(context)), errorStyle: AppTextStyle.tiny.copyWith(color: context.isDark ? AppColor.red50 : AppColor.red30), // floatingLabelStyle: widget.floatingLabelStyle ?? AppTextStyle.body1.copyWith(fontWeight: FontWeight.w500, color: context.isDark ? AppColor.white10 : AppColor.neutral20), diff --git a/lib/new_views/pages/land_page/create_request_type_bottom_sheet.dart b/lib/new_views/pages/land_page/create_request_type_bottom_sheet.dart index 7c1bdb87..0f6a103f 100644 --- a/lib/new_views/pages/land_page/create_request_type_bottom_sheet.dart +++ b/lib/new_views/pages/land_page/create_request_type_bottom_sheet.dart @@ -142,7 +142,7 @@ class CreateRequestModel { // }); if (context.settingProvider.isUserFlowMedical) { - list.add(CreateRequestModel('Loan Equipment Request'.addTranslation, "add_icon", CreateLoanRequestPage.id)); + list.add(CreateRequestModel('Loan Equipment Request'.addTranslation, "wo/loan_wo", CreateLoanRequestPage.id)); // list.add(CreateRequestModel('Demo Request'.addTranslation, "add_icon", CreateDemoRequestPage.id)); } } diff --git a/lib/new_views/pages/land_page/my_request/all_requests_filter_page.dart b/lib/new_views/pages/land_page/my_request/all_requests_filter_page.dart index 61e4e63a..1fbba0ee 100644 --- a/lib/new_views/pages/land_page/my_request/all_requests_filter_page.dart +++ b/lib/new_views/pages/land_page/my_request/all_requests_filter_page.dart @@ -154,7 +154,7 @@ class _AllRequestsFilterPageState extends State { style: TextButton.styleFrom(padding: EdgeInsets.zero, tapTargetSize: MaterialTapTargetSize.shrinkWrap), child: Text( 'Clear Filters', - style: AppTextStyles.bodyText2.copyWith(color: AppColor.primary10), + style: AppTextStyles.bodyText2.copyWith(color: AppColor.red30), ), ).paddingOnly(start: 16, end: 16) ], diff --git a/lib/new_views/pages/land_page/my_request/my_requests_page.dart b/lib/new_views/pages/land_page/my_request/my_requests_page.dart index 596a3103..355335cb 100644 --- a/lib/new_views/pages/land_page/my_request/my_requests_page.dart +++ b/lib/new_views/pages/land_page/my_request/my_requests_page.dart @@ -300,7 +300,7 @@ class _MyRequestsPageState extends State { style: TextButton.styleFrom(padding: EdgeInsets.zero, tapTargetSize: MaterialTapTargetSize.shrinkWrap), child: Text( 'Clear Filters', - style: AppTextStyles.tinyFont.copyWith(color: AppColor.primary10, fontWeight: FontWeight.w500), + style: AppTextStyles.tinyFont.copyWith(color: AppColor.red30), ), ), ], diff --git a/lib/new_views/pages/settings_page.dart b/lib/new_views/pages/settings_page.dart index 790785b3..8fb51e3e 100644 --- a/lib/new_views/pages/settings_page.dart +++ b/lib/new_views/pages/settings_page.dart @@ -108,9 +108,10 @@ class _SettingsPageState extends State { context.translation.arabic.heading5(context).custom(color: AppColor.textStyleColor(context)), AdvancedSwitch( controller: langController, + initialValue: langController!.value, activeColor: AppColor.green50.withOpacity(0.5), inactiveColor: AppColor.neutral10, - thumb: CircleAvatar(backgroundColor: _settingProvider!.language == "ar" ? AppColor.green50 : AppColor.neutral20), + thumb: CircleAvatar(backgroundColor: langController!.value ? AppColor.green50 : AppColor.neutral20), borderRadius: const BorderRadius.all(Radius.circular(30)), width: 42.toScreenWidth, height: 24.toScreenHeight, @@ -130,9 +131,10 @@ class _SettingsPageState extends State { context.translation.lightTheme.heading5(context).custom(color: AppColor.textStyleColor(context)), AdvancedSwitch( controller: themeController, + initialValue: themeController!.value, activeColor: AppColor.green50.withOpacity(0.5), inactiveColor: AppColor.neutral10, - thumb: CircleAvatar(backgroundColor: _settingProvider!.theme == "light" ? AppColor.green50 : AppColor.neutral20), + thumb: CircleAvatar(backgroundColor: themeController!.value ? AppColor.green50 : AppColor.neutral20), borderRadius: const BorderRadius.all(Radius.circular(30)), width: 42.toScreenWidth, height: 24.toScreenHeight, diff --git a/lib/new_views/swipe_module/dialoge/single_btn_dialog.dart b/lib/new_views/swipe_module/dialoge/single_btn_dialog.dart index 9561f318..ceee4a06 100644 --- a/lib/new_views/swipe_module/dialoge/single_btn_dialog.dart +++ b/lib/new_views/swipe_module/dialoge/single_btn_dialog.dart @@ -16,7 +16,7 @@ class SingleBtnDialog extends StatelessWidget { @override Widget build(BuildContext context) { return Dialog( - backgroundColor: Colors.white, + backgroundColor: AppColor.background(context), shape: const RoundedRectangleBorder(), insetPadding: const EdgeInsets.only(left: 21, right: 21), child: Padding( @@ -27,9 +27,9 @@ class SingleBtnDialog extends StatelessWidget { children: [ Text( title ?? "Confirm", - style: const TextStyle(fontSize: 24, fontWeight: FontWeight.w600, color: Colors.black87, height: 35 / 24, letterSpacing: -0.96), + style: TextStyle(fontSize: 24, fontWeight: FontWeight.w600, color: AppColor.headingTextColor(context), height: 35 / 24, letterSpacing: -0.96), ).paddingOnly(top: 16), - message != null ? message!.heading5(context).custom(color: AppColor.neutral70) : const SizedBox(), + message != null ? message!.heading5(context).custom(color: AppColor.headingTextColor(context)) : const SizedBox(), 28.height, AppFilledButton( label: okTitle ?? "OK", diff --git a/lib/views/pages/user/requests/create_service_request_page.dart b/lib/views/pages/user/requests/create_service_request_page.dart deleted file mode 100644 index 3c94b7de..00000000 --- a/lib/views/pages/user/requests/create_service_request_page.dart +++ /dev/null @@ -1,407 +0,0 @@ -// import 'dart:convert'; -// import 'dart:io'; -// -// import 'package:flutter/cupertino.dart'; -// import 'package:flutter/material.dart'; -// import 'package:provider/provider.dart'; -// import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; -// import 'package:test_sa/controllers/providers/api/user_provider.dart'; -// import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; -// import 'package:test_sa/extensions/context_extension.dart'; -// import 'package:test_sa/extensions/int_extensions.dart'; -// import 'package:test_sa/extensions/widget_extensions.dart'; -// import 'package:test_sa/models/generic_attachment_model.dart'; -// import 'package:test_sa/models/service_request/pending_service_request_model.dart'; -// import 'package:test_sa/models/service_request/service_request.dart'; -// import 'package:test_sa/modules/cm_module/utilities/cm_request_utils.dart'; -// import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; -// import 'package:test_sa/providers/service_request_providers/equipment_status_provider.dart'; -// import 'package:test_sa/providers/service_request_providers/requested_through_provider.dart'; -// import 'package:test_sa/views/pages/user/requests/pending_requests_screen.dart'; -// import 'package:test_sa/views/widgets/bottom_sheets/pending_request_bottom_sheet.dart'; -// import 'package:test_sa/views/widgets/equipment/asset_picker.dart'; -// import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; -// import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -// import 'package:test_sa/views/widgets/sound/TextSpeechRecordWidget.dart'; -// -// import '../../../../new_views/app_style/app_color.dart'; -// import '../../../../new_views/common_widgets/default_app_bar.dart'; -// import '../../../../providers/service_request_providers/priority_provider.dart'; -// import '../../../../providers/service_request_providers/type_of_request_provider.dart'; -// -// class CreateServiceRequestPage extends StatefulWidget { -// static const String id = "/create-request"; -// final ServiceRequest? serviceRequest; -// -// const CreateServiceRequestPage({this.serviceRequest, Key? key}) : super(key: key); -// -// @override -// CreateServiceRequestPageState createState() => CreateServiceRequestPageState(); -// } -// -// class CreateServiceRequestPageState extends State { -// late TextEditingController _commentController; -// -// late double _height; -// late UserProvider _userProvider; -// late SettingProvider _settingProvider; -// late ServiceRequestsProvider _serviceRequestsProvider; -// late ServiceRequest _serviceRequest; -// final List attachments = []; -// final bool _isLoading = false; -// bool _showDatePicker = false; -// final GlobalKey _formKey = GlobalKey(); -// final GlobalKey _scaffoldKey = GlobalKey(); -// DateTime? _dateTime; -// -// bool isFirstActionSubmitted = false; -// -// @override -// void initState() { -// _commentController = TextEditingController(); -// if (widget.serviceRequest != null) { -// _serviceRequest = widget.serviceRequest!; -// attachments.addAll(_serviceRequest.devicePhotos!.map((e) => GenericAttachmentModel(name: e)).toList()); -// _showDatePicker = _serviceRequest.firstAction != null && _serviceRequest.firstAction?.name == "Need a visit"; -// if (_showDatePicker && _serviceRequest.visitDate != null) { -// _dateTime = DateTime.tryParse(_serviceRequest.visitDate!); -// } -// } else { -// _serviceRequest = ServiceRequest(); -// } -// isFirstActionSubmitted = _serviceRequest.firstAction != null; -// super.initState(); -// } -// -// // -// // getServiceRequestById(String id) async { -// // try { -// // ServiceRequest request = await _serviceRequestsProvider.getServiceRequestObjectById(requestId: id) ?? ""; -// // _serviceRequest = request; -// // _device = _serviceRequest.device; -// // attachments.addAll(_serviceRequest.devicePhotos.map((e) { -// // return File(e); -// // }).toList()); -// // _showDatePicker = _serviceRequest.firstAction != null && _serviceRequest.firstAction.name == "Need a visit"; -// // if (_showDatePicker && _serviceRequest.visitDate != null) { -// // _dateTime = DateTime.tryParse(_serviceRequest.visitDate); -// // } -// // _isLoading = false; -// // } catch (ex) { -// // _isLoading = false; -// // } -// // setState(() {}); -// // } -// -// @override -// void dispose() { -// _commentController.dispose(); -// super.dispose(); -// } -// -// bool _isLocalUrl(String url) { -// if (url.isEmpty != false) return false; -// return url.startsWith("/") || url.startsWith("file://") || url.substring(1).startsWith(':\\'); -// } -// -// // bool priority; -// -// void getData() { -// Provider.of(context).getDate(); -// Provider.of(context).getDate(); -// Provider.of(context).getDate(); -// Provider.of(context).getDate(); -// } -// -// PendingAssetServiceRequest? pendingAssetServiceRequest; -// -// @override -// Widget build(BuildContext context) { -// _height = MediaQuery.of(context).size.height; -// _userProvider = Provider.of(context); -// -// _serviceRequestsProvider = Provider.of(context); -// -// return Scaffold( -// key: _scaffoldKey, -// appBar: DefaultAppBar(title: context.translation.newServiceRequest), -// body: SafeArea( -// child: LoadingManager( -// isLoading: _isLoading, -// isFailedLoading: false, -// stateCode: 200, -// onRefresh: () async {}, -// child: Form( -// key: _formKey, -// child: Column( -// children: [ -// SingleChildScrollView( -// child: Column( -// crossAxisAlignment: CrossAxisAlignment.start, -// children: [ -// Column( -// crossAxisAlignment: CrossAxisAlignment.start, -// mainAxisSize: MainAxisSize.min, -// children: [ -// AssetPicker( -// device: _serviceRequest.device, -// showLoading: checkPendingRequest, -// onPick: (asset) async { -// pendingAssetServiceRequest = null; -// _serviceRequest.device = asset; -// await checkAssetForPendingServiceRequest(asset.id!.toInt()); -// -// if (pendingAssetServiceRequest != null && pendingAssetServiceRequest!.details!.isNotEmpty) { -// showPendingRequestBottomSheet(); -// } -// }, -// ), -// if (pendingAssetServiceRequest != null && pendingAssetServiceRequest!.details!.isNotEmpty) ...[ -// 8.height, -// Row( -// children: [ -// const Icon(Icons.warning, color: Color(0xffEE404C), size: 14), -// 8.width, -// Text( -// "This asset already have ${pendingAssetServiceRequest!.details!.length} request pending", -// style: const TextStyle(fontSize: 12, fontWeight: FontWeight.w500, color: Color(0xff7D859A), decoration: TextDecoration.underline), -// ).expanded, -// ], -// ).onPress(() { -// showPendingRequests(); -// }), -// ], -// 16.height, -// Row( -// mainAxisAlignment: MainAxisAlignment.spaceBetween, -// children: [ -// Text(context.translation.priority, style: Theme.of(context).textTheme.bodyLarge), -// Consumer(builder: (cxt, snapshot, _) { -// _serviceRequest.priority ??= snapshot.items.firstWhere((element) => element.value == 0, orElse: null); -// -// return Transform.scale( -// scale: 0.8, -// child: CupertinoSwitch( -// thumbColor: _serviceRequest.priority?.value != 0 ? const Color(0xffF63939) : Colors.blueGrey.withOpacity(.5), -// activeColor: AppColor.blueStatus(context).withOpacity(.25), -// value: _serviceRequest.priority?.value != 0, -// onChanged: (state) { -// if (state) { -// _serviceRequest.priority = snapshot.items.firstWhere((element) => element.value == 1, orElse: null); -// } else { -// _serviceRequest.priority = snapshot.items.firstWhere((element) => element.value == 0, orElse: null); -// } -// setState(() {}); -// }).toShimmer(isShow: snapshot.loading,context: context), -// ); -// }), -// ], -// ), -// 16.height, -// Consumer(builder: (cxt, snapshot, _) { -// try { -// _serviceRequest.defectType ??= snapshot.items.first; -// } catch (ex) { -// print("snapshot.items:${snapshot.items.length}"); -// } -// -// return Column( -// crossAxisAlignment: CrossAxisAlignment.start, -// mainAxisSize: MainAxisSize.min, -// children: [ -// Text(context.translation.equipmentStatus, style: Theme.of(context).textTheme.bodyLarge), -// 8.height, -// Wrap( -// runSpacing: 8, -// spacing: 8, -// children: [ -// for (var element in snapshot.items) -// Row( -// mainAxisSize: MainAxisSize.min, -// children: [ -// SizedBox( -// width: 24, -// height: 24, -// child: Radio( -// value: element, -// activeColor: Colors.red, -// fillColor: WidgetStateColor.resolveWith((states) { -// if (states.contains(WidgetState.selected)) return const Color(0xff3DA5E5); -// return const Color(0xffE0E0E0); -// }), -// groupValue: _serviceRequest.defectType, -// onChanged: (state) { -// setState(() { -// _serviceRequest.defectType = element; -// }); -// }), -// ), -// 8.width, -// Text(element.name!, style: Theme.of(context).textTheme.bodySmall), -// ], -// ) -// ], -// ).toShimmer(isShow: snapshot.loading,context: context), -// ], -// ); -// }), -// 16.height, -// AttachmentPicker(label: context.translation.attachImage, attachment: attachments, showAsGrid: true), -// ], -// ).toShadowContainer(context), -// -// // SingleItemDropDownMenu( -// // context: context, -// // title: context.translation.priority, -// // initialValue: _serviceRequest?.priority, -// // onSelect: (value) { -// // _serviceRequest.priority = value; -// // }, -// // ), -// // 8.height, -// // SingleItemDropDownMenu( -// // context: context, -// // title: context.translation.equipmentStatus, -// // initialValue: _serviceRequest?.defectType, -// // onSelect: (value) { -// // _serviceRequest.defectType = value; -// // }, -// // ), -// -// // Consumer(builder: (context, snapshot, _) { -// // return SingleItemDropDownMenu( -// // context: context, -// // enabled: false, -// // title: context.translation.source, -// // initialValue: snapshot.items?.firstWhere((element) => element.value == 3, orElse: null), -// // ); -// // }), -// // 8.height, -// // Consumer(builder: (context, snapshot, _) { -// // return SingleItemDropDownMenu( -// // context: context, -// // title: context.translation.requestType, -// // enabled: false, -// // initialValue: snapshot.items?.firstWhere((element) => element.value == 1, orElse: null), -// // // onSelect: (value) { -// // // _serviceRequest.type = value; -// // // }, -// // ); -// // }), -// -// // Align( -// // alignment: AlignmentDirectional.centerStart, -// // child: context.translation.callComments.heading5(context).custom(color: AppColor.textStyleColor(context)), -// // ), -// 8.height, -// // SpeechToTextButton( -// // controller: _commentController, -// // ), -// // 8.height, -// // AppTextFormField( -// // controller: _commentController, -// // labelText: context.translation.problemDesc, -// // suffixIcon: "warning".toSvgAsset(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20, width: 24).paddingOnly(end: 16), -// // initialValue: _serviceRequest.callComments, -// // onSaved: (text) { -// // _serviceRequest.callComments = text; -// // }, -// // ), -// // 8.height, -// // RecordSound( -// // onRecord: (audio) { -// // _serviceRequest.audio = audio; -// // }, -// // enabled: widget.serviceRequest == null ? true : false, -// // ), -// 8.height, -// TextSpeechRecordWidget( -// initialMessage: _serviceRequest.callComments!, -// onMessageChange: (message) { -// _serviceRequest.callComments = message; -// }, -// onRecord: (audio) { -// _serviceRequest.audio = audio; -// }, -// enabled: widget.serviceRequest == null ? true : false, -// ), -// 16.height, -// ], -// ), -// ).expanded, -// AppFilledButton( -// onPressed: checkPendingRequest ? null : _submit, -// loading: checkPendingRequest, -// label: (pendingAssetServiceRequest != null && (pendingAssetServiceRequest!.details?.isNotEmpty ?? false)) ? "Submit Duplicate Request" : "Submit New Request", -// ), -// ], -// ), -// ).paddingOnly(start: 16, end: 16, bottom: 24, top: 16), -// ), -// ), -// ); -// } -// -// bool checkPendingRequest = false; -// -// void showPendingRequests() { -// Navigator.of(context).push(MaterialPageRoute(builder: (_) => PendingServiceRequestScreen(pendingAssetServiceRequest!))); -// } -// -// void showPendingRequestBottomSheet() async { -// bool view = (await showModalBottomSheet( -// context: context, -// isDismissible: false, -// shape: const RoundedRectangleBorder( -// borderRadius: BorderRadius.vertical( -// top: Radius.circular(20), -// ), -// ), -// clipBehavior: Clip.antiAliasWithSaveLayer, -// builder: (BuildContext context) => PendingRequestBottomSheet(pendingAssetServiceRequest!, _serviceRequest.device!), -// )) as bool; -// if (view) { -// showPendingRequests(); -// } -// } -// -// Future checkAssetForPendingServiceRequest(int assetId) async { -// checkPendingRequest = true; -// setState(() {}); -// -// pendingAssetServiceRequest = await _serviceRequestsProvider.checkAssetPendingRequest(assetId); -// await Future.delayed(const Duration(milliseconds: 250)); -// -// checkPendingRequest = false; -// setState(() {}); -// } -// -// Future _submit() async { -// _serviceRequest.requestedThrough = Provider.of(context, listen: false).items.firstWhere((element) => element.value == 3, orElse: null); -// _serviceRequest.type = Provider.of(context, listen: false).items.firstWhere((element) => element.value == 1, orElse: null); -// -// if (_formKey.currentState!.validate() && await _serviceRequest.validateNewRequest(context)) { -// _formKey.currentState!.save(); -// -// // bool canSubmitRequest = await checkAssetForPendingServiceRequest(_serviceRequest.device.id); -// // if (!canSubmitRequest) { -// // return; -// // } -// -// -// _serviceRequest.devicePhotos = attachments.map((item) => ServiceRequestUtils.isLocalUrl(item.name??'') ? "${item.name?.split("/").last}|${base64Encode(File(item.name??'').readAsBytesSync())}" : item.name??'').toList(); -// if (_serviceRequest.audio != null) { -// if (_isLocalUrl(_serviceRequest.audio!)) { -// final File file = File(_serviceRequest.audio!); -// _serviceRequest.audio = "${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}"; -// } -// } -// await _serviceRequestsProvider.createRequest( -// context: context, -// user: _userProvider.user!, -// host: _settingProvider.host!, -// serviceRequest: _serviceRequest, -// ); -// } -// } -// } diff --git a/lib/views/widgets/bottom_sheets/asset_detail_bottom_sheet.dart b/lib/views/widgets/bottom_sheets/asset_detail_bottom_sheet.dart index fd203840..b255ab52 100644 --- a/lib/views/widgets/bottom_sheets/asset_detail_bottom_sheet.dart +++ b/lib/views/widgets/bottom_sheets/asset_detail_bottom_sheet.dart @@ -6,6 +6,8 @@ import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/device/asset.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; +import 'package:test_sa/views/widgets/item_views/info_header_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_text_widget.dart'; class AssetDetailBottomSheet extends StatelessWidget { Asset? asset; @@ -16,14 +18,14 @@ class AssetDetailBottomSheet extends StatelessWidget { Widget build(BuildContext context) { return Padding( padding: EdgeInsets.only( - bottom: MediaQuery.of(context).viewInsets.bottom + - MediaQuery.of(context).padding.bottom, + bottom: MediaQuery.of(context).viewInsets.bottom + MediaQuery.of(context).padding.bottom, ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - (asset?.modelDefinition?.assetName?.cleanupWhitespace.capitalizeFirstOfEach ?? "-").heading5(context).custom(color: AppColor.textStyleColor(context)), + // (asset?.modelDefinition?.assetName?.cleanupWhitespace.capitalizeFirstOfEach ?? "-").heading5(context).custom(color: AppColor.textStyleColor(context)), + InfoHeader16Widget(asset?.modelDefinition?.assetName?.cleanupWhitespace.capitalizeFirstOfEach ?? "-"), 16.height, AspectRatio( aspectRatio: 358 / 136, @@ -52,33 +54,70 @@ class AssetDetailBottomSheet extends StatelessWidget { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "${context.translation.assetNo}: ${asset!.assetNumber}".bodyText(context), - "${context.translation.modelName}: ${asset!.modelDefinition?.modelName}".bodyText(context), - "${context.translation.supplier}: ${asset!.supplier?.suppliername?.cleanupWhitespace.capitalizeFirstOfEach ?? "-"}".bodyText(context), - "${context.translation.manufacture}: ${asset!.modelDefinition?.manufacturerName?.cleanupWhitespace.capitalizeFirstOfEach}".bodyText(context), - //"${context.translation.location}: ${assetModel.site.custName?.cleanupWhitespace?.capitalizeFirstOfEach}".bodyText(context), + InfoTextWidget( + label: context.translation.assetNo, + value: asset!.assetNumber, + showEmptyValue: true, + ), + InfoTextWidget( + label: context.translation.modelName, + value: asset!.modelDefinition?.modelName, + showEmptyValue: true, + ), + InfoTextWidget( + label: context.translation.supplier, + value: asset!.supplier?.suppliername?.cleanupWhitespace.capitalizeFirstOfEach, + showEmptyValue: true, + ), + InfoTextWidget( + label: context.translation.manufacture, + value: asset!.modelDefinition?.manufacturerName?.cleanupWhitespace.capitalizeFirstOfEach, + showEmptyValue: true, + ), ], ).expanded, 8.width, Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "${context.translation.snNo}: ${asset!.assetSerialNo}".bodyText(context), - "${context.translation.site}: ${asset?.site?.custName?.cleanupWhitespace.capitalizeFirstOfEach ?? "-"}".bodyText(context), - "${context.translation.building}: ${asset?.building?.name?.cleanupWhitespace.capitalizeFirstOfEach ?? "-"}".bodyText(context), - "${context.translation.floor}: ${asset?.floor?.name?.cleanupWhitespace.capitalizeFirstOfEach ?? "-"}".bodyText(context), - "${context.translation.md}: ${asset?.department?.departmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "-"}".bodyText(context), - "${context.translation.room}: ${asset?.room?.name ?? "-"}".bodyText(context), + InfoTextWidget( + label: context.translation.snNo, + value: asset!.assetSerialNo, + showEmptyValue: true, + ), + InfoTextWidget( + label: context.translation.site, + value: asset?.site?.custName?.cleanupWhitespace.capitalizeFirstOfEach, + showEmptyValue: true, + ), + InfoTextWidget( + label: context.translation.building, + value: asset?.building?.name?.cleanupWhitespace.capitalizeFirstOfEach, + showEmptyValue: true, + ), + InfoTextWidget( + label: context.translation.floor, + value: asset?.floor?.name?.cleanupWhitespace.capitalizeFirstOfEach, + showEmptyValue: true, + ), + InfoTextWidget( + label: context.translation.md, + value: asset?.department?.departmentName?.cleanupWhitespace.capitalizeFirstOfEach, + showEmptyValue: true, + ), + InfoTextWidget( + label: context.translation.room, + value: asset?.room?.name, + showEmptyValue: true, + ), ], ).expanded, ], ), 8.height, if ((asset?.modelDefinition?.assetDescription ?? "").isNotEmpty) ...[ - 8.height, - const Divider(color: AppColor.neutral30, height: 1, thickness: 1), - 8.height, - asset!.modelDefinition!.assetDescription!.bodyText(context), + const Divider().defaultStyle(context), + InfoTextWidget(label: asset!.modelDefinition!.assetDescription!, isMsg: true, showEmptyValue: true), ] ], ) diff --git a/lib/views/widgets/equipment/asset_detail_page.dart b/lib/views/widgets/equipment/asset_detail_page.dart index 6db652dd..44b53ef7 100644 --- a/lib/views/widgets/equipment/asset_detail_page.dart +++ b/lib/views/widgets/equipment/asset_detail_page.dart @@ -9,6 +9,8 @@ import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/device/asset_by_id_model.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; +import 'package:test_sa/views/widgets/item_views/info_header_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_text_widget.dart'; import 'package:test_sa/views/widgets/loaders/app_loading.dart'; import 'package:test_sa/views/widgets/loaders/failed_loading.dart'; @@ -76,7 +78,7 @@ class _AssetDetailPageState extends State { decoration: ShapeDecoration( color: AppColor.neutral30, shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10), + borderRadius: BorderRadius.circular(16), ), image: DecorationImage( fit: BoxFit.cover, @@ -96,7 +98,7 @@ class _AssetDetailPageState extends State { backgroundColor: AppColor.getRequestStatusColorByName(context, assetModel.commissioningStatus!.name!), ), if (assetModel.commissioningStatus != null) 8.height, - (assetModel.modelDefinition?.assetName?.cleanupWhitespace.capitalizeFirstOfEach ?? "-").heading5(context).custom(color: AppColor.textStyleColor(context)), + InfoHeader16Widget(assetModel.modelDefinition?.assetName?.cleanupWhitespace.capitalizeFirstOfEach ?? "-"), 8.height, Row( crossAxisAlignment: CrossAxisAlignment.start, @@ -104,11 +106,10 @@ class _AssetDetailPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "${context.translation.assetNo}: ${assetModel.multiAssets!.first.assetNumber}".bodyText(context), - "${context.translation.modelName}: ${assetModel.modelDefinition!.modelName}".bodyText(context), - "${context.translation.supplier}: ${assetModel.supplier?.suppliername ?? "-"}".bodyText(context), - "${context.translation.manufacture}: ${assetModel.modelDefinition!.manufacturerName}".bodyText(context), - //"${context.translation.location}: ${assetModel.site.custName?.cleanupWhitespace?.capitalizeFirstOfEach}".bodyText(context), + InfoTextWidget(label: context.translation.assetNo, value: assetModel.multiAssets!.first.assetNumber, showEmptyValue: true), + InfoTextWidget(label: context.translation.modelName, value: assetModel.modelDefinition!.modelName, showEmptyValue: true), + InfoTextWidget(label: context.translation.supplier, value: assetModel.supplier?.suppliername, showEmptyValue: true), + InfoTextWidget(label: context.translation.manufacture, value: assetModel.modelDefinition!.manufacturerName, showEmptyValue: true), ], ).expanded, 8.width, @@ -117,12 +118,12 @@ class _AssetDetailPageState extends State { children: [ /// TODO: theres no [ORACLE CODE] available to preview // "${context.translation.oracleCode}: ${"-"}".bodyText(context), - "${context.translation.snNo}: ${assetModel.multiAssets!.first.assetSerialNo}".bodyText(context), - "${context.translation.site}: ${assetModel.site?.custName?.cleanupWhitespace.capitalizeFirstOfEach ?? "-"}".bodyText(context), - "${context.translation.building}: ${assetModel.building?.name?.cleanupWhitespace.capitalizeFirstOfEach ?? "-"}".bodyText(context), - "${context.translation.floor}: ${assetModel.floor?.name?.cleanupWhitespace.capitalizeFirstOfEach ?? "-"}".bodyText(context), - "${context.translation.md}: ${assetModel.department?.departmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "-"}".bodyText(context), - "${context.translation.room}: ${assetModel.room?.name?.cleanupWhitespace.capitalizeFirstOfEach ?? "-"}".bodyText(context), + InfoTextWidget(label: context.translation.snNo, value: assetModel.multiAssets!.first.assetSerialNo, showEmptyValue: true), + InfoTextWidget(label: context.translation.site, value: assetModel.site?.custName?.cleanupWhitespace.capitalizeFirstOfEach, showEmptyValue: true), + InfoTextWidget(label: context.translation.building, value: assetModel.building?.name?.cleanupWhitespace.capitalizeFirstOfEach, showEmptyValue: true), + InfoTextWidget(label: context.translation.floor, value: assetModel.floor?.name?.cleanupWhitespace.capitalizeFirstOfEach, showEmptyValue: true), + InfoTextWidget(label: context.translation.md, value: assetModel.department?.departmentName?.cleanupWhitespace.capitalizeFirstOfEach, showEmptyValue: true), + InfoTextWidget(label: context.translation.room, value: assetModel.room?.name?.cleanupWhitespace.capitalizeFirstOfEach, showEmptyValue: true), ], ).expanded, ], @@ -130,14 +131,13 @@ class _AssetDetailPageState extends State { 8.height, const Divider(color: AppColor.neutral30, height: 1, thickness: 1), 8.height, - "${context.translation.installationDate}: ${assetModel.installationDate?.toAssetDetailsFormat ?? "-"}".bodyText(context), - "${context.translation.nextPmDate}: ${assetModel.nextPMDate?.toAssetDetailsFormat ?? "-"}".bodyText(context), - "${context.translation.lastPmDate}: ${assetModel.lastPMDate?.toAssetDetailsFormat ?? "-"}".bodyText(context), + InfoTextWidget(label: context.translation.installationDate, value: assetModel.installationDate?.toAssetDetailsFormat, showEmptyValue: true), + InfoTextWidget(label: context.translation.nextPmDate, value: assetModel.nextPMDate?.toAssetDetailsFormat, showEmptyValue: true), + InfoTextWidget(label: context.translation.lastPmDate, value: assetModel.lastPMDate?.toAssetDetailsFormat, showEmptyValue: true), if ((assetModel.modelDefinition?.assetDescription ?? "").isNotEmpty) ...[ 8.height, - const Divider(color: AppColor.neutral30, height: 1, thickness: 1), - 8.height, - assetModel.modelDefinition!.assetDescription!.bodyText(context), + const Divider().defaultStyle(context), + InfoTextWidget(label: assetModel.modelDefinition!.assetDescription!, showEmptyValue: true, isMsg: true), ] ], ) diff --git a/lib/views/widgets/equipment/asset_item_listview.dart b/lib/views/widgets/equipment/asset_item_listview.dart index e5fe91e9..6fced692 100644 --- a/lib/views/widgets/equipment/asset_item_listview.dart +++ b/lib/views/widgets/equipment/asset_item_listview.dart @@ -60,7 +60,7 @@ class AssetItemListView extends StatelessWidget { children: [ Text( context.translation.viewDetails, - style: AppTextStyles.bodyText2.copyWith(color: AppColor.blueStatus(context)), + style: AppTextStyles.bodyText2.copyWith(color: AppColor.primary10), ), 4.width, const Icon(Icons.arrow_forward, color: AppColor.primary10, size: 14) diff --git a/lib/views/widgets/equipment/asset_picker.dart b/lib/views/widgets/equipment/asset_picker.dart index fcb827d5..ff611a91 100644 --- a/lib/views/widgets/equipment/asset_picker.dart +++ b/lib/views/widgets/equipment/asset_picker.dart @@ -4,6 +4,8 @@ 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/views/widgets/bottom_sheets/asset_detail_bottom_sheet.dart'; +import 'package:test_sa/views/widgets/item_views/info_header_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_text_widget.dart'; import 'package:test_sa/views/widgets/qr/asset_scan_qr.dart'; import '../../../models/device/asset.dart'; @@ -65,18 +67,18 @@ class AssetPicker extends StatelessWidget { height: 50.toScreenHeight, alignment: Alignment.center, decoration: BoxDecoration( - color: buttonColor ?? backgroundColor ?? AppColor.blueStatus(context), + color: buttonColor ?? backgroundColor ?? AppColor.primary10, borderRadius: BorderRadius.circular(10), - border: showBorder ? Border.all(color: borderColor ?? AppColor.blueStatus(context), width: 2) : null, + border: showBorder ? Border.all(color: borderColor ?? AppColor.border2Color(context), width: 1) : null, // boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.03), blurRadius: 14)], ), padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight), child: Row( mainAxisSize: MainAxisSize.min, children: [ - "scan_asset".toSvgAsset(height: 22, fit: BoxFit.fitHeight, color: context.isDark ? AppColor.neutral20 : iconColor ?? Colors.white), + "scan_asset".toSvgAsset(height: 22, fit: BoxFit.fitHeight, color: AppColor.white10), 8.width, - ' ${label ?? "Scan or Pick Asset"}'.bodyText(context).custom(color: context.isDark ? AppColor.neutral20 : labelColor ?? Colors.white), + ' ${label ?? "Scan or Pick Asset"}'.bodyText(context).custom(color: AppColor.white10), ], ), ).onPress(() async { @@ -107,16 +109,20 @@ class AssetPicker extends StatelessWidget { height: 50, alignment: Alignment.center, decoration: BoxDecoration( - color: Colors.white, borderRadius: BorderRadius.circular(10), border: Border.all(color: borderColor ?? AppColor.blueStatus(context), width: 2), - // boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.03), blurRadius: 14)], + // // color: Colors.white, + // borderRadius: BorderRadius.circular(10), + // border: Border.all(color: borderColor ?? AppColor.border2Color(context), width: 1), + color: buttonColor ?? backgroundColor ?? AppColor.primary10, + borderRadius: BorderRadius.circular(10), + border: showBorder ? Border.all(color: borderColor ?? AppColor.border2Color(context), width: 1) : null, ), padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight), child: Row( mainAxisSize: MainAxisSize.min, children: [ - "scan_asset".toSvgAsset(height: 22, fit: BoxFit.fitHeight, color: context.isDark ? AppColor.neutral20 : AppColor.neutral120), + "scan_asset".toSvgAsset(height: 22, fit: BoxFit.fitHeight, color: AppColor.white10), 8.width, - "Re-Scan or Pick Asset".bodyText(context).custom(color: context.isDark ? AppColor.neutral20 : AppColor.black20), + "Re-Scan or Pick Asset".bodyText(context).custom(color: AppColor.white10), ], ), ).onPress(() async { @@ -159,39 +165,25 @@ class AssetPicker extends StatelessWidget { return Container( padding: const EdgeInsets.all(12), decoration: BoxDecoration( - color: showLoading ? Colors.white : const Color(0xffF4F6FC), - borderRadius: BorderRadius.circular(12), - border: Border.all( - color: const Color(0xff212936).withOpacity(.03), - ), + color: showLoading ? Colors.white : AppColor.background(context), + borderRadius: BorderRadius.circular(16), + border: Border.all(color: borderColor ?? AppColor.borderColor(context)), ), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Row( children: [ - Text( + InfoHeaderWidget( device.modelDefinition?.assetName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", - style: TextStyle( - fontSize: 14.toScreenWidth, - fontWeight: FontWeight.w500, - fontStyle: FontStyle.normal, - color: Colors.black87, - decoration: TextDecoration.none, - ), ).toShimmer(isShow: showLoading, context: context).expanded, - const Icon( - Icons.info, - color: Color(0xff7D859A), - size: 20, - ).onPress(() { + Icon(Icons.info, color: AppColor.icon2Color(context), size: 20).onPress(() { showModalBottomSheet( context: context, isScrollControlled: true, + backgroundColor: AppColor.bottomSheetColor(context), shape: const RoundedRectangleBorder( - borderRadius: BorderRadius.vertical( - top: Radius.circular(20), - ), + borderRadius: BorderRadius.vertical(top: Radius.circular(20)), ), clipBehavior: Clip.antiAliasWithSaveLayer, builder: (BuildContext context) => AssetDetailBottomSheet(device), @@ -206,10 +198,12 @@ class AssetPicker extends StatelessWidget { ], ), 8.height, - "${context.translation.assetNo}: ${device.assetNumber}".bodyText2(context).toShimmer(isShow: showLoading, context: context), - 2.height, + InfoTextWidget(label: context.translation.assetNo, value: device.assetNumber).toShimmer(isShow: showLoading, context: context), + // 2.height, // "${context.translation.manufacture}: ${device.modelDefinition?.manufacturerName}".bodyText(context), - "${context.translation.model}: ${device.modelDefinition?.modelName}".bodyText2(context).toShimmer(isShow: showLoading, context: context), + InfoTextWidget(label: context.translation.model, value: device.modelDefinition?.modelName).toShimmer(isShow: showLoading, context: context), + + // "${context.translation.model}: ${device.modelDefinition?.modelName}".bodyText2(context).toShimmer(isShow: showLoading, context: context), // "${context.translation.serialNumber}: ${device.assetNumber}".bodyText(context), // const Divider().defaultStyle(context), // "${context.translation.department}: ${device.department?.departmentName}".bodyText(context), diff --git a/lib/views/widgets/equipment/my_assets_page.dart b/lib/views/widgets/equipment/my_assets_page.dart index 80a6c432..19accbc8 100644 --- a/lib/views/widgets/equipment/my_assets_page.dart +++ b/lib/views/widgets/equipment/my_assets_page.dart @@ -228,7 +228,8 @@ class _MyAssetsPageState extends State { ), floatingActionButton: FloatingActionButton( heroTag: "some tag 2", - child: "qr".toSvgAsset(height: 32, fit: BoxFit.fitHeight, color: Theme.of(context).scaffoldBackgroundColor), + backgroundColor: AppColor.primary10, + child: "qr".toSvgAsset(height: 32, fit: BoxFit.fitHeight, color: AppColor.background(context)), onPressed: () async { String? result = await Navigator.of(context).push( MaterialPageRoute(builder: (_) => const ScanQr()), @@ -299,10 +300,7 @@ class _MyAssetsPageState extends State { ), child: Text( 'Clear Filters', - style: AppTextStyles.tinyFont.copyWith( - color: AppColor.primary10, - fontWeight: FontWeight.w500, - ), + style: AppTextStyles.tinyFont.copyWith(color: AppColor.red30), ), ), ], @@ -464,7 +462,7 @@ class _MyAssetsPageState extends State { // Date Range if (_searchAsset?.supplyDateFrom != null || _searchAsset?.supplyDateTo != null) { - String dateLabel = 'Supply Date: '; + String dateLabel = 'Date: '; if (_searchAsset!.supplyDateFrom != null && _searchAsset!.supplyDateTo != null) { dateLabel += '${_formatDate(_searchAsset!.supplyDateFrom!)} - ${_formatDate(_searchAsset!.supplyDateTo!)}'; } else if (_searchAsset!.supplyDateFrom != null) { diff --git a/lib/views/widgets/horizontal_list_widget.dart b/lib/views/widgets/horizontal_list_widget.dart index 6905aa8c..32ae76b0 100644 --- a/lib/views/widgets/horizontal_list_widget.dart +++ b/lib/views/widgets/horizontal_list_widget.dart @@ -22,23 +22,25 @@ class _HorizontalListWidgetState extends State { Widget build(BuildContext context) { return SizedBox( height: 35.toScreenHeight, - child: ListView.builder( + child: ListView.separated( itemCount: widget.list.length, scrollDirection: Axis.horizontal, shrinkWrap: true, padding: EdgeInsetsDirectional.only(start: 16.toScreenWidth, end: 16), + separatorBuilder: (cxt, index) => 8.width, itemBuilder: (context, index) => Container( - margin: EdgeInsets.symmetric(horizontal: 4.toScreenWidth), - padding: EdgeInsets.symmetric(horizontal: 20.toScreenWidth), + // margin: EdgeInsets.symmetric(horizontal: 4.toScreenWidth), + padding: EdgeInsets.symmetric(vertical: 8.toScreenHeight, horizontal: 12.toScreenWidth), alignment: Alignment.center, decoration: ShapeDecoration( - color: _selectedIndex == index ? Colors.transparent : AppColor.selectedButtonColor(context), + color: AppColor.background(context), + shadows: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 14, offset: const Offset(0, 0), spreadRadius: 0)], shape: RoundedRectangleBorder( - side: _selectedIndex == index ? BorderSide(width: 2, color: (context.isDark ? AppColor.backgroundLight : AppColor.backgroundDark)) : BorderSide.none, - borderRadius: BorderRadius.circular(7), + side: BorderSide(width: 1, color: _selectedIndex == index ? AppColor.primary10 : AppColor.border2Color(context)), + borderRadius: BorderRadius.circular(6), ), ), - child: (widget.list[index]).tinyFont(context).custom(color: AppColor.filterButtonTextColor(context)), + child: widget.list[index].tinyFont(context).custom(color: _selectedIndex == index ? AppColor.primary10 : AppColor.filterButtonTextColor(context)), ).onPress(() { setState(() { _selectedIndex = index; diff --git a/lib/views/widgets/images/multi_image_picker.dart b/lib/views/widgets/images/multi_image_picker.dart index aa9ecd79..582bc6ea 100644 --- a/lib/views/widgets/images/multi_image_picker.dart +++ b/lib/views/widgets/images/multi_image_picker.dart @@ -482,19 +482,20 @@ class _AttachmentPickerState extends State { return Container( padding: const EdgeInsets.all(12), decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(12), - border: Border.all(color: const Color(0xffF1F1F1), width: 1), + color: AppColor.background(context), + borderRadius: BorderRadius.circular(16), + border: Border.all(color: AppColor.borderColor(context), width: 2), ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Icon(iconData, color: const Color(0xff7D859A), size: 36), - Text( - title, - style: const TextStyle(fontSize: 12, fontWeight: FontWeight.w500), - ), + Icon(iconData, color: AppColor.icon2Color(context), size: 24), + title.bodyText2(context).custom(color: AppColor.labelTextStyleColor(context), fontSize: context.isTablet() ? 10.toScreenWidth : null), + // Text( + // title, + // style: const TextStyle(fontSize: 12, fontWeight: FontWeight.w500), + // ), ], ), ); @@ -509,20 +510,15 @@ class _AttachmentPickerState extends State { padding: const EdgeInsets.all(12), decoration: BoxDecoration( color: AppColor.background(context), - // color: Colors.white, - borderRadius: BorderRadius.circular(12), - border: Border.all(color: const Color(0xffF1F1F1), width: 1), + borderRadius: BorderRadius.circular(16), + border: Border.all(color: AppColor.borderColor(context), width: 2), ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - icon.toSvgAsset(color: AppColor.iconColor(context), width: 36, height: 36), - // Icon(iconData, color: const Color(0xff7D859A), size: 36), - Text( - label, - style: const TextStyle(fontSize: 12, fontWeight: FontWeight.w500), - ), + icon.toSvgAsset(color: AppColor.icon2Color(context), width: 36, height: 36), + label.bodyText2(context).custom(color: AppColor.labelTextStyleColor(context), fontSize: context.isTablet() ? 10.toScreenWidth : null), ], ), ).onPress(onTap); diff --git a/lib/views/widgets/images/multi_image_picker_item.dart b/lib/views/widgets/images/multi_image_picker_item.dart index b889b547..acd8a992 100644 --- a/lib/views/widgets/images/multi_image_picker_item.dart +++ b/lib/views/widgets/images/multi_image_picker_item.dart @@ -64,14 +64,14 @@ class MultiFilesPickerItem extends StatelessWidget { Flexible( child: EllipsizedText( file.path.split("/").last, - style: AppTextStyles.bodyText.copyWith(color: AppColor.black10), + style: AppTextStyles.bodyText.copyWith(color: AppColor.labelTextStyleColor(context)), type: EllipsisType.start, // or EllipsisType.middle ), ), 8.width, if (enabled) InkWell( - child: "remove".toSvgAsset(width: 16), + child: "remove".toSvgAsset(width: 16,color: AppColor.red30), onTap: () { onRemoveTap(file); if (onRemove != null) { @@ -85,7 +85,7 @@ class MultiFilesPickerItem extends StatelessWidget { RichText( text: TextSpan( text: documentType == null ? 'Asset Guide | ' : '$documentType | ', - style: AppTextStyles.bodyText.copyWith(color: AppColor.neutral120), + style: AppTextStyles.bodyText.copyWith(color: AppColor.lightTextColor(context)), children: [ TextSpan( text: 'View', diff --git a/lib/views/widgets/images/new_multi_image_picker.dart b/lib/views/widgets/images/new_multi_image_picker.dart index 040af263..60a4fdce 100644 --- a/lib/views/widgets/images/new_multi_image_picker.dart +++ b/lib/views/widgets/images/new_multi_image_picker.dart @@ -174,19 +174,20 @@ class _MultiFilesPickerState extends State { return Container( padding: EdgeInsets.all(12), decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(12), - border: Border.all(color: Color(0xffF1F1F1), width: 1), + color: AppColor.background(context), + borderRadius: BorderRadius.circular(16), + border: Border.all(color: AppColor.borderColor(context), width: 2), ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Icon(iconData, color: Color(0xff7D859A), size: 36), - Text( - title, - style: TextStyle(fontSize: 12, fontWeight: FontWeight.w500), - ), + Icon(iconData, color: AppColor.icon2Color(context), size: 36), + title.bodyText2(context).custom(color: AppColor.labelTextStyleColor(context), fontSize: context.isTablet() ? 10.toScreenWidth : null), + // Text( + // title, + // style: TextStyle(fontSize: 12, fontWeight: FontWeight.w500), + // ), ], ), ); diff --git a/lib/views/widgets/item_views/info_header_widget.dart b/lib/views/widgets/item_views/info_header_widget.dart index 72dfc7df..6f8e93bf 100644 --- a/lib/views/widgets/item_views/info_header_widget.dart +++ b/lib/views/widgets/item_views/info_header_widget.dart @@ -10,3 +10,11 @@ class InfoHeaderWidget extends StatelessWidget { @override Widget build(BuildContext context) => Text(label, style: AppTextStyles.bodyText.copyWith(color: AppColor.textStyleColor(context))); } +class InfoHeader16Widget extends StatelessWidget { + final String label; + + InfoHeader16Widget(this.label, {Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) => Text(label, style: AppTextStyles.heading6.copyWith(color: AppColor.textStyleColor(context))); +} \ No newline at end of file diff --git a/lib/views/widgets/qr/scan_qr.dart b/lib/views/widgets/qr/scan_qr.dart index 4f1dda84..78c22e46 100644 --- a/lib/views/widgets/qr/scan_qr.dart +++ b/lib/views/widgets/qr/scan_qr.dart @@ -153,10 +153,12 @@ class _ScannerOverlay extends StatelessWidget { ), SafeArea( child: Padding( - padding: const EdgeInsets.all(12.0), - child: AIconButton( - iconData: Icons.arrow_back, + padding: const EdgeInsets.all(16.0), + child: FloatingActionButton( + heroTag: "some tag 3", + backgroundColor: AppColor.background(context), onPressed: onBack, + child: Icon(Icons.arrow_back, size: 24.toScreenWidth, color: AppColor.icon2Color(context)), ), ), ), diff --git a/lib/views/widgets/sound/TextSpeechRecordWidget.dart b/lib/views/widgets/sound/TextSpeechRecordWidget.dart index 74ce8e09..6c9cae44 100644 --- a/lib/views/widgets/sound/TextSpeechRecordWidget.dart +++ b/lib/views/widgets/sound/TextSpeechRecordWidget.dart @@ -29,7 +29,7 @@ class TextSpeechRecordWidget extends StatefulWidget { final Function(String) onMessageChange; final String initialMessage; - const TextSpeechRecordWidget({Key? key, required this.onRecord, this.onStop, this.enabled = true,required this.onMessageChange,required this.initialMessage}) : super(key: key); + const TextSpeechRecordWidget({Key? key, required this.onRecord, this.onStop, this.enabled = true, required this.onMessageChange, required this.initialMessage}) : super(key: key); @override State createState() => _RecordSoundState(); @@ -75,7 +75,7 @@ class _RecordSoundState extends State { _commentController = TextEditingController(); node.unfocus(); _recorderIsOpened = true; - _settingProvider = Provider.of(context,listen: false); + _settingProvider = Provider.of(context, listen: false); } @override @@ -189,8 +189,9 @@ class _RecordSoundState extends State { controller: _commentController, labelText: _speechToText.isListening ? "Listening..." : context.translation.callComments, alignLabelWithHint: true, + isBackgroundTransparent: true, showWithoutDecoration: true, - backgroundColor: Colors.transparent, + // backgroundColor: Colors.transparent, textInputType: TextInputType.multiline, // suffixIcon: // (_recording ? "record".toLottieAsset(height: 24) : (_record != null ? "trash" : "mic").toSvgAsset(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20, height: 24)) @@ -204,20 +205,14 @@ class _RecordSoundState extends State { }, ).expanded, (_speechToText.isListening - ? SizedBox( - height: 24.toScreenHeight, - width: 24.toScreenWidth, - child: const Icon( - Icons.fiber_manual_record, - color: Colors.red, - )).onPress(() { + ? SizedBox(height: 24.toScreenHeight, width: 24.toScreenWidth, child: const Icon(Icons.fiber_manual_record, color: AppColor.red30)).onPress(() { _stopListening(); }) : PopupMenuButton( child: SizedBox( height: 24.toScreenHeight, width: 24.toScreenWidth, - child: "speech_to_text".toSvgAsset(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20, height: 24, width: 24), + child: "speech_to_text".toSvgAsset(color: AppColor.icon2Color(context), height: 24, width: 24), ), onSelected: (String selectedLanguage) { _settingProvider.setSpeechToText(selectedLanguage); @@ -243,9 +238,9 @@ class _RecordSoundState extends State { AppTextFormField( enable: widget.enabled, node: node, - backgroundColor: Colors.transparent, - showWithoutDecoration: true, + isBackgroundTransparent: true, controller: _timeController, + showBorder: false, labelText: context.translation.recordVoice, textInputType: TextInputType.multiline, alignLabelWithHint: true, @@ -290,9 +285,7 @@ class _RecordSoundState extends State { SizedBox( height: _recording ? 40 : 24.toScreenHeight, width: _recording ? 40 : 24.toScreenWidth, - child: (_recording - ? "record".toLottieAsset(height: 24) - : (_record != null ? "trash" : "mic").toSvgAsset(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20, height: 24, width: 24)), + child: (_recording ? "record".toLottieAsset(height: 24) : (_record != null ? "trash" : "mic").toSvgAsset(color: AppColor.icon2Color(context), height: 24, width: 24)), ).paddingOnly(end: 16, top: 16).onPress(() { if (_recording) { _stopRecording(); diff --git a/lib/views/widgets/sound/sound_player.dart b/lib/views/widgets/sound/sound_player.dart index a9368299..93a25a01 100644 --- a/lib/views/widgets/sound/sound_player.dart +++ b/lib/views/widgets/sound/sound_player.dart @@ -1,6 +1,7 @@ import 'package:audioplayers/audioplayers.dart'; import 'package:flutter/material.dart'; import 'package:test_sa/extensions/context_extension.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/app_style/app_text_style.dart'; @@ -32,15 +33,11 @@ class _ASoundPlayerState extends State { decoration: ShapeDecoration( color: AppColor.background(context), shape: RoundedRectangleBorder( - side: BorderSide(width: 1, color: (context.isDark ? AppColor.neutral20 : AppColor.neutral30)), + side: BorderSide(width: 1, color: AppColor.border2Color(context)), borderRadius: BorderRadius.circular(32), ), ), - child: Icon( - icon, - size: 30, - color: (context.isDark ? AppColor.primary40 : AppColor.primary70).withOpacity(0.5), - ), + child: Icon(icon, size: 30, color: (AppColor.primary10)), ).onPress(onpress); } @@ -182,8 +179,8 @@ class _ASoundPlayerState extends State { value: _audioPosition?.inMilliseconds.toDouble() ?? 0.0, min: 0, max: _audioTime?.inMilliseconds.toDouble() ?? 60.0, - activeColor: context.isDark ? AppColor.primary40 : AppColor.primary70, - inactiveColor: context.isDark ? AppColor.neutral20 : AppColor.neutral30, + activeColor: AppColor.primary10, + inactiveColor: AppColor.border2Color(context), onChangeStart: (value) { _sliderMoving = true; }, @@ -199,9 +196,8 @@ class _ASoundPlayerState extends State { ), ).paddingOnly(start: 8, end: 8).expanded, _failedToLoad - ? Text("Failed to load", style: AppTextStyle.tiny.copyWith(color: context.isDark ? AppColor.red50 : AppColor.red60)) - : Text("${format(_audioPosition ?? Duration.zero)}/${format(_audioTime ?? Duration.zero)}", - style: AppTextStyle.tiny.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50)), + ? Text("Failed to load", style: AppTextStyles.tinyFont.copyWith(color: AppColor.textStyleColor(context))) + : Text("${format(_audioPosition ?? Duration.zero)}/${format(_audioTime ?? Duration.zero)}", style: AppTextStyles.tinyFont.copyWith(color: AppColor.textStyleColor(context))), ], ), ],