From c612e11dfe1fd4e8a864fdd4bf5d9ba518951718 Mon Sep 17 00:00:00 2001 From: "pratibha.chaudhary" Date: Fri, 7 Feb 2025 16:30:06 +0530 Subject: [PATCH] Dropdown changes and fix filter issue in payment and manage screen --- lib/components/common/custom_drop_down.dart | 402 ++---------------- lib/components/common/drop_down_ctrl.dart | 16 + lib/components/common/drop_down_feild.dart | 51 +++ .../admin/user_management/manage_user.dart | 112 +++-- .../dashboard/controller/dashboard_ctrl.dart | 1 + .../payment_view/payment_view_screen.dart | 118 +++-- .../sub_views/invoice_management_screen.dart | 2 +- 7 files changed, 276 insertions(+), 426 deletions(-) create mode 100644 lib/components/common/drop_down_ctrl.dart create mode 100644 lib/components/common/drop_down_feild.dart diff --git a/lib/components/common/custom_drop_down.dart b/lib/components/common/custom_drop_down.dart index eadff8e..e90345a 100644 --- a/lib/components/common/custom_drop_down.dart +++ b/lib/components/common/custom_drop_down.dart @@ -1,6 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:get/get.dart'; - import 'package:shayog/components/styles/app_colors.dart'; import 'package:shayog/components/styles/textStyles.dart'; @@ -8,7 +6,8 @@ class CustomDropdown extends StatefulWidget { final List items; final String Function(T) itemLabel; final Function(T?) onSelected; - final String hintText; + VoidCallback? onTap; + late final String hintText; final bool enableSearch; final double? width; final EdgeInsetsGeometry padding; @@ -18,8 +17,9 @@ class CustomDropdown extends StatefulWidget { final Color? borderClr; final Color? backClr; final String? Function(T?)? validator; + Widget? icon; - const CustomDropdown({ + CustomDropdown({ super.key, required this.items, required this.itemLabel, @@ -34,6 +34,8 @@ class CustomDropdown extends StatefulWidget { this.borderClr, this.backClr, this.validator, + this.onTap, + this.icon, }); @override @@ -77,8 +79,6 @@ class _CustomDropdownState extends State> { }); } - - void _selectItem(T item) { setState(() { selectedItem = item; @@ -98,7 +98,13 @@ class _CustomDropdownState extends State> { _openDropdown(); } } + void clearField() { + setState(() { + selectedItem = null; // Clear the selected item + }); + _openDropdown(); + } void _openDropdown() { setState(() { isSearching = false; @@ -198,6 +204,7 @@ class _CustomDropdownState extends State> { style: 11.txtSBoldGrey, ), ), + // onTap: widget.onTap, onTap: () => _selectItem(item), ); }, @@ -226,30 +233,9 @@ class _CustomDropdownState extends State> { overlayEntry!.markNeedsBuild(); } } - // String? validateAndGetErrorText() { - // setState(() { - // _errorText = widget.validator?.call(selectedItem); - // }); - // return _errorText; - // } - String? validateAndGetErrorText() { - setState(() { - _errorText = selectedItem == null ? "This field is required" : null; - }); - return _errorText; - } - void _onDropdownTap() { - if (selectedItem == null) { - setState(() { - _errorText = "Please select an item."; - }); - } else { - setState(() { - _errorText = null; - }); - } - _toggleDropdown(); - } + + + @override Widget build(BuildContext context) { return Column( @@ -258,7 +244,7 @@ class _CustomDropdownState extends State> { CompositedTransformTarget( link: layerLink, child: GestureDetector( - onTap: _toggleDropdown, + onTap: _toggleDropdown, child: Container( padding: EdgeInsets.symmetric( vertical: widget.isHeight ? 12 : 6.4, horizontal: 16), @@ -277,338 +263,38 @@ class _CustomDropdownState extends State> { Expanded( child: Text( widget.hintText, - // selectedItem != null - // ? widget.itemLabel(selectedItem as T) - // : widget.hintText, + + // selectedItem == null ? widget.hintText : widget.itemLabel(selectedItem as T), + + style: 11.txtSBoldGrey, overflow: TextOverflow.ellipsis, ), - // Text( - // selectedItem != null - // ? widget.itemLabel(selectedItem as T) - // : widget.hintText, - // style: 12.txtSBoldGrey, - // overflow: TextOverflow.ellipsis, - // ), + ), - const Icon( - Icons.keyboard_arrow_down_outlined, - size: 20, - color: Colors.black, - ), - ], - ), - ), - ), - ), - if (_errorText != null) - Padding( - padding: const EdgeInsets.only(top: 8.0), - child: Text( - _errorText!, - style: TextStyle( - color: Colors.red, - fontSize: 12, - ), - ), - ) - ], - ); - } -} - - -class CustomDrop extends StatefulWidget { - final List items; - final String Function(T) itemLabel; - final Function(T?) onSelected; - final RxString hintText; - final bool enableSearch; - final double? width; - final EdgeInsetsGeometry padding; - final T? initialValue; - final bool showError; - final bool isHeight; - final Color? borderClr; - final Color? backClr; - final String? Function(T?)? validator; - - const CustomDrop({ - super.key, - required this.items, - required this.itemLabel, - required this.onSelected, - required this.hintText, - this.enableSearch = true, - this.width, - this.padding = const EdgeInsets.all(8.0), - this.initialValue, - this.showError = false, - this.isHeight = false, - this.borderClr, - this.backClr, - this.validator, - }); - - @override - _CustomDropdownState createState() => _CustomDropdownState(); -} - -class _CustomDropState extends State> { - T? selectedItem; - String? _errorText; - List filteredItems = []; - late TextEditingController searchController; - OverlayEntry? overlayEntry; - final LayerLink layerLink = LayerLink(); - bool isDropdownOpen = false; - bool isSearching = false; - final dropdownKey = GlobalKey<_CustomDropdownState>(); - - @override - void initState() { - super.initState(); - searchController = TextEditingController(); - filteredItems = List.from(widget.items); - - if (widget.initialValue != null) { - selectedItem = widget.initialValue; - } - - searchController.addListener(() { - final text = searchController.text; - if (text.isEmpty) { - setState(() { - isSearching = false; - filteredItems = List.from(widget.items); - }); - } else { - setState(() { - isSearching = true; - _filterList(text); - }); - } - }); - } - - - - void _selectItem(T item) { - setState(() { - selectedItem = item; - isDropdownOpen = false; - _errorText = null; // Clear error when an item is selected - }); - searchController.clear(); - widget.onSelected(item); - _closeDropdown(); - filteredItems = List.from(widget.items); - } - - void _toggleDropdown() { - if (isDropdownOpen) { - _closeDropdown(); - } else { - _openDropdown(); - } - } - - void _openDropdown() { - setState(() { - isSearching = false; - filteredItems = List.from(widget.items); - searchController.clear(); - }); - - overlayEntry = _createOverlayEntry(); - Overlay.of(context).insert(overlayEntry!); - - setState(() { - isDropdownOpen = true; - }); - } - - void _closeDropdown() { - overlayEntry?.remove(); - overlayEntry = null; - setState(() { - isDropdownOpen = false; - }); - } - - OverlayEntry _createOverlayEntry() { - final RenderBox renderBox = context.findRenderObject() as RenderBox; - - return OverlayEntry( - builder: (context) { - return GestureDetector( - behavior: HitTestBehavior.opaque, - onTap: _closeDropdown, - child: Stack( - children: [ - Positioned( - width: widget.width ?? 250, - child: CompositedTransformFollower( - link: layerLink, - showWhenUnlinked: false, - offset: Offset(0, renderBox.size.height + 5), - child: Material( - elevation: 4, - borderRadius: BorderRadius.circular(8), - child: Container( - padding: EdgeInsets.all(8.0), - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(8), - border: Border.all( - color: Colors.grey, - width: 1, - ), - ), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - if (widget.enableSearch && widget.items.length > 1) - Padding( - padding: const EdgeInsets.only(bottom: 8.0), - child: SizedBox( - height: 32, - child: TextFormField( - // validator: widget.validator, - enabled: widget.enableSearch, - controller: searchController, - style: 12.txtSBoldGrey, - autovalidateMode: - AutovalidateMode.onUserInteraction, - decoration: InputDecoration( - hintText: 'Search...', - contentPadding: const EdgeInsets.symmetric( - vertical: 8.0, - horizontal: 12.0, - ), - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(8), - ), - ), - ), - ), - ), - Container( - constraints: BoxConstraints(maxHeight: 200), - child: ListView.builder( - shrinkWrap: true, - itemCount: filteredItems.length, - itemBuilder: (context, index) { - final item = filteredItems[index]; - return ListTile( - contentPadding: EdgeInsets.all(0), - minVerticalPadding: 0, - dense: true, - visualDensity: VisualDensity.compact, - title: Tooltip( - message: widget.itemLabel(item), - child: Text( - widget.itemLabel(item), - style: 11.txtSBoldGrey, - ), - ), - onTap: () => _selectItem(item), - ); - }, - ), + // selectedItem != null + // ? InkWell( + // onTap: (){ + // setState(() { + // + // selectedItem = null; + // + // }); + // + // _openDropdown(); + // }, + // + // child: + // Icon(Icons.close, size: 14, color: Colors.black)) + // : + widget.icon ?? InkWell( + onTap: _toggleDropdown, + child: Icon( + Icons.keyboard_arrow_down_outlined, + size: 20, + color: Colors.black, ), - ], - ), - ), - ), - ), - ), - ], - ), - ); - }, - ); - } - - void _filterList(String query) { - filteredItems = widget.items - .where((item) => - widget.itemLabel(item).toLowerCase().contains(query.toLowerCase())) - .toList(); - - if (overlayEntry != null) { - overlayEntry!.markNeedsBuild(); - } - } - // String? validateAndGetErrorText() { - // setState(() { - // _errorText = widget.validator?.call(selectedItem); - // }); - // return _errorText; - // } - String? validateAndGetErrorText() { - setState(() { - _errorText = selectedItem == null ? "This field is required" : null; - }); - return _errorText; - } - void _onDropdownTap() { - if (selectedItem == null) { - setState(() { - _errorText = "Please select an item."; - }); - } else { - setState(() { - _errorText = null; - }); - } - _toggleDropdown(); - } - @override - Widget build(BuildContext context) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - CompositedTransformTarget( - link: layerLink, - child: GestureDetector( - onTap: _toggleDropdown, - child: Container( - padding: EdgeInsets.symmetric( - vertical: widget.isHeight ? 12 : 6.4, horizontal: 16), - decoration: BoxDecoration( - color: widget.backClr ?? AppColors.white, - border: Border.all( - color: widget.borderClr ?? Colors.transparent, - width: 1, - ), - borderRadius: BorderRadius.circular(2), - ), - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Expanded( - child: Text( - selectedItem != null - ? widget.itemLabel(selectedItem as T) - : widget.hintText.value, - style: 11.txtSBoldGrey, - overflow: TextOverflow.ellipsis, - ), - // Text( - // selectedItem != null - // ? widget.itemLabel(selectedItem as T) - // : widget.hintText, - // style: 12.txtSBoldGrey, - // overflow: TextOverflow.ellipsis, - // ), - ), - const Icon( - Icons.keyboard_arrow_down_outlined, - size: 20, - color: Colors.black, - ), + ), ], ), ), diff --git a/lib/components/common/drop_down_ctrl.dart b/lib/components/common/drop_down_ctrl.dart new file mode 100644 index 0000000..c6bcaa8 --- /dev/null +++ b/lib/components/common/drop_down_ctrl.dart @@ -0,0 +1,16 @@ +import 'package:get/get.dart'; + +class DropdownController extends GetxController { + // Observable selected item + var selectedItem = Rxn(); // Replace `String` with your actual type if necessary + + // Set the selected value + void selectItem(String item) { + selectedItem.value = item; + } + + // Clear the selected value + void clearSelection() { + selectedItem.value = null; + } +} diff --git a/lib/components/common/drop_down_feild.dart b/lib/components/common/drop_down_feild.dart new file mode 100644 index 0000000..7b14c4c --- /dev/null +++ b/lib/components/common/drop_down_feild.dart @@ -0,0 +1,51 @@ +// import 'package:flutter/material.dart'; +// import 'package:get/get.dart'; +// +// import 'drop_down_ctrl.dart'; +// +// class Customdown extends StatelessWidget { +// // Instantiate the controller using Get.put() to make it accessible across the app +// final DropdownController dropdownController = Get.put(DropdownController()); +// +// @override +// Widget build(BuildContext context) { +// +// +// return Obx( +// () { +// return GestureDetector( +// onTap: () async { +// // Open the custom dropdown menu on tap +// String? selectedItem = await showMenu( +// context: context, +// position: RelativeRect.fromLTRB(100.0, 100.0, 100.0, 100.0), +// items: dropdownController.items +// .map((String value) { +// return PopupMenuItem( +// value: value, +// child: Text(value), +// ); +// }) +// .toList(), +// ); +// // Update the selected value using GetX when the user selects an item +// if (selectedItem != null) { +// dropdownController.updateValue(selectedItem); +// } +// }, +// child: Container( +// padding: EdgeInsets.symmetric(horizontal: 20, vertical: 10), +// decoration: BoxDecoration( +// border: Border.all(color: Colors.blue), +// borderRadius: BorderRadius.circular(5), +// ), +// child: Text( +// dropdownController.selectedValue.value, // Reactive update +// style: TextStyle(fontSize: 18, color: Colors.black), +// ), +// ), +// ); +// }, +// ); +// } +// } \ No newline at end of file diff --git a/lib/feature/presentation/screens/admin/user_management/manage_user.dart b/lib/feature/presentation/screens/admin/user_management/manage_user.dart index fce832c..c4b4ba7 100644 --- a/lib/feature/presentation/screens/admin/user_management/manage_user.dart +++ b/lib/feature/presentation/screens/admin/user_management/manage_user.dart @@ -6,6 +6,7 @@ import '../../../../../components/common/common_btn.dart'; import '../../../../../components/common/common_button.dart'; import '../../../../../components/common/custom_drop_down.dart'; import '../../../../../components/common/data_cell.dart'; + import '../../../../../components/styles/app_colors.dart'; import '../../../../../components/styles/app_strings.dart'; import '../../../widgets/custom_pagination.dart'; @@ -43,19 +44,29 @@ class ManageUser extends StatelessWidget { text: "User Name", ), SizedBox(height: 4), - GetX( - builder: (ctrl) { - return CustomDropdown( - backClr: AppColors.clrD9, - borderClr: AppColors.clrGrey, - items: ctrl.userNames, - itemLabel: (item) => item, - onSelected: (selected) { - ctrl.selectUser.value = selected; - }, - hintText: ctrl.selectUser.value); - }, - ), + CustomDropdown( + icon: controller.selectUser.value == + "Select User Name" + ?Icon( + Icons.keyboard_arrow_down_outlined, + size: 20, + color: Colors.black, + ) : GestureDetector( + onTap: () { + controller.selectUser.value = + "Select User Name"; + }, + child: Icon(Icons.close,size: 14)), + + backClr: AppColors.clrD9, + borderClr: AppColors.clrGrey, + items: controller.userNames, + itemLabel: (item) => item, + onSelected: (selected) { + controller.selectUser.value = + selected ?? ""; + }, + hintText: controller.selectUser.value), ], )), SizedBox(width: 16), @@ -68,19 +79,27 @@ class ManageUser extends StatelessWidget { text: "User Type", ), SizedBox(height: 8), - GetX( - builder: (controller) { - return CustomDropdown( - backClr: AppColors.clrD9, - borderClr: AppColors.clrGrey, - items: controller.userTypesNames, - itemLabel: (item) => item, - onSelected: (selected) { - controller.selectType.value = selected; + CustomDropdown( + icon: controller.selectType.value == + "Select UserType" + ?Icon( + Icons.keyboard_arrow_down_outlined, + size: 20, + color: Colors.black, + ) : GestureDetector( + onTap: () { + controller.selectType.value = + "Select UserType"; }, - hintText: controller.selectType.value); - }, - ), + child: Icon(Icons.close,size: 14)), + backClr: AppColors.clrD9, + borderClr: AppColors.clrGrey, + items: controller.userTypesNames, + itemLabel: (item) => item, + onSelected: (selected) { + controller.selectType.value = selected; + }, + hintText: controller.selectType.value), ], )), SizedBox(width: 16), @@ -94,13 +113,24 @@ class ManageUser extends StatelessWidget { ), SizedBox(height: 8), CustomDropdown( + icon: controller.selectEmail.value == + "Select Email" + ?Icon( + Icons.keyboard_arrow_down_outlined, + size: 20, + color: Colors.black, + ) : GestureDetector( + onTap: () { + controller.selectEmail.value = + "Select Email"; + }, + child: Icon(Icons.close,size: 14)), backClr: AppColors.clrD9, borderClr: AppColors.clrGrey, items: controller.userEmail, itemLabel: (item) => item, onSelected: (selected) { controller.selectEmail.value = selected; - }, hintText: controller.selectEmail.value), ], @@ -120,6 +150,18 @@ class ManageUser extends StatelessWidget { ), SizedBox(height: 8), CustomDropdown( + icon: controller.selectCode.value == + "Select Employee Code" + ?Icon( + Icons.keyboard_arrow_down_outlined, + size: 20, + color: Colors.black, + ) : GestureDetector( + onTap: () { + controller.selectCode.value = + "Select Employee Code"; + }, + child: Icon(Icons.close,size: 14)), backClr: AppColors.clrD9, borderClr: AppColors.clrGrey, items: controller.userEmpCode, @@ -141,7 +183,18 @@ class ManageUser extends StatelessWidget { ), SizedBox(height: 8), CustomDropdown( - + icon: controller.selectUserStatus.value == + "Select Status" + ?Icon( + Icons.keyboard_arrow_down_outlined, + size: 20, + color: Colors.black, + ) : GestureDetector( + onTap: () { + controller.selectUserStatus.value = + "Select Status"; + }, + child: Icon(Icons.close,size: 14)), backClr: AppColors.clrD9, borderClr: AppColors.clrGrey, items: controller.userStatus, @@ -179,7 +232,6 @@ class ManageUser extends StatelessWidget { text: AppStrings.submit, textStyle: 14.txtSBoldWhite, clickAction: () { - //controller.isSelected.value = false; controller.getManageUser(); controller.getAllUser(); }, @@ -211,7 +263,7 @@ class ManageUser extends StatelessWidget { decoration: BoxDecoration(border: Border.all(color: AppColors.clrGrey)), child: RawScrollbar( - thumbColor: AppColors.clrD9, + thumbColor: AppColors.primaryClr.withOpacity(0.4), radius: Radius.circular(2), trackVisibility: true, thumbVisibility: true, @@ -220,7 +272,7 @@ class ManageUser extends StatelessWidget { child: SingleChildScrollView( controller: controller.verticalScrollController, child: RawScrollbar( - thumbColor: AppColors.clrD9, + thumbColor: AppColors.primaryClr.withOpacity(0.4), radius: Radius.circular(2), thickness: 14, trackVisibility: true, diff --git a/lib/feature/presentation/screens/dashboard/controller/dashboard_ctrl.dart b/lib/feature/presentation/screens/dashboard/controller/dashboard_ctrl.dart index fa30ee4..bf75976 100644 --- a/lib/feature/presentation/screens/dashboard/controller/dashboard_ctrl.dart +++ b/lib/feature/presentation/screens/dashboard/controller/dashboard_ctrl.dart @@ -111,6 +111,7 @@ class DashboardCtrl extends GetxController { RxList getAllUserMain = [].obs; RxInt limit = 20.obs; var userLoading = false.obs; + var changeColor = false.obs; setNextPage() { if (currentPage.value < totalPages.value.toInt()) { diff --git a/lib/feature/presentation/screens/transporter/invoice_management/payment_view/payment_view_screen.dart b/lib/feature/presentation/screens/transporter/invoice_management/payment_view/payment_view_screen.dart index 686c20b..e71bef3 100644 --- a/lib/feature/presentation/screens/transporter/invoice_management/payment_view/payment_view_screen.dart +++ b/lib/feature/presentation/screens/transporter/invoice_management/payment_view/payment_view_screen.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:intl/intl.dart'; import 'package:shayog/components/common/input_field.dart'; import 'package:shayog/components/styles/textStyles.dart'; import 'package:shayog/feature/presentation/screens/transporter/invoice_management/payment_view/ctrl/payment_view_ctrl.dart'; @@ -27,7 +28,7 @@ class PaymentView extends StatelessWidget { () => controller.isPaymentFilter.value ? Container( padding: const EdgeInsets.only( - left: 16.0, top: 8, right: 16, bottom: 16), + left: 16.0, top: 8, right: 16), color: AppColors.clrF2, child: Column( mainAxisAlignment: MainAxisAlignment.start, @@ -42,17 +43,68 @@ class PaymentView extends StatelessWidget { children: [ TextView(text: "Plant"), SizedBox(height: 8), - CustomDropdown( + + CustomDropdown( + icon: paymentCtrl.selectedPlant.value == + "Select Plant" + ? Icon( + Icons.keyboard_arrow_down_outlined, + size: 20, + color: Colors.black, + ) : GestureDetector( + onTap: () { + paymentCtrl.selectedPlant.value = + "Select Plant"; + }, + child: Icon(Icons.close,size: 14)), + + backClr: AppColors.clrD9, + borderClr: AppColors.clrGrey, + items: paymentCtrl.plant, + itemLabel: (item) => + "${item.plantCode} - ${item.plantDesc}", + onSelected: (selected) { + paymentCtrl.selectedPlant.value = + "${selected?.plantCode} - ${selected?.plantDesc}"; + }, + hintText: paymentCtrl.selectedPlant.value, + ), + + ], + ), + ), + SizedBox(width: 16), + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TextView(text: "Product"), + SizedBox(height: 8), + CustomDropdown( + icon: paymentCtrl.selectedProduct.value == + "Select Product Name" + ? Icon( + Icons.keyboard_arrow_down_outlined, + size: 20, + color: Colors.black, + ) : GestureDetector( + onTap: () { + paymentCtrl.selectedProduct.value = + "Select Product Name"; + }, + child: Icon(Icons.close,size: 14)), + width: 250, backClr: AppColors.clrD9, borderClr: AppColors.clrGrey, - items: paymentCtrl.plant, + items: paymentCtrl.product, itemLabel: (item) => - "${item.plantCode}-${item.plantDesc}", + "${item.materialCode} - ${item.materialDescription}", onSelected: (selected) { - paymentCtrl.selectedPlant.value = - "${selected?.plantCode}-${selected?.plantDesc}"; + paymentCtrl.selectedProduct.value = + "${selected.materialCode} - ${selected.materialDescription}"; }, - hintText: paymentCtrl.selectedPlant.value, + hintText: paymentCtrl.selectedProduct.value, ), ], ), @@ -66,11 +118,22 @@ class PaymentView extends StatelessWidget { TextView(text: "Freight Bill No."), SizedBox(height: 8), CustomDropdown( + icon: paymentCtrl.selectedFreightBill.value == + "Select Bill No." + ? Icon( + Icons.keyboard_arrow_down_outlined, + size: 20, + color: Colors.black, + ) : GestureDetector( + onTap: () { + paymentCtrl.selectedFreightBill.value = + "Select Bill No."; + }, + child: Icon(Icons.close,size: 14)), backClr: AppColors.clrD9, borderClr: AppColors.clrGrey, items: paymentCtrl.freightBill, itemLabel: (item) => item, - onSelected: (selected) { paymentCtrl.selectedFreightBill.value = selected.toString(); @@ -81,30 +144,7 @@ class PaymentView extends StatelessWidget { ], ), ), - SizedBox(width: 16), - Expanded( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - TextView(text: "Product"), - SizedBox(height: 8), - CustomDropdown( - width: 250, - backClr: AppColors.clrD9, - borderClr: AppColors.clrGrey, - items: paymentCtrl.product, - itemLabel: (item) => - "${item.materialCode}-${item.materialDescription}", - onSelected: (selected) { - paymentCtrl.selectedProduct.value = - "${selected.materialCode}-${selected.materialDescription}"; - }, - hintText: paymentCtrl.selectedProduct.value, - ), - ], - ), - ), + ], ), SizedBox(height: 12), @@ -189,11 +229,10 @@ class PaymentView extends StatelessWidget { ? CircularProgressIndicator() : Container( margin: EdgeInsets.only(bottom: 16, top: 8), - // height: MediaQuery.of(context).size.height * 0.4, - decoration: BoxDecoration( + decoration: BoxDecoration( border: Border.all(color: AppColors.clrGrey)), child: RawScrollbar( - thumbColor: AppColors.clrD9, + thumbColor: AppColors.primaryClr.withOpacity(0.4), radius: Radius.circular(2), trackVisibility: true, thumbVisibility: true, @@ -202,7 +241,7 @@ class PaymentView extends StatelessWidget { child: SingleChildScrollView( controller: paymentCtrl.verticalScrollController, child: RawScrollbar( - thumbColor: AppColors.clrD9, + thumbColor: AppColors.primaryClr.withOpacity(0.4), radius: Radius.circular(2), thickness: 14, trackVisibility: true, @@ -274,8 +313,13 @@ class PaymentView extends StatelessWidget { index, "${stoppage.materialCode}"), editableCell( index, "${stoppage.freightbillCode}"), + editableCell( - index, "${stoppage.lastUpdatedOn}"), + index, + DateFormat('yyyy - MMM dd').format( + DateTime.parse(stoppage + .lastUpdatedOn + .toString()))), editableCell( index, "${stoppage.shipmentNetQty}"), diff --git a/lib/feature/presentation/screens/transporter/view/sub_views/invoice_management_screen.dart b/lib/feature/presentation/screens/transporter/view/sub_views/invoice_management_screen.dart index 9f65620..54adec4 100644 --- a/lib/feature/presentation/screens/transporter/view/sub_views/invoice_management_screen.dart +++ b/lib/feature/presentation/screens/transporter/view/sub_views/invoice_management_screen.dart @@ -27,7 +27,7 @@ class _TransportViewState extends State { return Column( children: [ Container( - margin: EdgeInsets.symmetric(horizontal: 16, vertical: 8), + margin: EdgeInsets.symmetric(horizontal: 16), height: 50, color: AppColors.primaryClr, child: Row(