code and logic improvements.

design_3.0_demo_module
Sikander Saleem 2 years ago
parent 40a96bad7c
commit 690b3822f5

@ -4,7 +4,6 @@ import 'package:shimmer/shimmer.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import '../new_views/app_style/app_color.dart'; import '../new_views/app_style/app_color.dart';
@ -32,7 +31,10 @@ extension WidgetExtensions on Widget {
flushbarPosition: FlushbarPosition.TOP, flushbarPosition: FlushbarPosition.TOP,
backgroundColor: backgroundColor ?? AppColor.green70, backgroundColor: backgroundColor ?? AppColor.green70,
title: title, title: title,
messageText: Text(message,style: AppTextStyles.heading6.copyWith(color: AppColor.white10),), messageText: Text(
message,
style: AppTextStyles.heading6.copyWith(color: AppColor.white10),
),
duration: Duration(seconds: duration ?? 3), duration: Duration(seconds: duration ?? 3),
flushbarStyle: FlushbarStyle.GROUNDED, flushbarStyle: FlushbarStyle.GROUNDED,
reverseAnimationCurve: Curves.easeInOut, reverseAnimationCurve: Curves.easeInOut,
@ -79,9 +81,9 @@ extension WidgetExtensions on Widget {
).toShadowContainer(context) ).toShadowContainer(context)
: this; : this;
Widget toShadowContainer(BuildContext context, {bool showShadow = true,bool withoutShadow = true,Color? backgroundColor, double padding = 16,EdgeInsets ?paddingValue}) => showShadow Widget toShadowContainer(BuildContext context, {bool showShadow = true, bool withShadow = true, Color? backgroundColor, double padding = 16, EdgeInsets? paddingObject}) => withShadow
? Container( ? Container(
padding:paddingValue?? EdgeInsets.all(padding), padding: paddingObject ?? EdgeInsets.all(padding),
width: double.infinity, width: double.infinity,
decoration: ShapeDecoration( decoration: ShapeDecoration(
color: backgroundColor ?? AppColor.background(context), color: backgroundColor ?? AppColor.background(context),

@ -89,13 +89,12 @@ class _SingleItemDropDownMenuState<T extends Base, X extends LoadingListNotifier
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
provider = Provider.of<X>(widget.context, listen: true);
final isEmpty = (X == NullableLoadingProvider ? widget.staticData : provider?.items)?.isEmpty ?? true; final isEmpty = (X == NullableLoadingProvider ? widget.staticData : provider?.items)?.isEmpty ?? true;
return AppLoadingManager( return AppLoadingManager(
isLoading: widget.loading ?? ((X == NullableLoadingProvider) ? false : provider?.loading ?? false), isLoading: widget.loading ?? ((X == NullableLoadingProvider) ? false : provider?.loading ?? false),
// Provide default value if null // Provide default value if null
isFailedLoading: (X == NullableLoadingProvider) ? false : provider?.items == null, isFailedLoading: (X == NullableLoadingProvider) ? false : provider?.items == null,
stateCode: (X == NullableLoadingProvider) ? 200 : provider?.stateCode ?? 0, stateCode: (X == NullableLoadingProvider) ? 200 : provider?.stateCode,
onRefresh: () async { onRefresh: () async {
if (X != NullableLoadingProvider) { if (X != NullableLoadingProvider) {
provider?.reset(); provider?.reset();

@ -76,7 +76,7 @@ class AssetItemView extends StatelessWidget {
], ],
), ),
], ],
).toShadowContainer(context, withoutShadow: showShadow).onPress(() { ).toShadowContainer(context, withShadow: showShadow).onPress(() {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => DeviceTransferDetails(model: AssetTransfer(id: requestData!.id!)))); Navigator.of(context).push(MaterialPageRoute(builder: (_) => DeviceTransferDetails(model: AssetTransfer(id: requestData!.id!))));
}); });
} }
@ -134,7 +134,7 @@ class AssetItemView extends StatelessWidget {
], ],
), ),
], ],
).toShadowContainer(context, withoutShadow: showShadow).onPress(() { ).toShadowContainer(context, withShadow: showShadow).onPress(() {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => DeviceTransferDetails(model: AssetTransfer(id: requestDetails!.id!)))); Navigator.of(context).push(MaterialPageRoute(builder: (_) => DeviceTransferDetails(model: AssetTransfer(id: requestDetails!.id!))));
}); });
} }

@ -68,7 +68,7 @@ class GasRefillItemView extends StatelessWidget {
], ],
), ),
], ],
).toShadowContainer(context, withoutShadow: showShadow).onPress(() { ).toShadowContainer(context, withShadow: showShadow).onPress(() {
Navigator.of(context).push( Navigator.of(context).push(
MaterialPageRoute( MaterialPageRoute(
builder: (_) => GasRefillDetailsPage( builder: (_) => GasRefillDetailsPage(
@ -127,7 +127,7 @@ class GasRefillItemView extends StatelessWidget {
], ],
), ),
], ],
).toShadowContainer(context, withoutShadow: showShadow).onPress(() { ).toShadowContainer(context, withShadow: showShadow).onPress(() {
Navigator.of(context).push( Navigator.of(context).push(
MaterialPageRoute( MaterialPageRoute(
builder: (_) => GasRefillDetailsPage( builder: (_) => GasRefillDetailsPage(

@ -67,7 +67,7 @@ class PpmItemView extends StatelessWidget {
], ],
), ),
], ],
).toShadowContainer(context, withoutShadow: showShadow).onPress(() { ).toShadowContainer(context, withShadow: showShadow).onPress(() {
// Navigator.of(context).push(MaterialPageRoute(builder: (_) => PpmDetailsPage(request: request))); // Navigator.of(context).push(MaterialPageRoute(builder: (_) => PpmDetailsPage(request: request)));
}); });
} }
@ -117,7 +117,7 @@ class PpmItemView extends StatelessWidget {
], ],
), ),
], ],
).toShadowContainer(context, withoutShadow: showShadow).onPress(() { ).toShadowContainer(context, withShadow: showShadow).onPress(() {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => PpmDetailsPage(request: requestDetails!))); Navigator.of(context).push(MaterialPageRoute(builder: (_) => PpmDetailsPage(request: requestDetails!)));
}); });
} }

@ -69,7 +69,7 @@ class ServiceRequestItemView extends StatelessWidget {
], ],
), ),
], ],
).toShadowContainer(context, withoutShadow: showShadow).onPress(() { ).toShadowContainer(context, withShadow: showShadow).onPress(() {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => RequestDetailMain(requestId: requestData!.id!))); Navigator.of(context).push(MaterialPageRoute(builder: (_) => RequestDetailMain(requestId: requestData!.id!)));
}); });
} }
@ -120,7 +120,7 @@ class ServiceRequestItemView extends StatelessWidget {
], ],
), ),
], ],
).toShadowContainer(context, withoutShadow: showShadow).onPress(() { ).toShadowContainer(context, withShadow: showShadow).onPress(() {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => RequestDetailMain(requestId: requestDetails!.id!))); Navigator.of(context).push(MaterialPageRoute(builder: (_) => RequestDetailMain(requestId: requestDetails!.id!)));
}); });
} }

@ -550,7 +550,7 @@ class ServiceRequestBottomSheet {
); );
break; break;
case 1: case 1:
Navigator.push( Navigator.pushReplacement(
context, context,
MaterialPageRoute(builder: (context) => const MaintenanceRequestForm()), MaterialPageRoute(builder: (context) => const MaintenanceRequestForm()),
); );

@ -1,9 +1,6 @@
import 'package:expansion_tile_card/expansion_tile_card.dart'; import 'package:expansion_tile_card/expansion_tile_card.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart';
import 'package:test_sa/dashboard_latest/widgets/app_bar_widget.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart';
@ -16,7 +13,6 @@ import 'package:test_sa/views/widgets/date_and_time/date_picker.dart';
import 'package:test_sa/views/widgets/status/report/service_report_assistant_employee_menu.dart'; import 'package:test_sa/views/widgets/status/report/service_report_assistant_employee_menu.dart';
class AssistantEmployeeCard extends StatefulWidget { class AssistantEmployeeCard extends StatefulWidget {
const AssistantEmployeeCard({super.key}); const AssistantEmployeeCard({super.key});
@override @override
@ -37,9 +33,7 @@ class _AssistantEmployeeCardState extends State<AssistantEmployeeCard> {
super.initState(); super.initState();
} }
Future<void> getInitialData() async { Future<void> getInitialData() async {}
}
@override @override
void dispose() { void dispose() {
@ -47,17 +41,18 @@ class _AssistantEmployeeCardState extends State<AssistantEmployeeCard> {
_workingHoursController.dispose(); _workingHoursController.dispose();
super.dispose(); super.dispose();
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<RequestDetailProvider>(builder: (context, requestDetailProvider, child) { return Consumer<RequestDetailProvider>(builder: (context, requestDetailProvider, child) {
return ExpansionTileCard( return ExpansionTileCard(
key: cardA, key: cardA,
initialElevation: 0, initialElevation: 0,
borderRadius: BorderRadius.zero, borderRadius: BorderRadius.circular(10),
expandedTextColor: AppColor.black20, expandedTextColor: AppColor.black20,
shadowColor: AppColor.white10, shadowColor: AppColor.white10,
baseColor: AppColor.white10, baseColor: AppColor.white10,
contentPadding: EdgeInsets.zero, contentPadding: const EdgeInsets.only(left: 16,right: 16),
expandedColor: AppColor.white10, expandedColor: AppColor.white10,
duration: Duration.zero, duration: Duration.zero,
elevation: 0, elevation: 0,
@ -143,7 +138,6 @@ class _AssistantEmployeeCardState extends State<AssistantEmployeeCard> {
requestDetailProvider.activityMaintenanceHelperModel?.endTime = selectedDateTime; requestDetailProvider.activityMaintenanceHelperModel?.endTime = selectedDateTime;
requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel); requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel);
assignWorkingHours(requestDetailProvider: requestDetailProvider); assignWorkingHours(requestDetailProvider: requestDetailProvider);
} }
}); });
}, },
@ -185,6 +179,7 @@ class _AssistantEmployeeCardState extends State<AssistantEmployeeCard> {
); );
}); });
} }
int calculateWorkingHours(DateTime? startTime, DateTime? endTime) { int calculateWorkingHours(DateTime? startTime, DateTime? endTime) {
if (startTime != null && endTime != null) { if (startTime != null && endTime != null) {
Duration difference = endTime.difference(startTime); Duration difference = endTime.difference(startTime);

@ -14,10 +14,12 @@ import 'package:test_sa/models/device/asset.dart';
import 'package:test_sa/models/service_request/service_report.dart'; import 'package:test_sa/models/service_request/service_report.dart';
import 'package:test_sa/models/service_request/service_request.dart'; import 'package:test_sa/models/service_request/service_request.dart';
import 'package:test_sa/models/service_request/supp_engineer_work_orders.dart'; import 'package:test_sa/models/service_request/supp_engineer_work_orders.dart';
import 'package:test_sa/models/service_request/supplier_details.dart';
import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import 'package:test_sa/providers/loading_list_notifier.dart'; import 'package:test_sa/providers/loading_list_notifier.dart';
import 'package:test_sa/providers/work_order/reason_provider.dart'; import 'package:test_sa/providers/work_order/reason_provider.dart';
import 'package:test_sa/providers/work_order/vendor_provider.dart';
import 'package:test_sa/service_request_latest/request_detail_provider.dart'; import 'package:test_sa/service_request_latest/request_detail_provider.dart';
import 'package:test_sa/service_request_latest/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/service_request_latest/views/components/action_button/footer_action_button.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';
@ -120,6 +122,20 @@ class _ExternalMaintenanceRequestState extends State<ExternalMaintenanceRequest>
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
//TODO replace with correct component.. //TODO replace with correct component..
SingleItemDropDownMenu<SupplierDetails, VendorProvider>(
context: context,
title: context.translation.supplier,
initialValue: null,
showAsBottomSheet: true,
onSelect: (supplier) {
if (supplier != null) {
// _subWorkOrders.supplier = supplier;
// log(_subWorkOrders.supplier?.suppPersons?.map((e) => e.personName)?.toString());
setState(() {});
}
},
),
SingleItemDropDownMenu<Lookup, NullableLoadingProvider>( SingleItemDropDownMenu<Lookup, NullableLoadingProvider>(
context: context, context: context,
height: 56.toScreenHeight, height: 56.toScreenHeight,

@ -1,32 +1,26 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart'; import 'package:fluttertoast/fluttertoast.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/parts_provider.dart';
import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; import 'package:test_sa/controllers/providers/api/service_requests_provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_repair_location_provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_repair_location_provider.dart';
import 'package:test_sa/controllers/providers/api/user_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/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart'; 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/models/device/asset.dart';
import 'package:test_sa/models/helper_data_models/maintenance_request/activity_maintenance_model.dart'; import 'package:test_sa/models/helper_data_models/maintenance_request/activity_maintenance_model.dart';
import 'package:test_sa/models/service_request/service_report.dart'; import 'package:test_sa/models/service_request/service_report.dart';
import 'package:test_sa/models/service_request/service_request.dart'; import 'package:test_sa/models/service_request/service_request.dart';
import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import 'package:test_sa/providers/loading_list_notifier.dart';
import 'package:test_sa/providers/work_order/activity_status_provider.dart'; import 'package:test_sa/providers/work_order/activity_status_provider.dart';
import 'package:test_sa/providers/work_order/reason_provider.dart';
import 'package:test_sa/service_request_latest/request_detail_provider.dart'; import 'package:test_sa/service_request_latest/request_detail_provider.dart';
import 'package:test_sa/service_request_latest/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/service_request_latest/views/components/action_button/footer_action_button.dart';
import 'package:test_sa/service_request_latest/views/forms/maintenance_request/components/assistant_employee_card.dart'; import 'package:test_sa/service_request_latest/views/forms/maintenance_request/components/assistant_employee_card.dart';
import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart';
import 'package:test_sa/views/widgets/date_and_time/time_picker.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import '../../../../../controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart';
import '../../../../../controllers/providers/api/status_drop_down/report/service_types_provider.dart'; import '../../../../../controllers/providers/api/status_drop_down/report/service_types_provider.dart';
import '../../../../../models/lookup.dart'; import '../../../../../models/lookup.dart';
import '../../../../../new_views/common_widgets/app_text_form_field.dart'; import '../../../../../new_views/common_widgets/app_text_form_field.dart';
@ -104,7 +98,6 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<RequestDetailProvider>(builder: (context, requestDetailProvider, child) { return Consumer<RequestDetailProvider>(builder: (context, requestDetailProvider, child) {
return LoadingManager( return LoadingManager(
isLoading: _isLoading, isLoading: _isLoading,
@ -177,13 +170,7 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
).then((selectedTime) { ).then((selectedTime) {
// Handle the selected date and time here. // Handle the selected date and time here.
if (selectedTime != null) { if (selectedTime != null) {
DateTime selectedDateTime = DateTime( DateTime selectedDateTime = DateTime(selectedDate.year, selectedDate.month, selectedDate.day, selectedTime.hour, selectedTime.minute);
selectedDate.year,
selectedDate.month,
selectedDate.day,
selectedTime.hour,
selectedTime.minute,
);
if (requestDetailProvider.activityMaintenanceHelperModel!.startTime != null && if (requestDetailProvider.activityMaintenanceHelperModel!.startTime != null &&
selectedDateTime.isBefore(requestDetailProvider.activityMaintenanceHelperModel!.startTime!)) { selectedDateTime.isBefore(requestDetailProvider.activityMaintenanceHelperModel!.startTime!)) {
"End Date time must be greater then start date".showToast; "End Date time must be greater then start date".showToast;
@ -260,7 +247,7 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
], ],
), ),
).toShadowContainer(context).paddingOnly(start: 13, end: 14, top: 12), ).toShadowContainer(context).paddingOnly(start: 13, end: 14, top: 12),
const AssistantEmployeeCard().toShadowContainer(context, paddingValue: const EdgeInsets.symmetric(horizontal: 16)).paddingOnly(start: 13, end: 14, top: 12), const AssistantEmployeeCard().paddingOnly(start: 13, end: 14, top: 12),
100.height, 100.height,
], ],
), ),
@ -348,6 +335,7 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
requestDetailProvider.activityMaintenanceHelperModel!.workingHour = hours; requestDetailProvider.activityMaintenanceHelperModel!.workingHour = hours;
} }
} }
Future<bool> validate({required ActivityMaintenanceHelperModel model}) async { Future<bool> validate({required ActivityMaintenanceHelperModel model}) async {
if (model.activityStatus == null) { if (model.activityStatus == null) {
Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.activityStatus}"); Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.activityStatus}");
@ -369,5 +357,4 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
return true; return true;
} }
} }

@ -168,8 +168,8 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
color: context.isDark ? AppColor.neutral50 : AppColor.neutral30, color: context.isDark ? AppColor.neutral50 : AppColor.neutral30,
shape: const RoundedRectangleBorder( shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(20), bottomLeft: Radius.circular(14),
bottomRight: Radius.circular(20), bottomRight: Radius.circular(14),
), ),
), ),
), ),

Loading…
Cancel
Save