From 53a86a8e21bf693cd7d4ae59059a847fac9287a4 Mon Sep 17 00:00:00 2001 From: venbaittech Date: Thu, 27 Nov 2025 09:40:08 +0530 Subject: [PATCH] multi_file_upload --- .flutter-plugins-dependencies | 2 +- lib/presentation/layouts/appheader.dart | 27 ++- .../screens/Enquiry/enquiryList.dart | 58 ++++-- .../screens/dashboard/dashboard.dart | 15 +- .../staff/Enquiry/enquiry_inline_list.dart | 65 +++--- .../screens/staff/Enquiry/raise_enq_form.dart | 192 +++++++++++++++++- .../staff/Enquiry/tabs/createQuotation.dart | 95 ++++++--- .../screens/staff/Enquiry/tabs/policyTab.dart | 85 +++++--- .../customizd_multi_file_upload.dart | 161 +++++++++++++++ .../indicators/multi_fileUploadService.dart | 51 +++++ .../themes/indicators/mutli_FileUpload.dart | 102 ++++++++++ 11 files changed, 737 insertions(+), 116 deletions(-) create mode 100644 lib/presentation/themes/indicators/customizd_multi_file_upload.dart create mode 100644 lib/presentation/themes/indicators/multi_fileUploadService.dart create mode 100644 lib/presentation/themes/indicators/mutli_FileUpload.dart diff --git a/.flutter-plugins-dependencies b/.flutter-plugins-dependencies index 2eec261..89b1713 100644 --- a/.flutter-plugins-dependencies +++ b/.flutter-plugins-dependencies @@ -1 +1 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_app_check","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_app_check-0.4.0+1/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_auth","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_auth-6.0.2/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_core","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_core-4.1.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_messaging","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_messaging-16.0.1/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"flutter_secure_storage","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"fluttertoast","path":"/home/venba/.pub-cache/hosted/pub.dev/fluttertoast-9.0.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"google_sign_in_ios","path":"/home/venba/.pub-cache/hosted/pub.dev/google_sign_in_ios-6.1.0/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"local_auth_darwin","path":"/home/venba/.pub-cache/hosted/pub.dev/local_auth_darwin-1.6.0/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"open_file_ios","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_ios-1.0.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/home/venba/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.2/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_foundation","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.4/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_ios","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_ios-6.3.4/","native_build":true,"dependencies":[],"dev_dependency":false}],"android":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.3/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"],"dev_dependency":false},{"name":"firebase_app_check","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_app_check-0.4.0+1/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_auth","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_auth-6.0.2/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_core","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_core-4.1.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_messaging","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_messaging-16.0.1/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"flutter_plugin_android_lifecycle","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.30/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"fluttertoast","path":"/home/venba/.pub-cache/hosted/pub.dev/fluttertoast-9.0.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"google_sign_in_android","path":"/home/venba/.pub-cache/hosted/pub.dev/google_sign_in_android-7.0.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"local_auth_android","path":"/home/venba/.pub-cache/hosted/pub.dev/local_auth_android-1.0.52/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"],"dev_dependency":false},{"name":"open_file_android","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_android-1.0.6/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_android","path":"/home/venba/.pub-cache/hosted/pub.dev/path_provider_android-2.2.18/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_android","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_android-2.4.12/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_android","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_android-6.3.20/","native_build":true,"dependencies":[],"dev_dependency":false}],"macos":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_app_check","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_app_check-0.4.0+1/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_auth","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_auth-6.0.2/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_core","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_core-4.1.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_messaging","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_messaging-16.0.1/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"flutter_secure_storage_macos","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage_macos-3.1.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"google_sign_in_ios","path":"/home/venba/.pub-cache/hosted/pub.dev/google_sign_in_ios-6.1.0/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"local_auth_darwin","path":"/home/venba/.pub-cache/hosted/pub.dev/local_auth_darwin-1.6.0/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"open_file_mac","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_mac-1.0.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/home/venba/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.2/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_foundation","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.4/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_macos","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_macos-3.2.3/","native_build":true,"dependencies":[],"dev_dependency":false}],"linux":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.3/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage_linux-1.2.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"open_file_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_linux-0.0.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"path_provider_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.4.1/","native_build":false,"dependencies":["path_provider_linux"],"dev_dependency":false},{"name":"url_launcher_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_linux-3.2.1/","native_build":true,"dependencies":[],"dev_dependency":false}],"windows":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.3/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"firebase_auth","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_auth-6.0.2/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_core","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_core-4.1.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage_windows-3.1.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"local_auth_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/local_auth_windows-1.0.11/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"open_file_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_windows-0.0.3/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"path_provider_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.4.1/","native_build":false,"dependencies":["path_provider_windows"],"dev_dependency":false},{"name":"url_launcher_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_windows-3.1.4/","native_build":true,"dependencies":[],"dev_dependency":false}],"web":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.3/","dependencies":[],"dev_dependency":false},{"name":"firebase_app_check_web","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_app_check_web-0.2.0+16/","dependencies":["firebase_core_web"],"dev_dependency":false},{"name":"firebase_auth_web","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_auth_web-6.0.2/","dependencies":["firebase_core_web"],"dev_dependency":false},{"name":"firebase_core_web","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_core_web-3.1.0/","dependencies":[],"dev_dependency":false},{"name":"firebase_messaging_web","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_messaging_web-4.0.1/","dependencies":["firebase_core_web"],"dev_dependency":false},{"name":"flutter_secure_storage_web","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage_web-1.2.1/","dependencies":[],"dev_dependency":false},{"name":"fluttertoast","path":"/home/venba/.pub-cache/hosted/pub.dev/fluttertoast-9.0.0/","dependencies":[],"dev_dependency":false},{"name":"google_sign_in_web","path":"/home/venba/.pub-cache/hosted/pub.dev/google_sign_in_web-1.0.0/","dependencies":[],"dev_dependency":false},{"name":"open_file_web","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_web-0.0.4/","dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","dependencies":[],"dev_dependency":false},{"name":"shared_preferences_web","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_web-2.4.3/","dependencies":[],"dev_dependency":false},{"name":"url_launcher_web","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_web-2.4.1/","dependencies":[],"dev_dependency":false}]},"dependencyGraph":[{"name":"connectivity_plus","dependencies":[]},{"name":"file_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"firebase_app_check","dependencies":["firebase_app_check_web","firebase_core"]},{"name":"firebase_app_check_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"firebase_auth","dependencies":["firebase_auth_web","firebase_core"]},{"name":"firebase_auth_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"firebase_messaging","dependencies":["firebase_core","firebase_messaging_web"]},{"name":"firebase_messaging_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"flutter_secure_storage","dependencies":["flutter_secure_storage_linux","flutter_secure_storage_macos","flutter_secure_storage_web","flutter_secure_storage_windows"]},{"name":"flutter_secure_storage_linux","dependencies":[]},{"name":"flutter_secure_storage_macos","dependencies":[]},{"name":"flutter_secure_storage_web","dependencies":[]},{"name":"flutter_secure_storage_windows","dependencies":["path_provider"]},{"name":"fluttertoast","dependencies":[]},{"name":"google_sign_in","dependencies":["google_sign_in_android","google_sign_in_ios","google_sign_in_web"]},{"name":"google_sign_in_android","dependencies":[]},{"name":"google_sign_in_ios","dependencies":[]},{"name":"google_sign_in_web","dependencies":[]},{"name":"local_auth","dependencies":["local_auth_android","local_auth_darwin","local_auth_windows"]},{"name":"local_auth_android","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"local_auth_darwin","dependencies":[]},{"name":"local_auth_windows","dependencies":[]},{"name":"open_file","dependencies":["open_file_android","open_file_web","open_file_ios","open_file_mac","open_file_windows","open_file_linux"]},{"name":"open_file_android","dependencies":[]},{"name":"open_file_ios","dependencies":[]},{"name":"open_file_linux","dependencies":[]},{"name":"open_file_mac","dependencies":[]},{"name":"open_file_web","dependencies":[]},{"name":"open_file_windows","dependencies":[]},{"name":"package_info_plus","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]},{"name":"url_launcher","dependencies":["url_launcher_android","url_launcher_ios","url_launcher_linux","url_launcher_macos","url_launcher_web","url_launcher_windows"]},{"name":"url_launcher_android","dependencies":[]},{"name":"url_launcher_ios","dependencies":[]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]}],"date_created":"2025-11-25 10:25:49.290766","version":"3.32.1","swift_package_manager_enabled":{"ios":false,"macos":false}} \ No newline at end of file +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_app_check","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_app_check-0.4.0+1/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_auth","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_auth-6.0.2/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_core","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_core-4.1.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_messaging","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_messaging-16.0.1/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"flutter_secure_storage","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"fluttertoast","path":"/home/venba/.pub-cache/hosted/pub.dev/fluttertoast-9.0.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"google_sign_in_ios","path":"/home/venba/.pub-cache/hosted/pub.dev/google_sign_in_ios-6.1.0/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"local_auth_darwin","path":"/home/venba/.pub-cache/hosted/pub.dev/local_auth_darwin-1.6.0/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"open_file_ios","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_ios-1.0.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/home/venba/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.2/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_foundation","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.4/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_ios","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_ios-6.3.4/","native_build":true,"dependencies":[],"dev_dependency":false}],"android":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.3/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"],"dev_dependency":false},{"name":"firebase_app_check","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_app_check-0.4.0+1/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_auth","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_auth-6.0.2/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_core","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_core-4.1.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_messaging","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_messaging-16.0.1/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"flutter_plugin_android_lifecycle","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.30/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"fluttertoast","path":"/home/venba/.pub-cache/hosted/pub.dev/fluttertoast-9.0.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"google_sign_in_android","path":"/home/venba/.pub-cache/hosted/pub.dev/google_sign_in_android-7.0.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"local_auth_android","path":"/home/venba/.pub-cache/hosted/pub.dev/local_auth_android-1.0.52/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"],"dev_dependency":false},{"name":"open_file_android","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_android-1.0.6/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_android","path":"/home/venba/.pub-cache/hosted/pub.dev/path_provider_android-2.2.18/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_android","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_android-2.4.12/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_android","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_android-6.3.20/","native_build":true,"dependencies":[],"dev_dependency":false}],"macos":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_app_check","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_app_check-0.4.0+1/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_auth","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_auth-6.0.2/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_core","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_core-4.1.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_messaging","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_messaging-16.0.1/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"flutter_secure_storage_macos","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage_macos-3.1.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"google_sign_in_ios","path":"/home/venba/.pub-cache/hosted/pub.dev/google_sign_in_ios-6.1.0/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"local_auth_darwin","path":"/home/venba/.pub-cache/hosted/pub.dev/local_auth_darwin-1.6.0/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"open_file_mac","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_mac-1.0.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/home/venba/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.2/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_foundation","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.4/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_macos","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_macos-3.2.3/","native_build":true,"dependencies":[],"dev_dependency":false}],"linux":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.3/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage_linux-1.2.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"open_file_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_linux-0.0.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"path_provider_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.4.1/","native_build":false,"dependencies":["path_provider_linux"],"dev_dependency":false},{"name":"url_launcher_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_linux-3.2.1/","native_build":true,"dependencies":[],"dev_dependency":false}],"windows":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.3/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"firebase_auth","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_auth-6.0.2/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_core","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_core-4.1.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage_windows-3.1.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"local_auth_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/local_auth_windows-1.0.11/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"open_file_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_windows-0.0.3/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"path_provider_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.4.1/","native_build":false,"dependencies":["path_provider_windows"],"dev_dependency":false},{"name":"url_launcher_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_windows-3.1.4/","native_build":true,"dependencies":[],"dev_dependency":false}],"web":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.3/","dependencies":[],"dev_dependency":false},{"name":"firebase_app_check_web","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_app_check_web-0.2.0+16/","dependencies":["firebase_core_web"],"dev_dependency":false},{"name":"firebase_auth_web","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_auth_web-6.0.2/","dependencies":["firebase_core_web"],"dev_dependency":false},{"name":"firebase_core_web","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_core_web-3.1.0/","dependencies":[],"dev_dependency":false},{"name":"firebase_messaging_web","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_messaging_web-4.0.1/","dependencies":["firebase_core_web"],"dev_dependency":false},{"name":"flutter_secure_storage_web","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage_web-1.2.1/","dependencies":[],"dev_dependency":false},{"name":"fluttertoast","path":"/home/venba/.pub-cache/hosted/pub.dev/fluttertoast-9.0.0/","dependencies":[],"dev_dependency":false},{"name":"google_sign_in_web","path":"/home/venba/.pub-cache/hosted/pub.dev/google_sign_in_web-1.0.0/","dependencies":[],"dev_dependency":false},{"name":"open_file_web","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_web-0.0.4/","dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","dependencies":[],"dev_dependency":false},{"name":"shared_preferences_web","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_web-2.4.3/","dependencies":[],"dev_dependency":false},{"name":"url_launcher_web","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_web-2.4.1/","dependencies":[],"dev_dependency":false}]},"dependencyGraph":[{"name":"connectivity_plus","dependencies":[]},{"name":"file_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"firebase_app_check","dependencies":["firebase_app_check_web","firebase_core"]},{"name":"firebase_app_check_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"firebase_auth","dependencies":["firebase_auth_web","firebase_core"]},{"name":"firebase_auth_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"firebase_messaging","dependencies":["firebase_core","firebase_messaging_web"]},{"name":"firebase_messaging_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"flutter_secure_storage","dependencies":["flutter_secure_storage_linux","flutter_secure_storage_macos","flutter_secure_storage_web","flutter_secure_storage_windows"]},{"name":"flutter_secure_storage_linux","dependencies":[]},{"name":"flutter_secure_storage_macos","dependencies":[]},{"name":"flutter_secure_storage_web","dependencies":[]},{"name":"flutter_secure_storage_windows","dependencies":["path_provider"]},{"name":"fluttertoast","dependencies":[]},{"name":"google_sign_in","dependencies":["google_sign_in_android","google_sign_in_ios","google_sign_in_web"]},{"name":"google_sign_in_android","dependencies":[]},{"name":"google_sign_in_ios","dependencies":[]},{"name":"google_sign_in_web","dependencies":[]},{"name":"local_auth","dependencies":["local_auth_android","local_auth_darwin","local_auth_windows"]},{"name":"local_auth_android","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"local_auth_darwin","dependencies":[]},{"name":"local_auth_windows","dependencies":[]},{"name":"open_file","dependencies":["open_file_android","open_file_web","open_file_ios","open_file_mac","open_file_windows","open_file_linux"]},{"name":"open_file_android","dependencies":[]},{"name":"open_file_ios","dependencies":[]},{"name":"open_file_linux","dependencies":[]},{"name":"open_file_mac","dependencies":[]},{"name":"open_file_web","dependencies":[]},{"name":"open_file_windows","dependencies":[]},{"name":"package_info_plus","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]},{"name":"url_launcher","dependencies":["url_launcher_android","url_launcher_ios","url_launcher_linux","url_launcher_macos","url_launcher_web","url_launcher_windows"]},{"name":"url_launcher_android","dependencies":[]},{"name":"url_launcher_ios","dependencies":[]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]}],"date_created":"2025-11-26 11:58:11.463499","version":"3.32.1","swift_package_manager_enabled":{"ios":false,"macos":false}} \ No newline at end of file diff --git a/lib/presentation/layouts/appheader.dart b/lib/presentation/layouts/appheader.dart index 68b75c5..b3d2662 100644 --- a/lib/presentation/layouts/appheader.dart +++ b/lib/presentation/layouts/appheader.dart @@ -363,6 +363,31 @@ class _AppHeaderState extends ConsumerState { const SizedBox(width: 16), ], + // Proposal button + Container( + width: 36, + height: 36, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(8), + border: Border.all(color: Colors.grey.shade200, width: 1), + ), + child: IconButton( + padding: EdgeInsets.zero, + icon: const Icon( + Icons.request_quote_outlined, + color: Colors.black87, + size: 20, + ), + onPressed: () { + debugPrint("Notifications tapped"); + }, + tooltip: 'Create Proposal', + ), + ), + + const SizedBox(width: 12), + // Notifications button Container( width: 36, @@ -432,7 +457,7 @@ class _AppHeaderState extends ConsumerState { ), ), Text( - (role == 'agent') ? 'partner' : role ?? 'manager', + (role == 'agent') ? 'Partner' : role ?? 'Manager', style: GoogleFonts.inter( fontSize: 9, color: Colors.grey.shade600, diff --git a/lib/presentation/screens/Enquiry/enquiryList.dart b/lib/presentation/screens/Enquiry/enquiryList.dart index a5d05a3..7cbd5fc 100644 --- a/lib/presentation/screens/Enquiry/enquiryList.dart +++ b/lib/presentation/screens/Enquiry/enquiryList.dart @@ -556,12 +556,14 @@ class EnquiryListState extends ConsumerState { ThemedSearchField( hintText: 'Search', - backgroundColor: Color(0xFFF6F8F8), + backgroundColor: Color(0xFFFFFFFF), + // backgroundColor: Color(0xFFF6F8F8), onChanged: filterData, controller: _searchStaffController, txtwidth: ResponsiveLayout.isMobile(context) ? MediaQuery.of(context).size.width * 0.6 : MediaQuery.of(context).size.width * 0.13, + txtHeight: 30, ), ResponsiveLayout.isMobile(context) ? Spacer() @@ -614,26 +616,30 @@ class EnquiryListState extends ConsumerState { // print('Export'); }, child: Container( - padding: EdgeInsets.all(8.0), + padding: EdgeInsets.all(5.0), decoration: BoxDecoration( - color: Color(0xFF425B5B), + color: const Color(0xFF2E7D6E), + // color: Color(0xFF425B5B), borderRadius: BorderRadius.circular(8.0), ), child: Row( mainAxisSize: MainAxisSize.min, children: [ - Icon(Icons.add, color: Colors.white), + Tooltip( + message: 'Raise Enquiry', + child: Icon(Icons.add, color: Colors.white, size: 18), + ), if (!ResponsiveLayout.isMobile(context)) ...[ - SizedBox(width: 10), - Text( - 'Raise Enquiry', - style: GoogleFonts.inter( - color: Colors.white, - fontWeight: FontWeight.w600, - fontSize: 14, - ), - ), + // SizedBox(width: 10), + // Text( + // 'Raise Enquiry', + // style: GoogleFonts.inter( + // color: Colors.white, + // fontWeight: FontWeight.w600, + // fontSize: 14, + // ), + // ), // GestureDetector( // onTap: () { // ref @@ -666,10 +672,11 @@ class EnquiryListState extends ConsumerState { if (!ResponsiveLayout.isMobile(context)) Container( decoration: BoxDecoration( - color: Color(0xFFEDF6F5), + // color: Color(0xFFEDF6F5), + color: Color(0xFFF1F5F9), borderRadius: BorderRadius.circular(6), ), - padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16), + padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16), child: Row( children: [ Expanded(flex: 1, child: Text('S.No.', style: _headerStyle)), @@ -773,10 +780,11 @@ class EnquiryListState extends ConsumerState { Widget _buildDataRow(Map item, sno) { return Container( - padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16), + padding: const EdgeInsets.symmetric(vertical: 2, horizontal: 16), // margin: const EdgeInsets.only(top: 10), decoration: BoxDecoration( color: Colors.white, + // color: Color(0xFFE0F7F9), border: const Border( bottom: BorderSide(color: Color(0xFFEAEAEA), width: 1), @@ -869,13 +877,13 @@ class EnquiryListState extends ConsumerState { child: IconButton( icon: Image.asset( "assets/miscellaneous/Edit.png", - height: 15, + height: 12, width: 15, ), onPressed: () { handleEdit(item); }, - splashRadius: 28, + splashRadius: 18, hoverColor: Colors.black12, padding: const EdgeInsets.all(8), constraints: const BoxConstraints(), @@ -1152,7 +1160,7 @@ class EnquiryListState extends ConsumerState { } static final _dataBold = GoogleFonts.inter( - fontSize: 14, + fontSize: 12, fontWeight: FontWeight.w400, color: Color(0xFF000000), @@ -1168,9 +1176,15 @@ class EnquiryListState extends ConsumerState { // color: Colors.black, // fontWeight: FontWeight.bold, // ); - static final _headerStyle = GoogleFonts.inter( - color: Colors.black, - fontWeight: FontWeight.bold, + // static final _headerStyle = GoogleFonts.inter( + // color: Colors.black, + // fontWeight: FontWeight.bold, + // ); + + static final _headerStyle = GoogleFonts.poppins( + fontSize: 11.2, + fontWeight: FontWeight.w500, + color: Color(0xFF1E293B), ); static final _cardheaderStyle = GoogleFonts.inter( color: Colors.black, diff --git a/lib/presentation/screens/dashboard/dashboard.dart b/lib/presentation/screens/dashboard/dashboard.dart index 5075791..ab063e8 100644 --- a/lib/presentation/screens/dashboard/dashboard.dart +++ b/lib/presentation/screens/dashboard/dashboard.dart @@ -1013,8 +1013,9 @@ class agentPendings extends StatelessWidget { print('-Data: $data'); return Card( - color: const Color(0xFFEAF6F4), - elevation: 0, + color: Colors.white, + // color: const Color(0xFFEAF6F4), + elevation: 1, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), child: Padding( padding: const EdgeInsets.all(12.0), @@ -1029,7 +1030,8 @@ class agentPendings extends StatelessWidget { Container( padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 12), decoration: BoxDecoration( - color: const Color(0xFF3E5B56), + color: Color(0xFFE3F9F8), + // color: const Color(0xFF3E5B56), borderRadius: BorderRadius.circular(10), ), child: Row( @@ -1122,14 +1124,17 @@ class agentPendings extends StatelessWidget { onStaffEdit!(row['id'].toString(), stringFlag); }, child: Container( - margin: const EdgeInsets.symmetric(vertical: 5), + // margin: const EdgeInsets.symmetric(vertical: 5), padding: const EdgeInsets.symmetric( vertical: 5, horizontal: 12, ), decoration: BoxDecoration( color: Colors.white, - borderRadius: BorderRadius.circular(10), + borderRadius: BorderRadius.circular(2), + border: Border( + bottom: BorderSide(color: Colors.blueGrey.shade50), + ), ), child: Row( children: [ diff --git a/lib/presentation/screens/staff/Enquiry/enquiry_inline_list.dart b/lib/presentation/screens/staff/Enquiry/enquiry_inline_list.dart index 261889d..d761fa4 100644 --- a/lib/presentation/screens/staff/Enquiry/enquiry_inline_list.dart +++ b/lib/presentation/screens/staff/Enquiry/enquiry_inline_list.dart @@ -12,6 +12,7 @@ import 'package:intl/intl.dart'; import 'package:nhance_partner/presentation/screens/staff/Enquiry/quotationPopUpAccptReject.dart'; import 'package:nhance_partner/presentation/screens/staff/Enquiry/raise_enq_form.dart'; import 'package:nhance_partner/presentation/screens/staff/Enquiry/tabs/tab.dart'; +import 'package:nhance_partner/presentation/themes/indicators/customizd_multi_file_upload.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../../../../core/config/env.dart'; @@ -132,8 +133,9 @@ class EnquiryStaffState extends ConsumerState { "email": controllers["email"]?.text, "reg_no": controllers["regNo"]?.text, "vehicle_type_id": selectedVehicleType, - "is_data_created_by_handler": roleId == 'handler' ? '1' : '0', - "is_data_created_by_manager": roleId == 'manager' ? '1' : '0', + // "is_data_created_by_handler": roleId == 'handler' ? '1' : '0', + // "is_data_created_by_manager": roleId == 'manager' ? '1' : '0', + "is_data_created_by_staff": roleId != null ? '1' : '0', // "insurer_id": selectedInsurer, // "rc_file_name": "rc_doc.pdf", // "id_proof_file_name": "id_proof.pdf", @@ -1706,7 +1708,7 @@ class EnquiryStaffState extends ConsumerState { }) { final isMobile = ResponsiveLayout.isMobile(context); - final uploadWidget = ThemedUploadField( + final uploadWidget = ThemedMultiFileUploadField( hintText: hintText ?? "Upload Document", txtwidth: width, // txtwidth: MediaQuery.of(context).size.width * 0.08, @@ -1720,6 +1722,20 @@ class EnquiryStaffState extends ConsumerState { onFileSelected: onFileSelected, ); + // final uploadWidget = ThemedUploadField( + // hintText: hintText ?? "Upload Document", + // txtwidth: width, + // // txtwidth: MediaQuery.of(context).size.width * 0.08, + // padVertical: 6, + // padHorizontal: 8, + // + // backgroundColor: Colors.white, + // // backgroundColor: Color(0xffD9EBE8), + // txtName: label, + // isTxtBtnCase: true, + // onFileSelected: onFileSelected, + // ); + return Column( crossAxisAlignment: CrossAxisAlignment.end, children: [ @@ -2120,9 +2136,8 @@ class EnquiryStaffState extends ConsumerState { spacing: 12, runSpacing: 12, children: [ - buildAgentName(context, fromHeader: false), buildSelectStaffMem(context), - + buildAgentName(context, fromHeader: false), buildInsurer(context), buildInsuredName(context), buildVehicleNumber(context), @@ -3135,25 +3150,25 @@ class EnquiryStaffState extends ConsumerState { return DataRow( cells: [ - // DataCell( - // SizedBox( - // width: 80, - // child: Row( - // children: [ - // // Text(item['created_on'], style: _dataBold), - // Text( - // formatDateTimeForTable(item['created_on'], newLine: true), - // style: _dataBoldthm1, - // ), - // ], - // ), - // ), - // ), + DataCell( + SizedBox( + width: 80, + child: Row( + children: [ + // Text(item['created_on'], style: _dataBold), + Text( + formatDateTimeForTable(item['created_on'], newLine: true), + style: _dataBoldthm1, + ), + ], + ), + ), + ), // Assigned To DataCell( SizedBox( // flex: 1, - width: 100, + width: 120, child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center, @@ -3164,7 +3179,7 @@ class EnquiryStaffState extends ConsumerState { : '-', style: _dataBold, ), - // Text(_formatDate(item['updated_on']), style: _dataBoldthm4), + Text(_formatDate(item['updated_on']), style: _dataBoldthm4), ], ), ), @@ -3522,7 +3537,7 @@ class EnquiryStaffState extends ConsumerState { // Add this helper method to generate DataColumns List _buildDataColumns() { return [ - // DataColumn(label: Text('Received Date', style: _headerStyle)), + DataColumn(label: Text('Received Date', style: _headerStyle)), DataColumn(label: Text('Assigned To *', style: _headerStyle)), DataColumn(label: Text('Partner *', style: _headerStyle)), @@ -3545,14 +3560,14 @@ class EnquiryStaffState extends ConsumerState { padding: EdgeInsets.symmetric(horizontal: 16, vertical: 8), child: Row( children: [ - // _buildHeaderCell('Received Date', 120), + _buildHeaderCell('Received Date', 110), _buildHeaderCell('Assigned To *', 130), _buildHeaderCell('Partner *', 160), // _buildHeaderCell('Broker *', 100), _buildHeaderCell('Insurer *', 90), - _buildHeaderCell('Insured Name *', 120), - _buildHeaderCell('Vehicle No *', 110), + _buildHeaderCell('Insured Name *', 110), + _buildHeaderCell('Vehicle No *', 90), _buildHeaderCell('Action', 60), // _buildHeaderCell('Assigned Date', 100), _buildHeaderCell('Premium', 100), diff --git a/lib/presentation/screens/staff/Enquiry/raise_enq_form.dart b/lib/presentation/screens/staff/Enquiry/raise_enq_form.dart index 3c21696..d0c7c95 100644 --- a/lib/presentation/screens/staff/Enquiry/raise_enq_form.dart +++ b/lib/presentation/screens/staff/Enquiry/raise_enq_form.dart @@ -106,8 +106,9 @@ class RaiseEnqFormState extends ConsumerState { "email": controllers["email"]?.text, "reg_no": controllers["regNo"]?.text, "vehicle_type_id": selectedVehicleType, - "is_data_created_by_handler": roleId == 'handler' ? '1' : '0', - "is_data_created_by_manager": roleId == 'manager' ? '1' : '0', + // "is_data_created_by_handler": roleId == 'handler' ? '1' : '0', + // "is_data_created_by_manager": roleId == 'manager' ? '1' : '0', + "is_data_created_by_staff": roleId != null ? '1' : '0', // "insurer_id": selectedInsurer, // "rc_file_name": "rc_doc.pdf", // "id_proof_file_name": "id_proof.pdf", @@ -164,6 +165,7 @@ class RaiseEnqFormState extends ConsumerState { print('hansles'); getStaffDetailsForEnquiryAssignment(userID); } + getBroker(); }); getVehicleType(); @@ -256,6 +258,37 @@ class RaiseEnqFormState extends ConsumerState { } } + Future getBroker() async { + print('getBroker called'); + setState(() { + isLoading = true; + }); + + try { + final response = await apiService.fetchMasterDropDown('Broker'); + + if (response['status'] == 200) { + print('getBroker - ${response['data']}'); + setState(() { + getBrokerData = List>.from(response['data']); + print('API Data - $getBrokerData'); + + filteredBrokerData = List.from(getBrokerData); + print('originalData - $filteredBrokerData'); + }); + } else { + getBrokerData = []; + filteredBrokerData = []; + } + } catch (e) { + print('Exception occurred: $e'); + } finally { + setState(() { + isLoading = false; + }); + } + } + Future getAgentList(id) async { print('getAgentListData called'); setState(() { @@ -356,9 +389,11 @@ class RaiseEnqFormState extends ConsumerState { children: [ buildAgentName(context, fromHeader: true), if (roleId != 'staff') ...[buildSelectStaffMem(context)], - buildInsurer(context, fromHeader: true), - buildInsuredName(context, fromHeader: true), + buildBroker(context), + buildInsurer(context, fromHeader: true), + + // buildInsuredName(context, fromHeader: true), buildVehicleNumber(context), Row( children: [ @@ -931,6 +966,155 @@ class RaiseEnqFormState extends ConsumerState { ); } + Widget buildBroker(BuildContext context) { + Map? selectedBrokers = filteredBrokerData.firstWhere( + (item) => item['id'].toString() == selectedBroker, + orElse: () => {}, + ); + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Broker *', style: _subLabelTimeStyle), + + SizedBox(height: 5), + SizedBox( + // height: 30, + width: MediaQuery.of(context).size.width * 0.12, + child: DropdownSearch>( + key: dropDownKeyBroker, + selectedItem: selectedBrokers.isNotEmpty ? selectedBrokers : null, + items: (filter, infiniteScrollProps) { + return filteredBrokerData; + }, + + itemAsString: (val) => val['name'].toString(), // what to show + compareFn: (item, selectedItem) => + item['id'] == selectedItem['id'], // ✅ compare by id + validator: (val) { + if (val == null) { + return "Required"; // ✅ error message + } + return null; + }, + suffixProps: DropdownSuffixProps( + // make sure the dropdown button is visible + dropdownButtonProps: DropdownButtonProps( + isVisible: true, + padding: EdgeInsets.zero, // remove default padding + constraints: const BoxConstraints( + // shrink icon tap area + minWidth: 12, + minHeight: 12, + ), + iconSize: 15, // smaller icon + // icon: const Icon(Icons.arrow_drop_down), + ), + ), + dropdownBuilder: (context, selectedItem) => Align( + alignment: Alignment.centerLeft, + child: Text( + selectedItem != null ? selectedItem['name'].toString() : "", + style: GoogleFonts.poppins(fontSize: 11, color: Colors.black), + overflow: TextOverflow.ellipsis, + maxLines: 1, + softWrap: false, + ), + ), + decoratorProps: DropDownDecoratorProps( + decoration: + AppInputDecorations.dropdownDecoration( + label: "Select Broker", + ).copyWith( + filled: true, + fillColor: + Colors.white, // 👈 makes the dropdown input white + isDense: true, + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide( + color: Color(0xFFE2E8F0), + width: 0.5, + ), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide( + color: Color(0xFFE2E8F0), + width: 0.5, + ), + ), + contentPadding: EdgeInsets.symmetric( + horizontal: 8, + vertical: 6, + ), + ), + ), + + popupProps: PopupProps.menu( + fit: FlexFit.loose, + constraints: BoxConstraints(maxHeight: 250), + menuProps: MenuProps( + backgroundColor: + Colors.white, // 👈 sets dropdown background to white + ), + showSearchBox: true, + searchFieldProps: TextFieldProps( + autofocus: true, + style: GoogleFonts.inter(fontSize: 11, color: Colors.black), + decoration: InputDecoration( + contentPadding: EdgeInsets.all(1), + filled: true, + fillColor: Colors.white, + hintText: "Search Broker...", + hintStyle: GoogleFonts.inter( + fontSize: 12, + color: Colors.black, + ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide( + color: Colors.white, + ), // 👈 Normal border + ), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide( + color: Colors.white, + width: 1.5, + ), // 👈 Focused border + ), + ), + ), + + itemBuilder: (context, item, isDisabled, isSelected) { + return Container( + // color: isSelected ? Colors.blue.withOpacity(0.1) : null, + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 3, + ), + child: Text( + item['name'].toString(), + style: GoogleFonts.inter(fontSize: 12, color: Colors.black), + ), + ); + }, + // constraints: BoxConstraints(), + ), + + onChanged: (val) { + if (val != null) { + print("Selected Broker : ${val['name']}"); + print("Id: ${val['id']}"); + selectedBroker = val['id']; + // controllers['agentId']?.text = val['agent_code']; + // agentId = agent['id']; + } + }, + ), + ), + ], + ); + } + Widget buildSave(context) { return InkWell( onTap: () { diff --git a/lib/presentation/screens/staff/Enquiry/tabs/createQuotation.dart b/lib/presentation/screens/staff/Enquiry/tabs/createQuotation.dart index 9fe584f..51096d9 100644 --- a/lib/presentation/screens/staff/Enquiry/tabs/createQuotation.dart +++ b/lib/presentation/screens/staff/Enquiry/tabs/createQuotation.dart @@ -504,37 +504,37 @@ class CreateProposalFormState extends ConsumerState { child: buildFormFields(context), ), - Row( - crossAxisAlignment: CrossAxisAlignment.end, - mainAxisAlignment: MainAxisAlignment.end, - children: [ - GestureDetector( - onTap: () { - handleDone(); - // widget.onSubmit(controller.text.trim()); - // Navigator.of(context).pop(); - }, - child: Container( - padding: const EdgeInsets.symmetric( - horizontal: 25.0, - vertical: 10, - ), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8.0), - color: const Color(0xFF425B5B), - ), - child: Text( - 'Save', - style: GoogleFonts.poppins( - color: Colors.white, - fontSize: 12, - fontWeight: FontWeight.w600, - ), - ), - ), - ), - ], - ), + // Row( + // crossAxisAlignment: CrossAxisAlignment.end, + // mainAxisAlignment: MainAxisAlignment.end, + // children: [ + // GestureDetector( + // onTap: () { + // handleDone(); + // // widget.onSubmit(controller.text.trim()); + // // Navigator.of(context).pop(); + // }, + // child: Container( + // padding: const EdgeInsets.symmetric( + // horizontal: 25.0, + // vertical: 10, + // ), + // decoration: BoxDecoration( + // borderRadius: BorderRadius.circular(8.0), + // color: const Color(0xFF425B5B), + // ), + // child: Text( + // 'Save', + // style: GoogleFonts.poppins( + // color: Colors.white, + // fontSize: 12, + // fontWeight: FontWeight.w600, + // ), + // ), + // ), + // ), + // ], + // ), ], ); } @@ -555,6 +555,7 @@ class CreateProposalFormState extends ConsumerState { Spacer(), buildPremiumAmnt(context), Spacer(), + // buildDocuments(context), // if (!ResponsiveLayout.isMobile(context)) const SizedBox(height: 10), @@ -579,6 +580,38 @@ class CreateProposalFormState extends ConsumerState { buildDocuments(context), Spacer(), ], ), + + SizedBox(height: 10), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + GestureDetector( + onTap: () { + handleDone(); + // widget.onSubmit(controller.text.trim()); + // Navigator.of(context).pop(); + }, + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 25.0, + vertical: 10, + ), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8.0), + color: const Color(0xFF425B5B), + ), + child: Text( + 'Save', + style: GoogleFonts.poppins( + color: Colors.white, + fontSize: 12, + fontWeight: FontWeight.w600, + ), + ), + ), + ), + ], + ), ], ), ); diff --git a/lib/presentation/screens/staff/Enquiry/tabs/policyTab.dart b/lib/presentation/screens/staff/Enquiry/tabs/policyTab.dart index 62e4165..e5736a9 100644 --- a/lib/presentation/screens/staff/Enquiry/tabs/policyTab.dart +++ b/lib/presentation/screens/staff/Enquiry/tabs/policyTab.dart @@ -897,33 +897,33 @@ class PolicyStaffTabState extends ConsumerState { ), SizedBox(height: 1), // if (roleId != 'manager') ...[ - Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - InkWell( - onTap: () { - handleSave(); - }, - child: Container( - padding: EdgeInsets.symmetric(horizontal: 45.0, vertical: 8), - - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8.0), - color: Color(0xFF425B5B), - ), - child: Text( - // !hasPolicyData ? 'Submit' : 'Update', - 'Submit', - style: TextStyle( - color: Colors.white, - fontSize: 12, - fontWeight: FontWeight.w600, - ), - ), - ), - ), - ], - ), + // Row( + // mainAxisAlignment: MainAxisAlignment.end, + // children: [ + // InkWell( + // onTap: () { + // handleSave(); + // }, + // child: Container( + // padding: EdgeInsets.symmetric(horizontal: 45.0, vertical: 8), + // + // decoration: BoxDecoration( + // borderRadius: BorderRadius.circular(8.0), + // color: Color(0xFF425B5B), + // ), + // child: Text( + // // !hasPolicyData ? 'Submit' : 'Update', + // 'Submit', + // style: TextStyle( + // color: Colors.white, + // fontSize: 12, + // fontWeight: FontWeight.w600, + // ), + // ), + // ), + // ), + // ], + // ), // ], // ), ], @@ -1160,6 +1160,37 @@ class PolicyStaffTabState extends ConsumerState { ), ], ), + + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + InkWell( + onTap: () { + handleSave(); + }, + child: Container( + padding: EdgeInsets.symmetric( + horizontal: 45.0, + vertical: 8, + ), + + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8.0), + color: Color(0xFF425B5B), + ), + child: Text( + // !hasPolicyData ? 'Submit' : 'Update', + 'Submit', + style: TextStyle( + color: Colors.white, + fontSize: 12, + fontWeight: FontWeight.w600, + ), + ), + ), + ), + ], + ), ], ], ], diff --git a/lib/presentation/themes/indicators/customizd_multi_file_upload.dart b/lib/presentation/themes/indicators/customizd_multi_file_upload.dart new file mode 100644 index 0000000..6d16a1c --- /dev/null +++ b/lib/presentation/themes/indicators/customizd_multi_file_upload.dart @@ -0,0 +1,161 @@ +import 'package:flutter/material.dart'; +import 'package:file_picker/file_picker.dart'; +import 'package:google_fonts/google_fonts.dart'; + +import 'fileUploadService.dart'; +import 'multi_fileUploadService.dart'; + +class ThemedMultiFileUploadField extends StatefulWidget { + final String? hintText; + final double? txtwidth; + final double? txtheight; + final Color? backgroundColor; + final Color? borderColor; + final Color? errorBorderColor; + final Function(String fileName, PlatformFile file)? onFileSelected; + FormFieldValidator? validator; + final List? allowedExtensions; + final bool isTxtBtnCase; + final String? txtName; + final double? padVertical; + final double? padHorizontal; + + ThemedMultiFileUploadField({ + super.key, + this.hintText, + this.txtwidth, + this.txtheight, + this.backgroundColor, + this.borderColor, + this.errorBorderColor, + this.onFileSelected, + this.validator, + this.allowedExtensions, + this.isTxtBtnCase = false, + this.txtName, + this.padVertical, + this.padHorizontal, + }); + + @override + State createState() => + _ThemedMultiFileUploadFieldState(); +} + +class _ThemedMultiFileUploadFieldState + extends State { + final fileService = MultiFileUploadService(); + String? selectedFileName; + String? errorMessage; + + Future _pickFile() async { + final error = await fileService.pickFiles( + maxFileSizeInMB: 3, + allowedExtensions: widget.allowedExtensions, + ); + + if (error != null) { + setState(() => errorMessage = error); + ScaffoldMessenger.of( + context, + ).showSnackBar(SnackBar(content: Text(error))); + } else if (fileService.pickFiles != null) { + // setState(() { + // selectedFileName = fileService.pickFiles!.name; + // errorMessage = null; + // }); + + // widget.onFileSelected?.call( + // fileService.pickFiles!.name, + // fileService.pickFiles!, + // ); + } + } + + @override + Widget build(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: widget.txtwidth ?? MediaQuery.of(context).size.width, + height: widget.txtheight, + child: DecoratedBox( + decoration: BoxDecoration(borderRadius: BorderRadius.circular(10)), + child: InkWell( + onTap: _pickFile, + + borderRadius: BorderRadius.circular(10), + child: Container( + padding: EdgeInsets.symmetric( + vertical: widget.padVertical ?? 10, + horizontal: widget.padHorizontal ?? 15, + ), + decoration: BoxDecoration( + color: widget.backgroundColor ?? Colors.white, + borderRadius: BorderRadius.circular(10), + border: Border.all( + color: errorMessage != null + ? (widget.errorBorderColor ?? Colors.red) + : (widget.borderColor ?? + widget.backgroundColor ?? + Colors.grey.shade50), + ), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + if (!widget.isTxtBtnCase) ...[ + Expanded( + child: Text( + selectedFileName ?? + widget.hintText ?? + "Upload Document", + style: TextStyle( + fontSize: 12, + color: errorMessage != null + ? Colors.red + : Colors.black, + ), + overflow: TextOverflow.ellipsis, + ), + ), + const Icon( + Icons.file_upload_outlined, + color: Colors.black, + ), + ], + + if (widget.isTxtBtnCase) ...[ + Center( + child: Tooltip( + message: 'Upload Documents', + child: Text( + widget.txtName!, + style: GoogleFonts.inter(fontSize: 12), + ), + ), + ), + // const Icon( + // Icons.file_upload_outlined, + // color: Colors.black, + // ), + ], + ], + ), + ), + ), + ), + ), + if (errorMessage != null) + Padding( + padding: const EdgeInsets.only(left: 8, top: 4), + child: Text( + errorMessage!, + style: const TextStyle(color: Colors.red, fontSize: 10), + ), + ), + ], + ); + } +} diff --git a/lib/presentation/themes/indicators/multi_fileUploadService.dart b/lib/presentation/themes/indicators/multi_fileUploadService.dart new file mode 100644 index 0000000..93e3841 --- /dev/null +++ b/lib/presentation/themes/indicators/multi_fileUploadService.dart @@ -0,0 +1,51 @@ +import 'package:file_picker/file_picker.dart'; + +class MultiFileUploadService { + MultiFileUploadService._(); + static final MultiFileUploadService _instance = MultiFileUploadService._(); + factory MultiFileUploadService() => _instance; + + final List _files = []; + + List get files => List.unmodifiable(_files); + + // Allowed extensions + // static const allowedExtensions = ['pdf', 'png', 'jpg', 'jpeg', 'heic']; + static const defaultAllowedExtensions = ['pdf', 'png', 'jpg', 'jpeg']; + + Future pickFiles({ + int maxFileSizeInMB = 3, + List? allowedExtensions, + }) async { + final extensions = allowedExtensions ?? defaultAllowedExtensions; + final result = await FilePicker.platform.pickFiles( + allowMultiple: true, + withData: true, + type: FileType.custom, + allowedExtensions: extensions, + ); + + if (result != null) { + for (final file in result.files) { + final ext = file.extension?.toLowerCase() ?? ''; + final sizeInMB = (file.size / (1024 * 1024)); + + if (!allowedExtensions!.contains(ext)) { + return "Unsupported file format: ${file.name}"; + } + if (sizeInMB > maxFileSizeInMB) { + return "File too large (${file.name}). Max $maxFileSizeInMB MB allowed."; + } + } + + _files.addAll(result.files); + } + return null; // success + } + + void removeFileAt(int index) { + if (index >= 0 && index < _files.length) _files.removeAt(index); + } + + void clearAll() => _files.clear(); +} diff --git a/lib/presentation/themes/indicators/mutli_FileUpload.dart b/lib/presentation/themes/indicators/mutli_FileUpload.dart new file mode 100644 index 0000000..dd9e841 --- /dev/null +++ b/lib/presentation/themes/indicators/mutli_FileUpload.dart @@ -0,0 +1,102 @@ +import 'package:flutter/material.dart'; +import 'multi_fileUploadService.dart'; + +class MultiFileUploadWidget extends StatefulWidget { + const MultiFileUploadWidget({super.key}); + + @override + State createState() => _MultiFileUploadWidgetState(); +} + +class _MultiFileUploadWidgetState extends State { + final fileService = MultiFileUploadService(); + String? errorMessage; + + void _pickFiles() async { + final error = await fileService.pickFiles( + maxFileSizeInMB: 10, + ); // 5 MB limit + if (error != null) { + if (mounted) { + setState(() { + errorMessage = error; + }); + + // also show alert dialog for big error messages + // showDialog( + // context: context, + // builder: (ctx) => AlertDialog( + // title: const Text("File Upload Error"), + // content: Text(error), + // actions: [ + // TextButton( + // onPressed: () => Navigator.pop(ctx), + // child: const Text("OK"), + // ), + // ], + // ), + // ); + } + } else { + setState(() { + errorMessage = null; + }); + } + } + + void _removeFile(int index) { + fileService.removeFileAt(index); + setState(() {}); + } + + @override + Widget build(BuildContext context) { + final files = fileService.files; + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + OutlinedButton.icon( + onPressed: _pickFiles, + icon: const Icon( + Icons.file_upload_outlined, + color: Color(0xFFE26728), + size: 24, + ), + label: const Text( + "Upload Documents", + style: TextStyle(fontSize: 14, color: Colors.black), + overflow: TextOverflow.ellipsis, + ), + style: OutlinedButton.styleFrom( + side: const BorderSide(color: Color(0xFFE26728)), + ), + ), + + if (errorMessage != null) ...[ + const SizedBox(height: 4), + Text( + errorMessage!, + style: const TextStyle(color: Colors.red, fontSize: 12), + ), + ], + + const SizedBox(height: 8), + ...files.asMap().entries.map((entry) { + final index = entry.key; + final file = entry.value; + + return ListTile( + dense: true, + contentPadding: EdgeInsets.zero, + title: Text(file.name, style: const TextStyle(fontSize: 14)), + trailing: IconButton( + icon: const Icon(Icons.close, color: Colors.red), + onPressed: () => _removeFile(index), + ), + ); + }), + ], + ); + } +}