feat: refactor ExpenseDetailScreen to use tagged controller for improved state management
This commit is contained in:
parent
efefb1c34b
commit
cf7021a982
@ -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),
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user