feat: refactor ExpenseDetailScreen to use tagged controller for improved state management

This commit is contained in:
Vaibhav Surve 2025-11-20 18:02:03 +05:30
parent efefb1c34b
commit cf7021a982
2 changed files with 9 additions and 6 deletions

View File

@ -303,12 +303,9 @@ class ExpenseList extends StatelessWidget {
child: InkWell( child: InkWell(
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
onTap: () async { onTap: () async {
final result = await Get.to( await Get.to(
() => ExpenseDetailScreen(expenseId: expense.id), () => ExpenseDetailScreen(expenseId: expense.id),
); );
if (result == true && onViewDetail != null) {
await onViewDetail!();
}
}, },
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric(vertical: 8), padding: const EdgeInsets.symmetric(vertical: 8),

View File

@ -33,21 +33,27 @@ class ExpenseDetailScreen extends StatefulWidget {
class _ExpenseDetailScreenState extends State<ExpenseDetailScreen> class _ExpenseDetailScreenState extends State<ExpenseDetailScreen>
with UIMixin { with UIMixin {
final controller = Get.put(ExpenseDetailController()); late final ExpenseDetailController controller;
final projectController = Get.find<ProjectController>(); final projectController = Get.find<ProjectController>();
final permissionController = Get.put(PermissionController()); final permissionController = Get.put(PermissionController());
EmployeeInfo? employeeInfo; EmployeeInfo? employeeInfo;
final RxBool canSubmit = false.obs; final RxBool canSubmit = false.obs;
bool _checkedPermission = false; bool _checkedPermission = false;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
controller = Get.put(ExpenseDetailController(), tag: widget.expenseId);
controller.init(widget.expenseId); controller.init(widget.expenseId);
_loadEmployeeInfo(); _loadEmployeeInfo();
} }
@override
void dispose() {
Get.delete<ExpenseDetailController>(tag: widget.expenseId);
super.dispose();
}
void _loadEmployeeInfo() async { void _loadEmployeeInfo() async {
final info = await LocalStorage.getEmployeeInfo(); final info = await LocalStorage.getEmployeeInfo();
employeeInfo = info; employeeInfo = info;