From fc72d3562daee3083d20fd21774c700ca888ed47 Mon Sep 17 00:00:00 2001 From: Manish Date: Thu, 20 Nov 2025 11:57:13 +0530 Subject: [PATCH] advance paymen --- lib/view/finance/advance_payment_screen.dart | 72 ++++++++++++-------- 1 file changed, 44 insertions(+), 28 deletions(-) diff --git a/lib/view/finance/advance_payment_screen.dart b/lib/view/finance/advance_payment_screen.dart index 8e334ca..abff416 100644 --- a/lib/view/finance/advance_payment_screen.dart +++ b/lib/view/finance/advance_payment_screen.dart @@ -35,8 +35,8 @@ class _AdvancePaymentScreenState extends State } }); - controller.searchQuery.listen((q) { - if (_searchCtrl.text != q) _searchCtrl.text = q; + _searchCtrl.addListener(() { + controller.searchQuery.value = _searchCtrl.text.trim(); }); } @@ -58,19 +58,25 @@ class _AdvancePaymentScreenState extends State final bool isLandscape = constraints.maxWidth > constraints.maxHeight; - return GestureDetector( - onTap: () => FocusScope.of(context).unfocus(), - child: RefreshIndicator( - onRefresh: () async { - final emp = controller.selectedEmployee.value; - if (emp != null) { - await controller.fetchAdvancePayments(emp.id.toString()); + return RefreshIndicator( + onRefresh: () async { + final emp = controller.selectedEmployee.value; + if (emp != null) { + await controller.fetchAdvancePayments(emp.id.toString()); + } + }, + color: Colors.white, + backgroundColor: contentTheme.primary, + strokeWidth: 2.5, + displacement: 60, + child: GestureDetector( + behavior: HitTestBehavior.translucent, + onTap: () { + FocusScopeNode currentFocus = FocusScope.of(context); + if (!currentFocus.hasPrimaryFocus) { + currentFocus.unfocus(); } }, - color: Colors.white, - backgroundColor: contentTheme.primary, - strokeWidth: 2.5, - displacement: 60, // ---------------- PORTRAIT (UNCHANGED) ---------------- child: !isLandscape @@ -195,7 +201,13 @@ class _AdvancePaymentScreenState extends State child: TextField( controller: _searchCtrl, focusNode: _searchFocus, - onChanged: (v) => controller.searchQuery.value = v.trim(), + onTap: () { + Future.delayed(const Duration(milliseconds: 50), () { + if (mounted) { + FocusScope.of(context).requestFocus(_searchFocus); + } + }); + }, decoration: InputDecoration( contentPadding: const EdgeInsets.symmetric(horizontal: 12, vertical: 0), @@ -269,8 +281,12 @@ class _AdvancePaymentScreenState extends State return InkWell( onTap: () { controller.selectEmployee(e); - _searchCtrl.text = e.name; - controller.searchQuery.value = e.name; + _searchCtrl + ..text = e.name + ..selection = TextSelection.fromPosition( + TextPosition(offset: e.name.length), + ); + FocusScope.of(context).unfocus(); SystemChannels.textInput.invokeMethod('TextInput.hide'); controller.employees.clear(); @@ -397,8 +413,8 @@ class _AdvancePaymentScreenState extends State ? DateFormat('dd MMM yyyy').format(parsedDate) : (dateStr.isNotEmpty ? dateStr : '—'); - final formattedTime = - parsedDate != null ? DateFormat('hh:mm a').format(parsedDate) : ''; + // final formattedTime = + // parsedDate != null ? DateFormat('hh:mm a').format(parsedDate) : ''; final project = item.name ?? ''; final desc = item.title ?? ''; @@ -429,16 +445,16 @@ class _AdvancePaymentScreenState extends State style: TextStyle(fontSize: 12, color: Colors.grey.shade600), ), - if (formattedTime.isNotEmpty) ...[ - const SizedBox(width: 6), - Text( - formattedTime, - style: TextStyle( - fontSize: 12, - color: Colors.grey.shade500, - fontStyle: FontStyle.italic), - ), - ] + // if (formattedTime.isNotEmpty) ...[ + // const SizedBox(width: 6), + // Text( + // formattedTime, + // style: TextStyle( + // fontSize: 12, + // color: Colors.grey.shade500, + // fontStyle: FontStyle.italic), + // ), + // ] ], ), const SizedBox(height: 4),