From ecacd2ec8fa75c34f05255a4d75ff71fb588bdd7 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 13 Nov 2023 15:23:11 +0300 Subject: [PATCH] request list added on my requests. --- lib/l10n/app_en.arb | 26 +++++---- .../my_request/my_requests_page.dart | 57 ++++++++++++++++++- .../widgets/request_item_view_list.dart | 52 +++++++++-------- .../equipment/single_device_picker.dart | 4 +- 4 files changed, 97 insertions(+), 42 deletions(-) diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index aa168e16..6cb41f2c 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -350,16 +350,18 @@ "item" : "Item", "measuredValue": "Measured Value", "overdue": "Overdue", - "sureExit" : "Are you sure ypu want to Exit? ", - "daily" : "Daily", - "weekly" : "Weekly", - "monthly" : "Monthly", - "myShift" : "My Shift", - "myTeamRequest" : "My Team Request", - "sunToThurs": "Sunday to Thursday", - "requestGasRefill" : "Request Gas Refill", - "trackGasRefill" : "Track Gas Refill", - "trackAssetTransfer" : "Track Asset Transfer", - "total" : "Total", - "noDataFound" : "No Data Found" + "sureExit" : "Are you sure ypu want to Exit? ", + "daily" : "Daily", + "weekly" : "Weekly", + "monthly" : "Monthly", + "myShift" : "My Shift", + "myTeamRequest" : "My Team Request", + "sunToThurs": "Sunday to Thursday", + "requestGasRefill" : "Request Gas Refill", + "trackGasRefill" : "Track Gas Refill", + "trackAssetTransfer" : "Track Asset Transfer", + "deviceTransferRequest" : "Device Transfer Requests", + "total" : "Total", + "noDataFound" : "No Data Found", + "allRequests" : "All Requests" } \ No newline at end of file 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 04c5d95d..fc4479f3 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 @@ -6,6 +6,7 @@ import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/search_all_requests_model.dart'; +import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/pages/land_page/my_request/all_requests_filter_page.dart'; import 'package:test_sa/new_views/pages/land_page/my_request/all_requests_search_page.dart'; import 'package:test_sa/new_views/pages/land_page/widgets/request_item_view_list.dart'; @@ -21,9 +22,20 @@ class _MyRequestsPageState extends State { AllRequestsProvider _provider; SearchAllRequestsModel _search; + List requestsList; + int selectedRequest; + @override Widget build(BuildContext context) { if (_provider == null) { + requestsList = [ + context.translation.allRequests, + context.translation.serviceRequest, + context.translation.gasRefillRequest, + context.translation.deviceTransferRequest, + context.translation.preventiveMaintenance, + ]; + selectedRequest = 0; _provider = Provider.of(context, listen: false); _provider.getAllRequests(); } @@ -78,8 +90,47 @@ class _MyRequestsPageState extends State { ], ).paddingOnly(start: 16, end: 16), ), - body: Consumer(builder: (context, snapshot, _) { - return RequestItemViewList(snapshot.allRequestsAndCount?.requestsDetails ?? [], snapshot.isAllLoading); - })); + body: Column( + children: [ + SizedBox( + height: 34 + 16.0, + child: ListView.separated( + scrollDirection: Axis.horizontal, + padding: const EdgeInsets.only(top: 16, right: 16, left: 16), + itemBuilder: (cxt, index) => Container( + alignment: Alignment.center, + padding: const EdgeInsets.symmetric(horizontal: 8), + decoration: ShapeDecoration( + color: selectedRequest == index ? const Color(0xFFEAF1F4) : Colors.white, + shape: RoundedRectangleBorder( + side: BorderSide(width: 1, color: selectedRequest == index ? Color(0xFF4A8DB7) : Colors.white), + borderRadius: BorderRadius.circular(7), + ), + shadows: const [ + BoxShadow( + color: Color(0x07000000), + blurRadius: 14, + offset: Offset(0, 0), + spreadRadius: 0, + ) + ], + ), + child: Text(requestsList[index], style: AppTextStyles.bodyText2.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50, height: 1)), + ).onPress(() { + if (selectedRequest != index) { + setState(() { + selectedRequest = index; + }); + _provider.getAllRequests(typeTransaction: selectedRequest == 0 ? null : selectedRequest); + } + }), + separatorBuilder: (cxt, index) => 8.width, + itemCount: requestsList.length), + ), + Consumer(builder: (context, snapshot, _) { + return RequestItemViewList(snapshot.allRequestsAndCount?.requestsDetails ?? [], snapshot.isAllLoading); + }).expanded, + ], + )); } } diff --git a/lib/new_views/pages/land_page/widgets/request_item_view_list.dart b/lib/new_views/pages/land_page/widgets/request_item_view_list.dart index 3f2ab25e..a0930fc4 100644 --- a/lib/new_views/pages/land_page/widgets/request_item_view_list.dart +++ b/lib/new_views/pages/land_page/widgets/request_item_view_list.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/all_requests_and_count_model.dart'; @@ -6,6 +7,7 @@ import 'package:test_sa/new_views/pages/land_page/requests/asset_item_view.dart' import 'package:test_sa/new_views/pages/land_page/requests/gas_refill_item_view.dart'; import 'package:test_sa/new_views/pages/land_page/requests/ppm_item_view.dart'; import 'package:test_sa/new_views/pages/land_page/requests/service_request_item_view.dart'; +import 'package:test_sa/views/widgets/loaders/no_item_found.dart'; class RequestItemViewList extends StatelessWidget { List list; @@ -15,30 +17,32 @@ class RequestItemViewList extends StatelessWidget { @override Widget build(BuildContext context) { - return ListView.separated( - padding: const EdgeInsets.all(16), - itemBuilder: (cxt, index) { - if (isLoading) return SizedBox().toRequestShimmer(cxt, isLoading); - bool isServiceRequest = list[index].nameOfType == "ServiceRequest"; - bool isGasRefill = list[index].nameOfType == "GasRefill"; - bool isAssetTransfer = list[index].nameOfType == "AssetTransfer"; - bool isPPMs = list[index].nameOfType == "PPMs"; + return (list?.isEmpty ?? true) + ? NoItemFound(message: context.translation.noDataFound) + : ListView.separated( + padding: const EdgeInsets.all(16), + itemBuilder: (cxt, index) { + if (isLoading) return SizedBox().toRequestShimmer(cxt, isLoading); + bool isServiceRequest = list[index].nameOfType == "ServiceRequest"; + bool isGasRefill = list[index].nameOfType == "GasRefill"; + bool isAssetTransfer = list[index].nameOfType == "AssetTransfer"; + bool isPPMs = list[index].nameOfType == "PPMs"; - return isServiceRequest - ? ServiceRequestItemView(list[index]) - : isGasRefill - ? GasRefillItemView(list[index]) - : isPPMs - ? PpmItemView(list[index]) - : isAssetTransfer - ? AssetItemView(list[index]) - : Container( - height: 100, - width: double.infinity, - color: Colors.grey, - ); - }, - separatorBuilder: (cxt, index) => 8.height, - itemCount: isLoading ? 6 : list.length); + return isServiceRequest + ? ServiceRequestItemView(list[index]) + : isGasRefill + ? GasRefillItemView(list[index]) + : isPPMs + ? PpmItemView(list[index]) + : isAssetTransfer + ? AssetItemView(list[index]) + : Container( + height: 100, + width: double.infinity, + color: Colors.grey, + ); + }, + separatorBuilder: (cxt, index) => 8.height, + itemCount: isLoading ? 6 : list.length); } } diff --git a/lib/views/widgets/equipment/single_device_picker.dart b/lib/views/widgets/equipment/single_device_picker.dart index dbff8e47..2649cd5c 100644 --- a/lib/views/widgets/equipment/single_device_picker.dart +++ b/lib/views/widgets/equipment/single_device_picker.dart @@ -152,9 +152,7 @@ class _SingleDevicePickerState extends State { children: [ Expanded( child: _searchableList.isEmpty - ? NoItemFound( - message: context.translation.noDeviceFound, - ) + ? NoItemFound(message: context.translation.noDeviceFound) : LazyLoading( nextPage: _devicesProvider.nextPage, onLazyLoad: () async {