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(
borderRadius: BorderRadius.circular(8),
onTap: () async {
final result = await Get.to(
await Get.to(
() => ExpenseDetailScreen(expenseId: expense.id),
);
if (result == true && onViewDetail != null) {
await onViewDetail!();
}
},
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 8),

View File

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