ui/ux asset delivery improvements

ui_ux_rollout_merge_notification_settings
Sikander Saleem 3 weeks ago
parent 91003cc8a1
commit d71ddcdf1a

@ -12,6 +12,9 @@ import 'package:test_sa/controllers/providers/api/notifications_provider.dart';
import 'package:test_sa/models/all_requests_and_count_model.dart'; import 'package:test_sa/models/all_requests_and_count_model.dart';
import 'package:test_sa/models/device/device_transfer.dart'; import 'package:test_sa/models/device/device_transfer.dart';
import 'package:test_sa/models/new_models/gas_refill_model.dart'; import 'package:test_sa/models/new_models/gas_refill_model.dart';
import 'package:test_sa/modules/asset_delivery_module/pages/asset_delivery_page.dart';
import 'package:test_sa/modules/asset_inventory_module/pages/asset_inventory_detail_view.dart';
import 'package:test_sa/modules/asset_inventory_module/pages/asset_inventory_page.dart';
import 'package:test_sa/modules/cm_module/cm_detail_page.dart'; import 'package:test_sa/modules/cm_module/cm_detail_page.dart';
import 'package:test_sa/modules/cx_module/survey/survey_page.dart'; import 'package:test_sa/modules/cx_module/survey/survey_page.dart';
import 'package:test_sa/modules/demo_module/demo_detail_view_page.dart'; import 'package:test_sa/modules/demo_module/demo_detail_view_page.dart';
@ -172,9 +175,9 @@ class FirebaseNotificationManger {
requestDetails: RequestsDetails(nameOfType: messageData["sourceName"], status: messageData["statusName"], priority: messageData["priorityName"], date: messageData["createdDate"]), requestDetails: RequestsDetails(nameOfType: messageData["sourceName"], status: messageData["statusName"], priority: messageData["priorityName"], date: messageData["createdDate"]),
moduleId: 7); moduleId: 7);
break; break;
// case "8": case "8":
// serviceClass = AssetInventoryDetailView(requestId: int.parse(messageData["requestNumber"].toString()), moduleId: 1); serviceClass = AssetInventoryPage(sessionId: int.parse(messageData["requestNumber"].toString()), moduleId: int.parse(transactionType));
// break; break;
case "9": case "9":
serviceClass = TrafRequestDetailPage(trafId: int.parse(messageData["requestNumber"].toString())); serviceClass = TrafRequestDetailPage(trafId: int.parse(messageData["requestNumber"].toString()));
break; break;
@ -187,9 +190,9 @@ class FirebaseNotificationManger {
case "12": case "12":
serviceClass = LoanEquipmentDetailPage(loanId: int.parse(messageData["requestNumber"].toString())); serviceClass = LoanEquipmentDetailPage(loanId: int.parse(messageData["requestNumber"].toString()));
break; break;
// case "13": case "13":
// serviceClass = AssetDeliveryPage(requestId: int.parse(messageData["requestNumber"].toString())); serviceClass = AssetDeliveryPage(requestId: int.parse(messageData["requestNumber"].toString()));
// break; break;
case "14": case "14":
serviceClass = MedicalGasInspectionDetailPage(inspectionId: int.parse(messageData["requestNumber"].toString()), prority: messageData["priorityName"]); serviceClass = MedicalGasInspectionDetailPage(inspectionId: int.parse(messageData["requestNumber"].toString()), prority: messageData["priorityName"]);
break; break;
@ -271,12 +274,7 @@ class FirebaseNotificationManger {
final String body = message.notification?.body ?? message.data['body'] ?? 'New notification'; final String body = message.notification?.body ?? message.data['body'] ?? 'New notification';
// Always show with our grouping logic // Always show with our grouping logic
NotificationManger.showNotification( NotificationManger.showNotification(title: title, subtext: body, hashcode: DateTime.now().millisecondsSinceEpoch.hashCode, payload: json.encode(message.data), context: context);
title: title,
subtext: body,
hashcode: DateTime.now().millisecondsSinceEpoch.hashCode,
payload: json.encode(message.data),
context: context);
// Update unread notification count badge when new notification arrives // Update unread notification count badge when new notification arrives
try { try {

@ -35,8 +35,8 @@ class AssetDeliveryItemView extends StatelessWidget {
Navigator.of(context).push(MaterialPageRoute( Navigator.of(context).push(MaterialPageRoute(
builder: (_) => AssetDeliveryPage( builder: (_) => AssetDeliveryPage(
requestId: requestData!.id!, requestId: requestData!.id!,
poInternal: requestData?.poInternal, // poInternal: requestData?.poInternal,
poExternal: requestData?.poExternal, // poExternal: requestData?.poExternal,
))); )));
}); });
} }
@ -52,8 +52,8 @@ class AssetDeliveryItemView extends StatelessWidget {
Navigator.of(context).push(MaterialPageRoute( Navigator.of(context).push(MaterialPageRoute(
builder: (_) => AssetDeliveryPage( builder: (_) => AssetDeliveryPage(
requestId: requestDetails!.id!, requestId: requestDetails!.id!,
poInternal: requestDetails?.poInternal, // poInternal: requestDetails?.poInternal,
poExternal: requestDetails?.poExternal, // poExternal: requestDetails?.poExternal,
))); )));
}); });
} }

@ -4,6 +4,7 @@ import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/modules/asset_delivery_module/models/delivery_line_model.dart'; import 'package:test_sa/modules/asset_delivery_module/models/delivery_line_model.dart';
import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/views/widgets/item_views/info_text_widget.dart';
class AssetDeliveryLineCard extends StatelessWidget { class AssetDeliveryLineCard extends StatelessWidget {
DeliveryLineModel deliveryLineModel; DeliveryLineModel deliveryLineModel;
@ -28,59 +29,27 @@ class AssetDeliveryLineCard extends StatelessWidget {
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Text( InfoTextWidget(label: "Item Category", value: deliveryLineModel.itemCategory ?? '-'),
'Item Category: ${deliveryLineModel.itemCategory ?? '-'}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
if (!isViewOnly) if (!isViewOnly)
'edit_icon'.toSvgAsset().onPress(() { 'edit_icon'.toSvgAsset(width: 24, height: 24, color: AppColor.icon2Color(context)).onPress(() {
if (editPress != null) { if (editPress != null) {
editPress!(); editPress!();
} }
}), }),
], ],
), ),
Text( InfoTextWidget(label: "Item No", value: deliveryLineModel.itemNumber ?? '-'),
'Item No: ${deliveryLineModel.itemNumber ?? '-'}', InfoTextWidget(label: "Item Description", value: deliveryLineModel.itemDescription ?? '-'),
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120), InfoTextWidget(label: "Quantity", value: deliveryLineModel.qty?.toString() ?? '-'),
), if (!isTechnical) ...[
Text( InfoTextWidget(label: "Remaining Quantity", value: deliveryLineModel.remainingQty?.toString() ?? '-'),
'Item Description: ${deliveryLineModel.itemDescription ?? '-'}', InfoTextWidget(label: "Quantity of this Delivery", value: deliveryLineModel.usingQtyInThisDelivery?.toString() ?? '-'),
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
Text(
'Quantity: ${deliveryLineModel.qty ?? '-'}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
if(!isTechnical)...[
Text(
'Remaining Quantity: ${deliveryLineModel.remainingQty ?? '-'}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
Text(
'Quantity of this Delivery: ${deliveryLineModel.usingQtyInThisDelivery ?? '-'}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
], ],
InfoTextWidget(label: "Measure Unit", value: deliveryLineModel.unitOfMeasure?.toString() ?? '-'),
Text( InfoTextWidget(label: "Unit price", value: deliveryLineModel.unitPrice?.toString() ?? '-'),
'Measure Unit: ${deliveryLineModel.unitOfMeasure ?? '-'}', InfoTextWidget(label: "Line Type", value: deliveryLineModel.lineType?.toString() ?? '-'),
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120), InfoTextWidget(label: "Total", value: deliveryLineModel.total?.toString() ?? '-'),
),
Text(
'Unit price: ${deliveryLineModel.unitPrice ?? '-'}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
Text(
'Line Type: ${deliveryLineModel.lineType ?? '-'}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
Text(
'Total: ${deliveryLineModel.total ?? '-'}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
], ],
).toShadowContainer(context, borderRadius: 20, padding: 12); ).toShadowContainer(context);
} }
} }

@ -25,14 +25,14 @@ import 'package:test_sa/views/widgets/item_views/info_text_widget.dart';
class AssetDeliveryPage extends StatefulWidget { class AssetDeliveryPage extends StatefulWidget {
final int? requestId; final int? requestId;
final String? poInternal; // final String? poInternal;
final String? poExternal; // final String? poExternal;
const AssetDeliveryPage({ const AssetDeliveryPage({
Key? key, Key? key,
this.requestId, this.requestId,
this.poInternal, // this.poInternal,
this.poExternal, // this.poExternal,
}) : super(key: key); }) : super(key: key);
@override @override
@ -101,7 +101,7 @@ class _AssetDeliveryPageState extends State<AssetDeliveryPage> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
requestDetailCard(context).toShadowContainer(context, borderRadius: 20, padding: 0), requestDetailCard(context).toShadowContainer(context),
16.height, 16.height,
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
@ -160,7 +160,7 @@ class _AssetDeliveryPageState extends State<AssetDeliveryPage> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
InfoHeader16Widget('PO Details'.addTranslation), InfoHeader16Widget('PO Details'.addTranslation),
InfoTextWidget(label: 'PO No. Internal'.addTranslation, value: widget.poInternal ?? '-'), InfoTextWidget(label: 'PO No. Internal'.addTranslation, value: dataModel?.poNumber?.toString() ?? '-'),
InfoTextWidget(label: 'Client Name'.addTranslation, value: dataModel?.clientName ?? '-'), InfoTextWidget(label: 'Client Name'.addTranslation, value: dataModel?.clientName ?? '-'),
// Row( // Row(
// mainAxisSize: MainAxisSize.min, // mainAxisSize: MainAxisSize.min,
@ -193,7 +193,7 @@ class _AssetDeliveryPageState extends State<AssetDeliveryPage> {
InfoTextWidget(label: 'Total'.addTranslation, value: dataModel?.total != null ? dataModel!.total.toString() : '-'), InfoTextWidget(label: 'Total'.addTranslation, value: dataModel?.total != null ? dataModel!.total.toString() : '-'),
InfoTextWidget(label: 'Total Invoice'.addTranslation, value: dataModel?.totalInvoice != null ? dataModel!.totalInvoice.toString() : '-'), InfoTextWidget(label: 'Total Invoice'.addTranslation, value: dataModel?.totalInvoice != null ? dataModel!.totalInvoice.toString() : '-'),
], ],
).paddingAll(16); );
} }
String getPOExternal() { String getPOExternal() {
@ -218,7 +218,7 @@ class _AssetDeliveryPageState extends State<AssetDeliveryPage> {
? const NoDataFound().center ? const NoDataFound().center
: ListView.separated( : ListView.separated(
itemCount: assetDeliveryTableList.length, itemCount: assetDeliveryTableList.length,
separatorBuilder: (_, __) => 8.height, separatorBuilder: (_, __) => 12.height,
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
shrinkWrap: true, shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(), physics: const NeverScrollableScrollPhysics(),

@ -7,6 +7,7 @@ import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/modules/asset_delivery_module/models/asset_delivery_data_model.dart'; import 'package:test_sa/modules/asset_delivery_module/models/asset_delivery_data_model.dart';
import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/views/widgets/item_views/info_text_widget.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart';
class AssetDeliveryTableCard extends StatelessWidget { class AssetDeliveryTableCard extends StatelessWidget {
@ -54,24 +55,11 @@ class AssetDeliveryTableCard extends StatelessWidget {
// ], // ],
// ), // ),
8.height, 8.height,
Text( InfoTextWidget(label: "Delivery Number", value: deliveryTableModel.number ?? '-'),
'Delivery Number: ${deliveryTableModel.number ?? '-'}', InfoTextWidget(label: "Delivery Amount", value: deliveryTableModel.deliveryAmount?.toString() ?? '-'),
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120), InfoTextWidget(label: "Invoice Amount", value: deliveryTableModel.invoiceAmount?.toString() ?? '-', showArrow: true),
),
Text(
'Delivery Amount: ${deliveryTableModel.deliveryAmount ?? '-'}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
Text(
'Invoice Amount: ${deliveryTableModel.invoiceAmount ?? '-'}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
Align(
alignment: Alignment.centerRight,
child: Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14),
),
], ],
).toShadowContainer(context, borderRadius: 20).onPress(() { ).toShadowContainer(context).onPress(() {
onCardTap(); onCardTap();
}); });
} }

@ -1,5 +1,6 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:developer'; import 'dart:developer';
import 'package:date_picker_timeline/extra/color.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -32,6 +33,8 @@ import 'package:test_sa/views/widgets/date_and_time/time_picker.dart';
import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.dart'; import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.dart';
import 'package:test_sa/new_views/swipe_module/dialoge/acknowledge_work_dialog.dart'; import 'package:test_sa/new_views/swipe_module/dialoge/acknowledge_work_dialog.dart';
import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.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/no_data_found.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart';
import '../../../../new_views/common_widgets/app_filled_button.dart'; import '../../../../new_views/common_widgets/app_filled_button.dart';
@ -97,23 +100,19 @@ class _DeliveryInspectionFormViewState extends State<DeliveryInspectionFormView>
return Scaffold( return Scaffold(
backgroundColor: Theme.of(context).scaffoldBackgroundColor, backgroundColor: Theme.of(context).scaffoldBackgroundColor,
body: isLoading body: isLoading
? CircularProgressIndicator(color: AppColor.loadingColor(context)).center ? CircularProgressIndicator(color: AppColor.loadingColor(context)).center
: Form( : Form(
key: _formKey, key: _formKey,
child: Column( child: Column(
children: [ children: [
SingleChildScrollView( SingleChildScrollView(
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), padding: const EdgeInsets.all(16),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
spacing: 12,
children: [ children: [
if (!viewOnly) ...[inspectionDetailsForm()] else ...[inspectionDetails()], if (!viewOnly) ...[inspectionDetailsForm()] else ...[inspectionDetails()],
20.height, InfoHeader16Widget("Lines"),
Text(
"Lines",
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.black10),
),
8.height,
linesList(context), linesList(context),
], ],
)).expanded, )).expanded,
@ -178,12 +177,12 @@ class _DeliveryInspectionFormViewState extends State<DeliveryInspectionFormView>
return Consumer<AssetDeliveryProvider>(builder: (context, provider, child) { return Consumer<AssetDeliveryProvider>(builder: (context, provider, child) {
List<DeliveryLineModel> linesList = provider.deliveryLinesList; List<DeliveryLineModel> linesList = provider.deliveryLinesList;
return provider.isDeliveryLineListLoading return provider.isDeliveryLineListLoading
? SizedBox.expand(child: CircularProgressIndicator(color: AppColor.loadingColor(context)).center) ? SizedBox.expand(child: CircularProgressIndicator(color: AppColor.loadingColor(context)).center)
: linesList.isEmpty : linesList.isEmpty
? const NoDataFound().center ? const NoDataFound().center
: ListView.separated( : ListView.separated(
itemCount: linesList.length, itemCount: linesList.length,
separatorBuilder: (_, __) => 8.height, separatorBuilder: (_, __) => 12.height,
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
shrinkWrap: true, shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(), physics: const NeverScrollableScrollPhysics(),
@ -234,6 +233,7 @@ class _DeliveryInspectionFormViewState extends State<DeliveryInspectionFormView>
Widget inspectionDetailsForm() { Widget inspectionDetailsForm() {
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
spacing: 12,
children: [ children: [
_inspectionTile( _inspectionTile(
title: 'Inspected by'.addTranslation, title: 'Inspected by'.addTranslation,
@ -251,7 +251,6 @@ class _DeliveryInspectionFormViewState extends State<DeliveryInspectionFormView>
} }
}, },
), ),
8.height,
_inspectionTile( _inspectionTile(
title: 'Approved by'.addTranslation, title: 'Approved by'.addTranslation,
model: model.approvedByModel, model: model.approvedByModel,
@ -269,7 +268,6 @@ class _DeliveryInspectionFormViewState extends State<DeliveryInspectionFormView>
}, },
), ),
if (widget.requestModel?.paymentTerm?.value == 2) ...[ if (widget.requestModel?.paymentTerm?.value == 2) ...[
8.height,
_inspectionTile( _inspectionTile(
title: 'ThirdApprover'.addTranslation, title: 'ThirdApprover'.addTranslation,
model: model.thirdApprovalModel, model: model.thirdApprovalModel,
@ -287,7 +285,6 @@ class _DeliveryInspectionFormViewState extends State<DeliveryInspectionFormView>
}, },
), ),
], ],
8.height,
ADatePicker( ADatePicker(
label: 'Inspected Date/Time From'.addTranslation, label: 'Inspected Date/Time From'.addTranslation,
hideShadow: true, hideShadow: true,
@ -314,12 +311,10 @@ class _DeliveryInspectionFormViewState extends State<DeliveryInspectionFormView>
if (!_validateInspectionDates(from: fromDateTime, to: model.deliveryInspectionInspectedDateTo)) { if (!_validateInspectionDates(from: fromDateTime, to: model.deliveryInspectionInspectedDateTo)) {
return; // invalid, do not assign return; // invalid, do not assign
} }
model.deliveryInspectionInspectedDateFrom = fromDateTime; model.deliveryInspectionInspectedDateFrom = fromDateTime;
setState(() {}); setState(() {});
}, },
), ),
8.height,
ADatePicker( ADatePicker(
label: 'Inspected Date/Time To'.addTranslation, label: 'Inspected Date/Time To'.addTranslation,
hideShadow: true, hideShadow: true,
@ -356,18 +351,7 @@ class _DeliveryInspectionFormViewState extends State<DeliveryInspectionFormView>
setState(() {}); setState(() {});
}, },
), ),
8.height, InfoTextWidget(label: 'Total Time'.addTranslation, value: formatInspectionDuration(model.totalTime)),
Text(
'Total Time'.addTranslation,
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.black10),
),
8.height,
Text(
formatInspectionDuration(model.totalTime),
style: AppTextStyles.bodyText2.copyWith(
color: context.isDark ? AppColor.neutral30 : AppColor.neutral120,
),
),
], ],
).toShadowContainer(context, borderRadius: 20, padding: 12); ).toShadowContainer(context, borderRadius: 20, padding: 12);
} }
@ -421,64 +405,18 @@ class _DeliveryInspectionFormViewState extends State<DeliveryInspectionFormView>
return '${hours.toStringAsFixed(2)} hours'; return '${hours.toStringAsFixed(2)} hours';
} }
Widget inspectionDetails() { Widget inspectionDetails() {
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
spacing: 4,
children: [ children: [
Text( InfoTextWidget(label: "Inspected by", value: "\n${model.deliveryInspectionInspectedBy ?? '-'}"),
'Inspected by'.addTranslation, InfoTextWidget(label: "Approved by", value: "\n${model.deliveryInspectionApprovedBy ?? '-'}"),
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.black10), InfoTextWidget(label: 'Inspected Date/Time From'.addTranslation, value: "\n${model.deliveryInspectionInspectedDateFrom?.toString().toServiceRequestDetailsFormat ?? '-'}"),
), InfoTextWidget(label: 'Inspected Date/Time To'.addTranslation, value: "\n${model.deliveryInspectionInspectedDateTo?.toString().toServiceRequestDetailsFormat ?? '-'}"),
8.height, InfoTextWidget(label: 'Total Time'.addTranslation, value: "\n${formatInspectionDuration(model.totalTime) ?? '-'}"),
Text(
model.deliveryInspectionInspectedBy ?? '-',
style: AppTextStyles.bodyText2.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral120),
),
8.height,
Text(
'Approved by'.addTranslation,
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.black10),
),
8.height,
Text(
model.deliveryInspectionApprovedBy ?? '-',
style: AppTextStyles.bodyText2.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral120),
),
8.height,
Text(
'Inspected Date/Time From'.addTranslation,
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.black10),
),
8.height,
Text(
model.deliveryInspectionInspectedDateFrom != null ? model.deliveryInspectionInspectedDateFrom!.toString().toServiceRequestDetailsFormat : '-',
style: AppTextStyles.bodyText2.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral120),
),
8.height,
Text(
'Inspected Date/Time To'.addTranslation,
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.black10),
),
8.height,
Text(
model.deliveryInspectionInspectedDateTo != null ? model.deliveryInspectionInspectedDateTo!.toString().toServiceRequestDetailsFormat : '-',
style: AppTextStyles.bodyText2.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral120),
),
8.height,
Text(
'Total Time'.addTranslation,
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.black10),
),
8.height,
Text(
formatInspectionDuration(model.totalTime),
style: AppTextStyles.bodyText2.copyWith(
color: context.isDark ? AppColor.neutral30 : AppColor.neutral120,
),
),
], ],
).toShadowContainer(context, borderRadius: 20, padding: 12); ).toShadowContainer(context);
} }
Widget _inspectionTile({ Widget _inspectionTile({
@ -493,8 +431,9 @@ class _DeliveryInspectionFormViewState extends State<DeliveryInspectionFormView>
child: Container( child: Container(
padding: const EdgeInsets.all(12), padding: const EdgeInsets.all(12),
decoration: BoxDecoration( decoration: BoxDecoration(
color: AppColor.fieldBgColor(context), color: AppColor.background(context),
borderRadius: BorderRadius.circular(12), border: Border.all(color: AppColor.border2Color(context), width: 1),
borderRadius: BorderRadius.circular(16),
), ),
child: Row( child: Row(
children: [ children: [
@ -502,25 +441,9 @@ class _DeliveryInspectionFormViewState extends State<DeliveryInspectionFormView>
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Text(title, style: AppTextStyles.textFieldLabelStyle), InfoTextLabelWidget(label: title, textStyle: AppTextStyles.textFieldLabelStyle),
6.height, 4.height,
Row( InfoTextLabelWidget(label: model?.name?.isNotEmpty == true ? model!.name! : 'Tap to add'.addTranslation, textStyle: AppTextStyles.bodyText),
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
model?.name?.isNotEmpty == true ? model!.name! : 'Tap to add'.addTranslation,
style: AppTextStyles.bodyText,
),
///Need to display other info as well
// Text(
// model?.email?.isNotEmpty == true
// ? model!.email!
// : '',
// style: AppTextStyles.bodyText,
// ),
],
),
], ],
), ),
], ],
@ -630,6 +553,7 @@ class _DeliveryInspectionFormViewState extends State<DeliveryInspectionFormView>
return showModalBottomSheet<InspectionPersonModel>( return showModalBottomSheet<InspectionPersonModel>(
context: context, context: context,
isScrollControlled: true, isScrollControlled: true,
backgroundColor: AppColor.bottomSheetColor(context),
shape: const RoundedRectangleBorder( shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.vertical(top: Radius.circular(20)), borderRadius: BorderRadius.vertical(top: Radius.circular(20)),
), ),

@ -67,14 +67,14 @@ class _InspectionPersonBottomSheetState extends State<InspectionPersonBottomShee
top: 16, top: 16,
left: 16, left: 16,
right: 16, right: 16,
bottom: MediaQuery.of(context).viewInsets.bottom+MediaQuery.of(context).padding.bottom, bottom: MediaQuery.of(context).viewInsets.bottom + MediaQuery.of(context).padding.bottom,
), ),
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
spacing: 12,
children: [ children: [
Text(widget.title, style: Theme.of(context).textTheme.titleLarge), widget.title.heading4(context),
12.height,
if (widget.isHmg) if (widget.isHmg)
OracleUserAutoCompleteField( OracleUserAutoCompleteField(
clearAfterPick: false, clearAfterPick: false,
@ -101,7 +101,6 @@ class _InspectionPersonBottomSheetState extends State<InspectionPersonBottomShee
setState(() {}); setState(() {});
}, },
), ),
8.height,
Row( Row(
children: [ children: [
AppTextFormField( AppTextFormField(
@ -121,7 +120,7 @@ class _InspectionPersonBottomSheetState extends State<InspectionPersonBottomShee
}, },
).expanded, ).expanded,
if (emailController.text.isNotEmpty) ...[ if (emailController.text.isNotEmpty) ...[
8.width, 12.width,
AppFilledButton( AppFilledButton(
buttonColor: AppColor.primary10, buttonColor: AppColor.primary10,
label: 'SendEmail'.addTranslation, label: 'SendEmail'.addTranslation,
@ -161,7 +160,6 @@ class _InspectionPersonBottomSheetState extends State<InspectionPersonBottomShee
], ],
], ],
), ),
8.height,
ESignature( ESignature(
title: '', title: '',
editable: false, editable: false,
@ -184,7 +182,6 @@ class _InspectionPersonBottomSheetState extends State<InspectionPersonBottomShee
// }); // });
// }, // },
), ),
12.height,
AppFilledButton( AppFilledButton(
label: context.translation.save, label: context.translation.save,
maxWidth: true, maxWidth: true,

@ -52,11 +52,12 @@ class _AutoCompletePartsFieldState extends State<OracleUserAutoCompleteField> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
assetDeliveryProvider ??= Provider.of<AssetDeliveryProvider>(context); assetDeliveryProvider ??= Provider.of<AssetDeliveryProvider>(context);
final border = UnderlineInputBorder(borderSide: BorderSide.none, borderRadius: BorderRadius.circular(10)); final border = UnderlineInputBorder(borderSide: BorderSide.none, borderRadius: BorderRadius.circular(16));
return Container( return Container(
decoration: BoxDecoration( decoration: BoxDecoration(
color: AppColor.background(context), color: AppColor.background(context),
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), border: Border.all(color: AppColor.border2Color(context), width: 1),
borderRadius: BorderRadius.circular(16),
// boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)], // boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],
), ),
child: Autocomplete<OracleUserModel>( child: Autocomplete<OracleUserModel>(
@ -73,7 +74,7 @@ class _AutoCompletePartsFieldState extends State<OracleUserAutoCompleteField> {
return TextField( return TextField(
controller: fieldTextEditingController, controller: fieldTextEditingController,
focusNode: fieldFocusNode, focusNode: fieldFocusNode,
style: AppTextStyles.bodyText.copyWith(color: AppColor.black10), style: TextStyle(fontWeight: FontWeight.w500, fontSize: context.isTablet() ? 16 : 14, color: AppColor.textStyleColor(context)),
textAlign: TextAlign.start, textAlign: TextAlign.start,
decoration: InputDecoration( decoration: InputDecoration(
border: border, border: border,
@ -81,15 +82,16 @@ class _AutoCompletePartsFieldState extends State<OracleUserAutoCompleteField> {
focusedBorder: border, focusedBorder: border,
enabledBorder: border, enabledBorder: border,
errorBorder: border, errorBorder: border,
contentPadding: EdgeInsets.symmetric(vertical: 8.toScreenHeight, horizontal: 16.toScreenWidth), contentPadding: EdgeInsets.symmetric(vertical: 12.toScreenHeight, horizontal: 16.toScreenWidth),
constraints: const BoxConstraints(), constraints: const BoxConstraints(),
suffixIconConstraints: const BoxConstraints(minWidth: 0), suffixIconConstraints: const BoxConstraints(minWidth: 0),
filled: true, filled: true,
fillColor: AppColor.fieldBgColor(context), fillColor: AppColor.dropDownBackground(context),
errorStyle: AppTextStyle.tiny.copyWith(color: context.isDark ? AppColor.red50 : AppColor.red60), errorStyle: AppTextStyle.tiny.copyWith(color: context.isDark ? AppColor.red50 : AppColor.red60),
floatingLabelStyle: AppTextStyle.body1.copyWith(fontWeight: FontWeight.w500, color: context.isDark ? null : AppColor.neutral20),
labelText: widget.label, labelText: widget.label,
labelStyle: AppTextStyles.tinyFont.copyWith(color: AppColor.textColor(context)), floatingLabelStyle: TextStyle(fontWeight: FontWeight.w500, fontSize: context.isTablet() ? 16 : 12, color: AppColor.floatingTextStyleColor(context)),
labelStyle: TextStyle(fontWeight: FontWeight.w500, fontSize: context.isTablet() ? 16 : 12, color: AppColor.labelTextStyleColor(context)),
), ),
textInputAction: TextInputAction.search, textInputAction: TextInputAction.search,
onChanged: (text) { onChanged: (text) {

@ -61,8 +61,8 @@ class _AssetDeliveryHistoryLogViewState extends State<AssetDeliveryHistoryLogVie
children: [ children: [
Padding( Padding(
padding: EdgeInsets.only(left: 122.toScreenWidth), padding: EdgeInsets.only(left: 122.toScreenWidth),
child: const VerticalDivider( child: VerticalDivider(
color: AppColor.white40, color: AppColor.borderColor(context),
thickness: 2, thickness: 2,
width: 20, width: 20,
indent: 10, indent: 10,

@ -57,12 +57,12 @@ class _AssetAutoCompleteFieldState extends State<AssetAutoCompleteField> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final border = UnderlineInputBorder(borderSide: BorderSide.none, borderRadius: BorderRadius.circular(10)); final border = UnderlineInputBorder(borderSide: BorderSide.none, borderRadius: BorderRadius.circular(16));
return Container( return Container(
decoration: BoxDecoration( decoration: BoxDecoration(
color: AppColor.background(context), color: AppColor.background(context),
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), border: Border.all(color: AppColor.border2Color(context), width: 1),
// boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)], borderRadius: BorderRadius.circular(16),
), ),
child: Autocomplete<AssetNDAutoCompleteByDynamicCodesModel>( child: Autocomplete<AssetNDAutoCompleteByDynamicCodesModel>(
optionsBuilder: (TextEditingValue textEditingValue) async { optionsBuilder: (TextEditingValue textEditingValue) async {
@ -90,7 +90,7 @@ class _AssetAutoCompleteFieldState extends State<AssetAutoCompleteField> {
return TextField( return TextField(
controller: _controller, controller: _controller,
focusNode: fieldFocusNode, focusNode: fieldFocusNode,
style: AppTextStyles.bodyText.copyWith(color: AppColor.black10), style: TextStyle(fontWeight: FontWeight.w500, fontSize: context.isTablet() ? 16 : 14, color: AppColor.textStyleColor(context)),
textAlign: TextAlign.start, textAlign: TextAlign.start,
decoration: InputDecoration( decoration: InputDecoration(
border: border, border: border,
@ -98,15 +98,15 @@ class _AssetAutoCompleteFieldState extends State<AssetAutoCompleteField> {
focusedBorder: border, focusedBorder: border,
enabledBorder: border, enabledBorder: border,
errorBorder: border, errorBorder: border,
contentPadding: EdgeInsets.symmetric(vertical: 8.toScreenHeight, horizontal: 16.toScreenWidth), contentPadding: EdgeInsets.symmetric(vertical: 12.toScreenHeight, horizontal: 16.toScreenWidth),
constraints: const BoxConstraints(), constraints: const BoxConstraints(),
suffixIconConstraints: const BoxConstraints(maxHeight: 24, maxWidth: 24 + 8), suffixIconConstraints: const BoxConstraints(maxHeight: 24, maxWidth: 24 + 8),
filled: true, filled: true,
fillColor: AppColor.fieldBgColor(context), fillColor: AppColor.dropDownBackground(context),
errorStyle: AppTextStyle.tiny.copyWith(color: context.isDark ? AppColor.red50 : AppColor.red60), errorStyle: AppTextStyle.tiny.copyWith(color: context.isDark ? AppColor.red50 : AppColor.red60),
floatingLabelStyle: AppTextStyle.body1.copyWith(fontWeight: FontWeight.w500, color: context.isDark ? null : AppColor.neutral20), floatingLabelStyle: TextStyle(fontWeight: FontWeight.w500, fontSize: context.isTablet() ? 16 : 12, color: AppColor.floatingTextStyleColor(context)),
labelStyle: TextStyle(fontWeight: FontWeight.w500, fontSize: context.isTablet() ? 16 : 12, color: AppColor.labelTextStyleColor(context)),
labelText: "Name/Oracle Code", labelText: "Name/Oracle Code",
labelStyle: AppTextStyles.tinyFont.copyWith(color: AppColor.textColor(context)),
suffixIcon: loading ? CircularProgressIndicator(color: AppColor.loadingColor(context), strokeWidth: 3.0).paddingOnly(end: 8) : null, suffixIcon: loading ? CircularProgressIndicator(color: AppColor.loadingColor(context), strokeWidth: 3.0).paddingOnly(end: 8) : null,
), ),
textInputAction: TextInputAction.search, textInputAction: TextInputAction.search,

@ -57,7 +57,7 @@ class ADatePicker extends StatelessWidget {
children: [ children: [
Text( Text(
label, label,
style: AppTextStyles.tinyFont.copyWith(color: AppColor.floatingTextStyleColor(context)), style: AppTextStyles.tinyFont2.copyWith(color: AppColor.floatingTextStyleColor(context)),
), ),
4.height, 4.height,
(date == null (date == null

@ -8,6 +8,7 @@ import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_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_color.dart';
import 'package:test_sa/views/widgets/item_views/info_text_widget.dart';
import '../loaders/image_loader.dart'; import '../loaders/image_loader.dart';
@ -67,18 +68,16 @@ class _ESignatureState extends State<ESignature> {
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight), padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight),
decoration: BoxDecoration( decoration: BoxDecoration(
color: widget.backgroundColor ?? (context.isDark ? AppColor.background(context) : Colors.white), color: AppColor.dropDownBackground(context),
borderRadius: _editable ? const BorderRadius.only(topLeft: Radius.circular(10), topRight: Radius.circular(10)) : BorderRadius.circular(10), border: Border.all(color: AppColor.border2Color(context), width: 1),
borderRadius: BorderRadius.circular(16),
boxShadow: widget.showShadow ? [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)] : null, boxShadow: widget.showShadow ? [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)] : null,
), ),
child: widget.editable == false child: widget.editable == false
? Column( ? Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( InfoTextLabelWidget(label: "Signature", textStyle: AppTextStyles.bodyText),
'Signature'.addTranslation,
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.black10),
),
Container( Container(
height: 135.toScreenHeight, height: 135.toScreenHeight,
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,

Loading…
Cancel
Save