|
|
|
|
@ -1,4 +1,5 @@
|
|
|
|
|
import 'dart:convert';
|
|
|
|
|
import 'dart:developer';
|
|
|
|
|
import 'dart:io';
|
|
|
|
|
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
@ -77,30 +78,21 @@ class _CreateTRAFRequestPageState extends State<CreateTRAFRequestPage> {
|
|
|
|
|
void initState() {
|
|
|
|
|
super.initState();
|
|
|
|
|
trafRequest = TrafRequestDataModel(id: 0, attachments: [], departments: [], qty: 1);
|
|
|
|
|
// Reset providers and load site data after the first frame to avoid provider lifecycle issues
|
|
|
|
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
|
|
|
|
// Only reset providers if they don't have data (first time load)
|
|
|
|
|
// This prevents unnecessary loading when navigating back and forth
|
|
|
|
|
final requestTypeProvider = Provider.of<RequestTypeLookupProvider>(context, listen: false);
|
|
|
|
|
final yesNoProvider = Provider.of<YesNoLookupProvider>(context, listen: false);
|
|
|
|
|
final customerProvider = Provider.of<CustomerLookupProvider>(context, listen: false);
|
|
|
|
|
|
|
|
|
|
// Only load if not already loaded
|
|
|
|
|
if (requestTypeProvider.items.isEmpty) {
|
|
|
|
|
requestTypeProvider.getData();
|
|
|
|
|
requestTypeProvider.reset();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (yesNoProvider.items.isEmpty) {
|
|
|
|
|
yesNoProvider.getData();
|
|
|
|
|
yesNoProvider.reset();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Load customer/site data using the string user ID (GUID) only if not loaded
|
|
|
|
|
if (customerProvider.items.isEmpty) {
|
|
|
|
|
final userId = context.userProvider.user?.userID;
|
|
|
|
|
if (userId != null && userId.isNotEmpty) {
|
|
|
|
|
customerProvider.getDataByUserId(userId);
|
|
|
|
|
}
|
|
|
|
|
final userId = context.userProvider.user?.userID;
|
|
|
|
|
if (customerProvider.items.isEmpty && userId != null && userId.isNotEmpty) {
|
|
|
|
|
customerProvider.getDataByUserId(userId);
|
|
|
|
|
}
|
|
|
|
|
log('user id is ${userId}');
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -117,7 +109,7 @@ class _CreateTRAFRequestPageState extends State<CreateTRAFRequestPage> {
|
|
|
|
|
@override
|
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
|
return Scaffold(
|
|
|
|
|
appBar: const DefaultAppBar(title: "TRAF Request"),
|
|
|
|
|
appBar: const DefaultAppBar(title: "Assessment of Need & Technology"),
|
|
|
|
|
body: Form(
|
|
|
|
|
key: _formKey,
|
|
|
|
|
child: Column(
|
|
|
|
|
@ -240,24 +232,20 @@ class _CreateTRAFRequestPageState extends State<CreateTRAFRequestPage> {
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
12.height,
|
|
|
|
|
Focus(
|
|
|
|
|
focusNode: siteDepartmentNode,
|
|
|
|
|
child: SingleItemDropDownMenu<TrafDepartment, DepartmentLookupProvider>(
|
|
|
|
|
context: context,
|
|
|
|
|
showAsBottomSheet: true,
|
|
|
|
|
backgroundColor: AppColor.neutral100,
|
|
|
|
|
showShadow: false,
|
|
|
|
|
title: "Department",
|
|
|
|
|
requestById: null,
|
|
|
|
|
// Don't pass requestById to prevent auto-fetch
|
|
|
|
|
initialValue: selectedDepartment,
|
|
|
|
|
enabled: selectedSite != null,
|
|
|
|
|
onSelect: (value) {
|
|
|
|
|
selectedDepartment = value;
|
|
|
|
|
trafRequest?.departmentId = value?.id?.toString();
|
|
|
|
|
setState(() {});
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
SingleItemDropDownMenu<TrafDepartment, DepartmentLookupProvider>(
|
|
|
|
|
context: context,
|
|
|
|
|
showAsBottomSheet: true,
|
|
|
|
|
backgroundColor: AppColor.neutral100,
|
|
|
|
|
showShadow: false,
|
|
|
|
|
title: "Department",
|
|
|
|
|
requestById: null,
|
|
|
|
|
// initialValue: selectedDepartment,
|
|
|
|
|
enabled: selectedSite != null,
|
|
|
|
|
onSelect: (value) {
|
|
|
|
|
selectedDepartment = value;
|
|
|
|
|
trafRequest?.departmentId = value?.id?.toString();
|
|
|
|
|
setState(() {});
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
12.height,
|
|
|
|
|
AppTextFormField(
|
|
|
|
|
|