From cef3bd8a1ec9505ca4eaea1e763c2fe1362f5031 Mon Sep 17 00:00:00 2001 From: Vaibhav Surve Date: Wed, 30 Jul 2025 17:37:47 +0530 Subject: [PATCH] feat: add noOfPersons input field in AddExpenseBottomSheet for enhanced expense entry --- .../expense/add_expense_controller.dart | 6 ++++- .../expense/add_expense_bottom_sheet.dart | 22 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/controller/expense/add_expense_controller.dart b/lib/controller/expense/add_expense_controller.dart index 7fdd445..abf0389 100644 --- a/lib/controller/expense/add_expense_controller.dart +++ b/lib/controller/expense/add_expense_controller.dart @@ -26,6 +26,7 @@ class AddExpenseController extends GetxController { final gstController = TextEditingController(); final locationController = TextEditingController(); final transactionDateController = TextEditingController(); + final TextEditingController noOfPersonsController = TextEditingController(); // === State Controllers === final RxBool isLoading = false.obs; @@ -72,6 +73,7 @@ class AddExpenseController extends GetxController { gstController.dispose(); locationController.dispose(); transactionDateController.dispose(); + noOfPersonsController.dispose(); super.onClose(); } @@ -244,7 +246,9 @@ class AddExpenseController extends GetxController { location: locationController.text, supplerName: supplierController.text, amount: amount, - noOfPersons: 0, + noOfPersons: selectedExpenseType.value?.noOfPersonsRequired == true + ? int.tryParse(noOfPersonsController.text.trim()) ?? 0 + : 0, billAttachments: billAttachments, ); diff --git a/lib/model/expense/add_expense_bottom_sheet.dart b/lib/model/expense/add_expense_bottom_sheet.dart index 07f0e23..6354ee3 100644 --- a/lib/model/expense/add_expense_bottom_sheet.dart +++ b/lib/model/expense/add_expense_bottom_sheet.dart @@ -125,6 +125,28 @@ class _AddExpenseBottomSheetState extends State<_AddExpenseBottomSheet> { (val) => controller.selectedExpenseType.value = val, ), ), + if (controller + .selectedExpenseType.value?.noOfPersonsRequired == + true) + Padding( + padding: const EdgeInsets.only(top: 16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _SectionTitle( + icon: Icons.people_outline, + title: "No. of Persons", + requiredField: true, + ), + const SizedBox(height: 6), + _CustomTextField( + controller: controller.noOfPersonsController, + hint: "Enter No. of Persons", + keyboardType: TextInputType.number, + ), + ], + ), + ), const SizedBox(height: 16), _SectionTitle( icon: Icons.confirmation_number_outlined,