This commit is contained in:
Surendiran 2025-06-07 14:57:39 +05:30
commit 5cd189a8cc
21 changed files with 148 additions and 84 deletions

View File

@ -5,15 +5,7 @@
android:label="frontend"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true" >
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
<activity
android:name=".MainActivity"
android:exported="true"
@ -36,6 +28,15 @@
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true" >
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data

View File

@ -4,4 +4,5 @@
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

View File

@ -336,7 +336,7 @@ class CostCenterListState extends State<CostCenterList> {
MainAxisSize.min, // Ensures content fits nicely
children: [
Text(
"Add CostCenter",
"Add Cost Center",
style: GoogleFonts.poppins(
fontSize: isDesktop ? 13 : 11,
),

View File

@ -396,7 +396,7 @@ class ForexDataState extends State<ForexData> {
),
searchFieldProps: TextFieldProps(
decoration: InputDecoration(
hintText: "Search Country...",
hintText: "Search ...",
hintStyle: GoogleFonts.poppins(fontSize: 11),
contentPadding: EdgeInsets.symmetric(horizontal: 4),
),
@ -414,7 +414,7 @@ class ForexDataState extends State<ForexData> {
// Center-align selected item
alignment: Alignment.centerLeft,
child: Text(
selectedItem ?? "Select Country",
selectedItem ?? "Select ",
style: GoogleFonts.poppins(fontSize: 11),
),
),

View File

@ -746,9 +746,9 @@ class ForexDataListState extends State<ForexDataList> {
style: TextStyle(
fontSize: 13,
fontFamily: "Inter",
// color: forex['is_active'] == "1"
// ? Colors.green
// : Colors.grey,
color: forex['is_active'] == "1"
? Colors.green
: Colors.grey,
),
softWrap: true,
overflow: TextOverflow.ellipsis,

View File

@ -407,7 +407,7 @@ class GroupDataState extends State<GroupData> {
),
searchFieldProps: TextFieldProps(
decoration: InputDecoration(
hintText: "Select Policy For International",
hintText: "Search ...",
hintStyle: GoogleFonts.poppins(fontSize: 11),
contentPadding: EdgeInsets.symmetric(horizontal: 4),
),
@ -425,7 +425,7 @@ class GroupDataState extends State<GroupData> {
// Center-align selected item
alignment: Alignment.centerLeft,
child: Text(
selectedItem ?? "Select Policy For International",
selectedItem ?? "Select",
style: GoogleFonts.poppins(fontSize: 11),
),
),
@ -481,7 +481,7 @@ class GroupDataState extends State<GroupData> {
),
searchFieldProps: TextFieldProps(
decoration: InputDecoration(
hintText: "Select Policy For Domestic...",
hintText: "Search ...",
hintStyle: GoogleFonts.poppins(fontSize: 11),
contentPadding: EdgeInsets.symmetric(horizontal: 4),
),
@ -499,7 +499,7 @@ class GroupDataState extends State<GroupData> {
// Center-align selected item
alignment: Alignment.centerLeft,
child: Text(
selectedItem ?? "Select Policy For Domestic",
selectedItem ?? "Select ",
style: GoogleFonts.poppins(fontSize: 11),
),
),

View File

@ -353,7 +353,7 @@ class _GroupListState extends State<GroupList> {
MainAxisSize.min, // Ensures content fits nicely
children: [
Text(
"Add New Group",
"Add Group",
style: GoogleFonts.poppins(
fontSize: isDesktop ? 13 : 11,
),

View File

@ -418,7 +418,7 @@ class HotelsDataState extends State<HotelsData> {
),
searchFieldProps: TextFieldProps(
decoration: InputDecoration(
hintText: "Search Country...",
hintText: "Search ...",
hintStyle: GoogleFonts.poppins(fontSize: 11),
contentPadding: EdgeInsets.symmetric(horizontal: 4),
),
@ -436,7 +436,7 @@ class HotelsDataState extends State<HotelsData> {
// Center-align selected item
alignment: Alignment.centerLeft,
child: Text(
selectedItem ?? "Select Country",
selectedItem ?? "Select ",
style: GoogleFonts.poppins(fontSize: 11),
),
),

View File

@ -437,7 +437,7 @@ class _AccomodationScreenState extends State<AccomodationScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Destination",
"Destination *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w600,
@ -485,7 +485,7 @@ class _AccomodationScreenState extends State<AccomodationScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Hotel Name",
"Hotel Name *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w600,
@ -695,7 +695,7 @@ class _AccomodationScreenState extends State<AccomodationScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Check-in*",
"Check-in *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w600,
@ -747,7 +747,7 @@ class _AccomodationScreenState extends State<AccomodationScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Time (Check-in)",
"Time (Check-in) *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w600,
@ -851,7 +851,7 @@ class _AccomodationScreenState extends State<AccomodationScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Time (Check-out)",
"Time (Check-out) *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w600,

View File

@ -401,7 +401,7 @@ class _BusScreenState extends State<BusScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"From",
"From *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,
@ -446,7 +446,7 @@ class _BusScreenState extends State<BusScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"To",
"To *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,
@ -491,7 +491,7 @@ class _BusScreenState extends State<BusScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Date",
"Date *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,
@ -543,7 +543,7 @@ class _BusScreenState extends State<BusScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Time",
"Time *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,

View File

@ -1154,7 +1154,7 @@ class _ForexScreenState extends State<ForexScreen> {
showSearchBox: true, // Enables search functionality
searchFieldProps: TextFieldProps(
decoration: InputDecoration(
hintText: "Search Country...",
hintText: "Search ...",
contentPadding: EdgeInsets.symmetric(horizontal: 10),
),
),
@ -1171,7 +1171,7 @@ class _ForexScreenState extends State<ForexScreen> {
// Center-align selected item
alignment: Alignment.centerLeft,
child: Text(
selectedItem ?? "Select Country",
selectedItem ?? "Select ",
style: TextStyle(fontSize: 12),
),
),

View File

@ -529,7 +529,7 @@ class _InsuranceScreenState extends State<InsuranceScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Insurance Type",
"Insurance Type *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,
@ -580,7 +580,7 @@ class _InsuranceScreenState extends State<InsuranceScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Start Date",
"Start Date *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,
@ -641,7 +641,7 @@ class _InsuranceScreenState extends State<InsuranceScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"End Date",
"End Date *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,

View File

@ -114,7 +114,7 @@ class _MiscellaneousScreenState extends State<MiscellaneousScreen> {
// Check validation for each field
for (String field in requiredFields) {
if (data[field] == null || data[field].toString().trim().isEmpty) {
errorMessages[field] = "This field is required";
errorMessages[field] = "Required";
}
}
@ -191,7 +191,7 @@ class _MiscellaneousScreenState extends State<MiscellaneousScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Special Type",
"Special Type *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,
@ -266,7 +266,7 @@ class _MiscellaneousScreenState extends State<MiscellaneousScreen> {
if (errorMessages["special_request"] != null) ...[
SizedBox(height: 5), // Space before error message
Text(
"Select Type",
"Required",
style: TextStyle(color: Colors.red, fontSize: 12),
),
],
@ -279,7 +279,7 @@ class _MiscellaneousScreenState extends State<MiscellaneousScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Comments",
"Comments *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,

View File

@ -524,7 +524,7 @@ class _TaxiScreenState extends State<TaxiScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"City",
"City *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,
@ -562,7 +562,7 @@ class _TaxiScreenState extends State<TaxiScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Pickup Location",
"Pickup Location *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,
@ -600,7 +600,7 @@ class _TaxiScreenState extends State<TaxiScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Date",
"Date *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,
@ -648,7 +648,7 @@ class _TaxiScreenState extends State<TaxiScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Time",
"Time *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,
@ -700,7 +700,7 @@ class _TaxiScreenState extends State<TaxiScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Comments",
"Comments *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,

View File

@ -369,7 +369,7 @@ class _TrainScreenState extends State<TrainScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Train Number",
"Train Number *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,
@ -584,7 +584,7 @@ class _TrainScreenState extends State<TrainScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"From",
"From *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,
@ -694,7 +694,7 @@ class _TrainScreenState extends State<TrainScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"To",
"To *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,
@ -767,7 +767,7 @@ class _TrainScreenState extends State<TrainScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Date",
"Date *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,
@ -816,7 +816,7 @@ class _TrainScreenState extends State<TrainScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Time",
"Time *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,

View File

@ -442,7 +442,64 @@ class _VisaScreenState extends State<VisaScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Country",
"Type of Visa *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,
color: Color(0xFF575A74)),
),
SizedBox(height: 5),
CustomTextFieldWrapper(
isFocused: _tripTypeFocused,
isDesktop: isDesktop,
width: isDesktop
? MediaQuery.of(context).size.width * 0.34
: MediaQuery.of(context).size.width * 0.66,
child: SizedBox(
height: 40,
child: DropdownButtonFormField<String>(
focusNode: _tripTypeFocusNode, // Assign the correct focus node
value: selectedPurpose,
style: TextStyle(fontSize: 12),
decoration: InputDecoration(
border: InputBorder.none,
contentPadding:
EdgeInsets.symmetric(horizontal: 10), // Proper padding
),
onChanged: purposeList.isNotEmpty
? (newValue) {
setState(() {
selectedPurpose = newValue;
});
print(
"Updating form data: Flight -> trip_type -> ${newValue ?? ""}");
}
: null,
items: dropdownItems,
),
),
),
if (errorMessages["type_of_visa"] != null) ...[
SizedBox(height: 5), // Space before error message
Text(
"Required",
style: TextStyle(color: Colors.red, fontSize: 12),
),
],
],
),
if (isDesktop)
Spacer()
else
SizedBox(
height: 8,
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Country *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,
@ -464,7 +521,7 @@ class _VisaScreenState extends State<VisaScreen> {
showSearchBox: true, // Enables search functionality
searchFieldProps: TextFieldProps(
decoration: InputDecoration(
hintText: "Search Country...",
hintText: "Search ...",
contentPadding: EdgeInsets.symmetric(horizontal: 10),
),
),
@ -482,7 +539,7 @@ class _VisaScreenState extends State<VisaScreen> {
// Center-align selected item
alignment: Alignment.centerLeft,
child: Text(
selectedItem ?? "Select Country",
selectedItem ?? "Select ",
style: TextStyle(fontSize: 12),
),
),
@ -579,7 +636,7 @@ class _VisaScreenState extends State<VisaScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Start Date",
"Start Date *",
style: GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w500,

View File

@ -322,7 +322,8 @@ class _PolicyListState extends State<PolicyList> {
controller: searchController,
onChanged: filterPolicy,
decoration: InputDecoration(
hintText: "Search for a Policy",
hintText: "Search ...",
hintStyle: TextStyle(
fontSize: 12,
color: Color(0xFF9E9DBD),
@ -383,7 +384,7 @@ class _PolicyListState extends State<PolicyList> {
MainAxisSize.min, // Ensures content fits nicely
children: [
Text(
"Add New Policy",
"Add Policy",
style: GoogleFonts.poppins(
fontSize: isDesktop ? 13 : 11,
),
@ -413,7 +414,7 @@ class _PolicyListState extends State<PolicyList> {
controller: searchController,
onChanged: filterPolicy,
decoration: InputDecoration(
hintText: "Search for a Policy",
hintText: "Search ...",
hintStyle: TextStyle(
fontSize: 12,
color: Color(0xFF9E9DBD),

View File

@ -580,6 +580,7 @@ class _CreateUserFormDetialsState extends State<CreateUserFormDetials> {
// travelDetailsData = [travellerDetailsKey.currentState?.travel_Detials];
travelDetailsData = travellerDetailsKey.currentState?.travel_Detials;
errorMessagesTravel = travellerDetailsKey.currentState!.errorMessages;
print("TRAVEL DETAILS FROM CHILD: $travelDetailsData");
@ -670,6 +671,9 @@ class _CreateUserFormDetialsState extends State<CreateUserFormDetials> {
print("travelDetailsData - $travelDetailsData");
print("travelDetailsData - $travelDetailsData");
errorMessagesTravel = travellerDetailsKey.currentState!.errorMessages;
print("TRAVEL DETAILS FROM CHILD");
// print("TRAVEL DETAILS FROM CHILD: $travelDetailsData");
@ -693,7 +697,7 @@ class _CreateUserFormDetialsState extends State<CreateUserFormDetials> {
print("USERDETAILS : $userDetials");
orgId = await getOrgId();
createUserData(userDetials);
// createUserData(userDetials);
}
}

View File

@ -1281,7 +1281,6 @@ class TravellerDetailsState extends State<TravellerDetails> {
],
onChanged: (value) {
_clearError("passport_number");
apiCheckDuplicate(
"Passport Number",
"passport_number",

View File

@ -5,10 +5,10 @@ packages:
dependency: transitive
description:
name: archive
sha256: "0c64e928dcbefddecd234205422bcfc2b5e6d31be0b86fef0d0dd48d7b4c9742"
sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd"
url: "https://pub.dev"
source: hosted
version: "4.0.4"
version: "4.0.7"
args:
dependency: transitive
description:
@ -157,10 +157,10 @@ packages:
dependency: transitive
description:
name: ffi
sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6"
sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418"
url: "https://pub.dev"
source: hosted
version: "2.1.3"
version: "2.1.4"
file:
dependency: transitive
description:
@ -173,10 +173,10 @@ packages:
dependency: "direct main"
description:
name: file_picker
sha256: "36a1652d99cb6bf8ccc8b9f43aded1fd60b234d23ce78af422c07f950a436ef7"
sha256: "77f8e81d22d2a07d0dee2c62e1dda71dc1da73bf43bb2d45af09727406167964"
url: "https://pub.dev"
source: hosted
version: "10.0.0"
version: "10.1.9"
file_selector_linux:
dependency: transitive
description:
@ -189,10 +189,10 @@ packages:
dependency: transitive
description:
name: file_selector_macos
sha256: "271ab9986df0c135d45c3cdb6bd0faa5db6f4976d3e4b437cf7d0f258d941bfc"
sha256: "8c9250b2bd2d8d4268e39c82543bacbaca0fda7d29e0728c3c4bbb7c820fd711"
url: "https://pub.dev"
source: hosted
version: "0.9.4+2"
version: "0.9.4+3"
file_selector_platform_interface:
dependency: transitive
description:
@ -295,10 +295,10 @@ packages:
dependency: transitive
description:
name: flutter_plugin_android_lifecycle
sha256: "5a1e6fb2c0561958d7e4c33574674bda7b77caaca7a33b758876956f2902eea3"
sha256: f948e346c12f8d5480d2825e03de228d0eb8c3a737e4cdaa122267b89c022b5e
url: "https://pub.dev"
source: hosted
version: "2.0.27"
version: "2.0.28"
flutter_quill:
dependency: "direct main"
description:
@ -385,10 +385,10 @@ packages:
dependency: "direct main"
description:
name: http
sha256: fe7ab022b76f3034adc518fb6ea04a82387620e19977665ea18d30a1cf43442f
sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b"
url: "https://pub.dev"
source: hosted
version: "1.3.0"
version: "1.4.0"
http_parser:
dependency: "direct main"
description:
@ -409,10 +409,10 @@ packages:
dependency: transitive
description:
name: image_picker_android
sha256: "8bd392ba8b0c8957a157ae0dc9fcf48c58e6c20908d5880aea1d79734df090e9"
sha256: "317a5d961cec5b34e777b9252393f2afbd23084aa6e60fcf601dcf6341b9ebeb"
url: "https://pub.dev"
source: hosted
version: "0.8.12+22"
version: "0.8.12+23"
image_picker_for_web:
dependency: transitive
description:
@ -657,18 +657,18 @@ packages:
dependency: transitive
description:
name: posix
sha256: a0117dc2167805aa9125b82eee515cc891819bac2f538c83646d355b16f58b9a
sha256: f0d7856b6ca1887cfa6d1d394056a296ae33489db914e365e2044fdada449e62
url: "https://pub.dev"
source: hosted
version: "6.0.1"
version: "6.0.2"
provider:
dependency: transitive
description:
name: provider
sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c
sha256: "4abbd070a04e9ddc287673bf5a030c7ca8b685ff70218720abab8b092f53dd84"
url: "https://pub.dev"
source: hosted
version: "6.1.2"
version: "6.1.5"
quill_native_bridge:
dependency: transitive
description:
@ -769,10 +769,10 @@ packages:
dependency: transitive
description:
name: shared_preferences_android
sha256: "3ec7210872c4ba945e3244982918e502fa2bfb5230dff6832459ca0e1879b7ad"
sha256: "20cbd561f743a342c76c151d6ddb93a9ce6005751e7aa458baad3858bfbfb6ac"
url: "https://pub.dev"
source: hosted
version: "2.4.8"
version: "2.4.10"
shared_preferences_foundation:
dependency: transitive
description:
@ -982,10 +982,10 @@ packages:
dependency: transitive
description:
name: video_player_android
sha256: "28dcc4122079f40f93a0965b3679aff1a5f4251cf79611bd8011f937eb6b69de"
sha256: "4a5135754a62dbc827a64a42ef1f8ed72c962e191c97e2d48744225c2b9ebb73"
url: "https://pub.dev"
source: hosted
version: "2.8.4"
version: "2.8.7"
video_player_avfoundation:
dependency: transitive
description:
@ -1038,10 +1038,10 @@ packages:
dependency: transitive
description:
name: win32
sha256: dc6ecaa00a7c708e5b4d10ee7bec8c270e9276dfcab1783f57e9962d7884305f
sha256: "329edf97fdd893e0f1e3b9e88d6a0e627128cc17cc316a8d67fda8f1451178ba"
url: "https://pub.dev"
source: hosted
version: "5.12.0"
version: "5.13.0"
xdg_directories:
dependency: transitive
description:
@ -1052,4 +1052,4 @@ packages:
version: "1.1.0"
sdks:
dart: ">=3.7.2 <4.0.0"
flutter: ">=3.27.0"
flutter: ">=3.29.0"

View File

@ -35,6 +35,7 @@
<link rel="manifest" href="manifest.json">
</head>
<body>
<script src="flutter_bootstrap.js" async></script>
</body>
</html>