diff --git a/.dart_tool/dartpad/web_plugin_registrant.dart b/.dart_tool/dartpad/web_plugin_registrant.dart
new file mode 100644
index 0000000..75482db
--- /dev/null
+++ b/.dart_tool/dartpad/web_plugin_registrant.dart
@@ -0,0 +1,16 @@
+// Flutter web plugin registrant file.
+//
+// Generated file. Do not edit.
+//
+
+// @dart = 2.13
+// ignore_for_file: type=lint
+
+import 'package:file_picker/_internal/file_picker_web.dart';
+import 'package:flutter_web_plugins/flutter_web_plugins.dart';
+
+void registerPlugins([final Registrar? pluginRegistrar]) {
+ final Registrar registrar = pluginRegistrar ?? webPluginRegistrar;
+ FilePickerWeb.registerWith(registrar);
+ registrar.registerMessageHandler();
+}
diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json
new file mode 100644
index 0000000..8cf8525
--- /dev/null
+++ b/.dart_tool/package_config.json
@@ -0,0 +1,341 @@
+{
+ "configVersion": 2,
+ "packages": [
+ {
+ "name": "async",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/async-2.11.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "boolean_selector",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/boolean_selector-2.1.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "characters",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/characters-1.3.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "clock",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/clock-1.1.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "collection",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/collection-1.19.0",
+ "packageUri": "lib/",
+ "languageVersion": "3.4"
+ },
+ {
+ "name": "cross_file",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/cross_file-0.3.4+2",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "cupertino_icons",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/cupertino_icons-1.0.8",
+ "packageUri": "lib/",
+ "languageVersion": "3.1"
+ },
+ {
+ "name": "fake_async",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/fake_async-1.3.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "ffi",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/ffi-2.1.3",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "file_picker",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/file_picker-8.3.1",
+ "packageUri": "lib/",
+ "languageVersion": "3.4"
+ },
+ {
+ "name": "flutter",
+ "rootUri": "file:///C:/src/flutter/flutter/packages/flutter",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "flutter_lints",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_lints-5.0.0",
+ "packageUri": "lib/",
+ "languageVersion": "3.5"
+ },
+ {
+ "name": "flutter_plugin_android_lifecycle",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.24",
+ "packageUri": "lib/",
+ "languageVersion": "3.5"
+ },
+ {
+ "name": "flutter_test",
+ "rootUri": "file:///C:/src/flutter/flutter/packages/flutter_test",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "flutter_web_plugins",
+ "rootUri": "file:///C:/src/flutter/flutter/packages/flutter_web_plugins",
+ "packageUri": "lib/",
+ "languageVersion": "3.2"
+ },
+ {
+ "name": "get",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/get-4.6.6",
+ "packageUri": "lib/",
+ "languageVersion": "2.15"
+ },
+ {
+ "name": "http",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/http-1.3.0",
+ "packageUri": "lib/",
+ "languageVersion": "3.4"
+ },
+ {
+ "name": "http_parser",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/http_parser-4.1.2",
+ "packageUri": "lib/",
+ "languageVersion": "3.4"
+ },
+ {
+ "name": "intl",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/intl-0.20.1",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "leak_tracker",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/leak_tracker-10.0.7",
+ "packageUri": "lib/",
+ "languageVersion": "3.2"
+ },
+ {
+ "name": "leak_tracker_flutter_testing",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/leak_tracker_flutter_testing-3.0.8",
+ "packageUri": "lib/",
+ "languageVersion": "3.2"
+ },
+ {
+ "name": "leak_tracker_testing",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/leak_tracker_testing-3.0.1",
+ "packageUri": "lib/",
+ "languageVersion": "3.2"
+ },
+ {
+ "name": "lints",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/lints-5.1.1",
+ "packageUri": "lib/",
+ "languageVersion": "3.6"
+ },
+ {
+ "name": "matcher",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/matcher-0.12.16+1",
+ "packageUri": "lib/",
+ "languageVersion": "3.0"
+ },
+ {
+ "name": "material_color_utilities",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/material_color_utilities-0.11.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "meta",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/meta-1.15.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "path",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/path-1.9.0",
+ "packageUri": "lib/",
+ "languageVersion": "3.0"
+ },
+ {
+ "name": "path_provider",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider-2.1.5",
+ "packageUri": "lib/",
+ "languageVersion": "3.4"
+ },
+ {
+ "name": "path_provider_android",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_android-2.2.15",
+ "packageUri": "lib/",
+ "languageVersion": "3.5"
+ },
+ {
+ "name": "path_provider_foundation",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_foundation-2.4.1",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "path_provider_linux",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_linux-2.2.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.19"
+ },
+ {
+ "name": "path_provider_platform_interface",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_platform_interface-2.1.2",
+ "packageUri": "lib/",
+ "languageVersion": "3.0"
+ },
+ {
+ "name": "path_provider_windows",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_windows-2.3.0",
+ "packageUri": "lib/",
+ "languageVersion": "3.2"
+ },
+ {
+ "name": "pixel_snap",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/pixel_snap-0.1.5",
+ "packageUri": "lib/",
+ "languageVersion": "3.0"
+ },
+ {
+ "name": "platform",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/platform-3.1.6",
+ "packageUri": "lib/",
+ "languageVersion": "3.2"
+ },
+ {
+ "name": "plugin_platform_interface",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/plugin_platform_interface-2.1.8",
+ "packageUri": "lib/",
+ "languageVersion": "3.0"
+ },
+ {
+ "name": "simple_gesture_detector",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/simple_gesture_detector-0.2.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "sizer",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/sizer-3.0.5",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "sky_engine",
+ "rootUri": "file:///C:/src/flutter/flutter/bin/cache/pkg/sky_engine",
+ "packageUri": "lib/",
+ "languageVersion": "3.2"
+ },
+ {
+ "name": "source_span",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/source_span-1.10.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "stack_trace",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/stack_trace-1.12.0",
+ "packageUri": "lib/",
+ "languageVersion": "3.4"
+ },
+ {
+ "name": "stream_channel",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/stream_channel-2.1.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.19"
+ },
+ {
+ "name": "string_scanner",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/string_scanner-1.3.0",
+ "packageUri": "lib/",
+ "languageVersion": "3.1"
+ },
+ {
+ "name": "table_calendar",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/table_calendar-3.2.0",
+ "packageUri": "lib/",
+ "languageVersion": "3.0"
+ },
+ {
+ "name": "term_glyph",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/term_glyph-1.2.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "test_api",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/test_api-0.7.3",
+ "packageUri": "lib/",
+ "languageVersion": "3.4"
+ },
+ {
+ "name": "typed_data",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/typed_data-1.4.0",
+ "packageUri": "lib/",
+ "languageVersion": "3.5"
+ },
+ {
+ "name": "vector_math",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/vector_math-2.1.4",
+ "packageUri": "lib/",
+ "languageVersion": "2.14"
+ },
+ {
+ "name": "vm_service",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/vm_service-14.3.0",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "vph_common_widgets",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/vph_common_widgets-0.0.3",
+ "packageUri": "lib/",
+ "languageVersion": "2.19"
+ },
+ {
+ "name": "vph_web_date_picker",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/vph_web_date_picker-0.0.6",
+ "packageUri": "lib/",
+ "languageVersion": "2.19"
+ },
+ {
+ "name": "web",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/web-1.1.0",
+ "packageUri": "lib/",
+ "languageVersion": "3.4"
+ },
+ {
+ "name": "win32",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/win32-5.10.1",
+ "packageUri": "lib/",
+ "languageVersion": "3.5"
+ },
+ {
+ "name": "xdg_directories",
+ "rootUri": "file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/xdg_directories-1.1.0",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "shayog",
+ "rootUri": "../",
+ "packageUri": "lib/",
+ "languageVersion": "3.6"
+ }
+ ],
+ "generated": "2025-02-07T11:05:55.892643Z",
+ "generator": "pub",
+ "generatorVersion": "3.6.1",
+ "flutterRoot": "file:///C:/src/flutter/flutter",
+ "flutterVersion": "3.27.3",
+ "pubCache": "file:///C:/Users/Admin/AppData/Local/Pub/Cache"
+}
diff --git a/.dart_tool/package_config_subset b/.dart_tool/package_config_subset
new file mode 100644
index 0000000..a9515de
--- /dev/null
+++ b/.dart_tool/package_config_subset
@@ -0,0 +1,221 @@
+async
+2.18
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/async-2.11.0/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/async-2.11.0/lib/
+boolean_selector
+2.17
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/boolean_selector-2.1.1/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/boolean_selector-2.1.1/lib/
+characters
+2.12
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/characters-1.3.0/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/characters-1.3.0/lib/
+clock
+2.12
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/clock-1.1.1/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/clock-1.1.1/lib/
+collection
+3.4
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/collection-1.19.0/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/collection-1.19.0/lib/
+cross_file
+3.3
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/cross_file-0.3.4+2/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/cross_file-0.3.4+2/lib/
+cupertino_icons
+3.1
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/cupertino_icons-1.0.8/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/cupertino_icons-1.0.8/lib/
+fake_async
+2.12
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/fake_async-1.3.1/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/fake_async-1.3.1/lib/
+ffi
+3.3
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/ffi-2.1.3/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/ffi-2.1.3/lib/
+file_picker
+3.4
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/file_picker-8.3.1/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/file_picker-8.3.1/lib/
+flutter_lints
+3.5
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_lints-5.0.0/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_lints-5.0.0/lib/
+flutter_plugin_android_lifecycle
+3.5
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.24/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.24/lib/
+get
+2.15
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/get-4.6.6/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/get-4.6.6/lib/
+http
+3.4
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/http-1.3.0/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/http-1.3.0/lib/
+http_parser
+3.4
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/http_parser-4.1.2/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/http_parser-4.1.2/lib/
+intl
+3.3
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/intl-0.20.1/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/intl-0.20.1/lib/
+leak_tracker
+3.2
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/leak_tracker-10.0.7/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/leak_tracker-10.0.7/lib/
+leak_tracker_flutter_testing
+3.2
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/leak_tracker_flutter_testing-3.0.8/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/leak_tracker_flutter_testing-3.0.8/lib/
+leak_tracker_testing
+3.2
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/leak_tracker_testing-3.0.1/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/leak_tracker_testing-3.0.1/lib/
+lints
+3.6
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/lints-5.1.1/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/lints-5.1.1/lib/
+matcher
+3.0
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/matcher-0.12.16+1/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/matcher-0.12.16+1/lib/
+material_color_utilities
+2.17
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/material_color_utilities-0.11.1/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/material_color_utilities-0.11.1/lib/
+meta
+2.12
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/meta-1.15.0/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/meta-1.15.0/lib/
+path
+3.0
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/path-1.9.0/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/path-1.9.0/lib/
+path_provider
+3.4
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider-2.1.5/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider-2.1.5/lib/
+path_provider_android
+3.5
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_android-2.2.15/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_android-2.2.15/lib/
+path_provider_foundation
+3.3
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_foundation-2.4.1/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_foundation-2.4.1/lib/
+path_provider_linux
+2.19
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_linux-2.2.1/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_linux-2.2.1/lib/
+path_provider_platform_interface
+3.0
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_platform_interface-2.1.2/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_platform_interface-2.1.2/lib/
+path_provider_windows
+3.2
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_windows-2.3.0/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_windows-2.3.0/lib/
+pixel_snap
+3.0
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/pixel_snap-0.1.5/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/pixel_snap-0.1.5/lib/
+platform
+3.2
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/platform-3.1.6/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/platform-3.1.6/lib/
+plugin_platform_interface
+3.0
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/plugin_platform_interface-2.1.8/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/plugin_platform_interface-2.1.8/lib/
+simple_gesture_detector
+2.12
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/simple_gesture_detector-0.2.1/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/simple_gesture_detector-0.2.1/lib/
+sizer
+2.12
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/sizer-3.0.5/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/sizer-3.0.5/lib/
+source_span
+2.18
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/source_span-1.10.0/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/source_span-1.10.0/lib/
+stack_trace
+3.4
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/stack_trace-1.12.0/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/stack_trace-1.12.0/lib/
+stream_channel
+2.19
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/stream_channel-2.1.2/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/stream_channel-2.1.2/lib/
+string_scanner
+3.1
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/string_scanner-1.3.0/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/string_scanner-1.3.0/lib/
+table_calendar
+3.0
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/table_calendar-3.2.0/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/table_calendar-3.2.0/lib/
+term_glyph
+2.12
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/term_glyph-1.2.1/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/term_glyph-1.2.1/lib/
+test_api
+3.4
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/test_api-0.7.3/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/test_api-0.7.3/lib/
+typed_data
+3.5
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/typed_data-1.4.0/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/typed_data-1.4.0/lib/
+vector_math
+2.14
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/vector_math-2.1.4/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/vector_math-2.1.4/lib/
+vm_service
+3.3
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/vm_service-14.3.0/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/vm_service-14.3.0/lib/
+vph_common_widgets
+2.19
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/vph_common_widgets-0.0.3/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/vph_common_widgets-0.0.3/lib/
+vph_web_date_picker
+2.19
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/vph_web_date_picker-0.0.6/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/vph_web_date_picker-0.0.6/lib/
+web
+3.4
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/web-1.1.0/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/web-1.1.0/lib/
+win32
+3.5
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/win32-5.10.1/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/win32-5.10.1/lib/
+xdg_directories
+3.3
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/xdg_directories-1.1.0/
+file:///C:/Users/Admin/AppData/Local/Pub/Cache/hosted/pub.dev/xdg_directories-1.1.0/lib/
+shayog
+3.6
+file:///C:/Users/Admin/Downloads/shayog/
+file:///C:/Users/Admin/Downloads/shayog/lib/
+sky_engine
+3.2
+file:///C:/src/flutter/flutter/bin/cache/pkg/sky_engine/
+file:///C:/src/flutter/flutter/bin/cache/pkg/sky_engine/lib/
+flutter
+3.3
+file:///C:/src/flutter/flutter/packages/flutter/
+file:///C:/src/flutter/flutter/packages/flutter/lib/
+flutter_test
+3.3
+file:///C:/src/flutter/flutter/packages/flutter_test/
+file:///C:/src/flutter/flutter/packages/flutter_test/lib/
+flutter_web_plugins
+3.2
+file:///C:/src/flutter/flutter/packages/flutter_web_plugins/
+file:///C:/src/flutter/flutter/packages/flutter_web_plugins/lib/
+2
diff --git a/.dart_tool/version b/.dart_tool/version
new file mode 100644
index 0000000..e25f6e7
--- /dev/null
+++ b/.dart_tool/version
@@ -0,0 +1 @@
+3.27.3
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml
new file mode 100644
index 0000000..8337b2a
--- /dev/null
+++ b/.idea/caches/deviceStreaming.xml
@@ -0,0 +1,461 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..5c94cb2
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..f12ab1a
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/shayog.iml b/.idea/shayog.iml
new file mode 100644
index 0000000..3ec3084
--- /dev/null
+++ b/.idea/shayog.iml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java b/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
new file mode 100644
index 0000000..8a72c20
--- /dev/null
+++ b/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
@@ -0,0 +1,34 @@
+package io.flutter.plugins;
+
+import androidx.annotation.Keep;
+import androidx.annotation.NonNull;
+import io.flutter.Log;
+
+import io.flutter.embedding.engine.FlutterEngine;
+
+/**
+ * Generated file. Do not edit.
+ * This file is generated by the Flutter tool based on the
+ * plugins that support the Android platform.
+ */
+@Keep
+public final class GeneratedPluginRegistrant {
+ private static final String TAG = "GeneratedPluginRegistrant";
+ public static void registerWith(@NonNull FlutterEngine flutterEngine) {
+ try {
+ flutterEngine.getPlugins().add(new com.mr.flutter.plugin.filepicker.FilePickerPlugin());
+ } catch (Exception e) {
+ Log.e(TAG, "Error registering plugin file_picker, com.mr.flutter.plugin.filepicker.FilePickerPlugin", e);
+ }
+ try {
+ flutterEngine.getPlugins().add(new io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin());
+ } catch (Exception e) {
+ Log.e(TAG, "Error registering plugin flutter_plugin_android_lifecycle, io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin", e);
+ }
+ try {
+ flutterEngine.getPlugins().add(new io.flutter.plugins.pathprovider.PathProviderPlugin());
+ } catch (Exception e) {
+ Log.e(TAG, "Error registering plugin path_provider_android, io.flutter.plugins.pathprovider.PathProviderPlugin", e);
+ }
+ }
+}
diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..13372ae
Binary files /dev/null and b/android/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/android/gradlew b/android/gradlew
new file mode 100644
index 0000000..9d82f78
--- /dev/null
+++ b/android/gradlew
@@ -0,0 +1,160 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+esac
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/android/gradlew.bat b/android/gradlew.bat
new file mode 100644
index 0000000..8a0b282
--- /dev/null
+++ b/android/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/android/local.properties b/android/local.properties
new file mode 100644
index 0000000..5fbcdd2
--- /dev/null
+++ b/android/local.properties
@@ -0,0 +1,5 @@
+sdk.dir=C:\\Users\\Admin\\AppData\\Local\\Android\\sdk
+flutter.sdk=C:\\src\\flutter\\flutter
+flutter.buildMode=release
+flutter.versionName=1.0.0
+flutter.versionCode=1
\ No newline at end of file
diff --git a/android/shayog_android.iml b/android/shayog_android.iml
new file mode 100644
index 0000000..3e44773
--- /dev/null
+++ b/android/shayog_android.iml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ios/Flutter/Generated.xcconfig b/ios/Flutter/Generated.xcconfig
new file mode 100644
index 0000000..fef6e64
--- /dev/null
+++ b/ios/Flutter/Generated.xcconfig
@@ -0,0 +1,14 @@
+// This is a generated file; do not edit or check into version control.
+FLUTTER_ROOT=C:\src\flutter\flutter
+FLUTTER_APPLICATION_PATH=C:\Users\Admin\Downloads\shayog
+COCOAPODS_PARALLEL_CODE_SIGN=true
+FLUTTER_TARGET=lib\main.dart
+FLUTTER_BUILD_DIR=build
+FLUTTER_BUILD_NAME=1.0.0
+FLUTTER_BUILD_NUMBER=1
+EXCLUDED_ARCHS[sdk=iphonesimulator*]=i386
+EXCLUDED_ARCHS[sdk=iphoneos*]=armv7
+DART_OBFUSCATION=false
+TRACK_WIDGET_CREATION=true
+TREE_SHAKE_ICONS=false
+PACKAGE_CONFIG=.dart_tool/package_config.json
diff --git a/ios/Flutter/flutter_export_environment.sh b/ios/Flutter/flutter_export_environment.sh
new file mode 100644
index 0000000..a5055b5
--- /dev/null
+++ b/ios/Flutter/flutter_export_environment.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+# This is a generated file; do not edit or check into version control.
+export "FLUTTER_ROOT=C:\src\flutter\flutter"
+export "FLUTTER_APPLICATION_PATH=C:\Users\Admin\Downloads\shayog"
+export "COCOAPODS_PARALLEL_CODE_SIGN=true"
+export "FLUTTER_TARGET=lib\main.dart"
+export "FLUTTER_BUILD_DIR=build"
+export "FLUTTER_BUILD_NAME=1.0.0"
+export "FLUTTER_BUILD_NUMBER=1"
+export "DART_OBFUSCATION=false"
+export "TRACK_WIDGET_CREATION=true"
+export "TREE_SHAKE_ICONS=false"
+export "PACKAGE_CONFIG=.dart_tool/package_config.json"
diff --git a/ios/Runner/GeneratedPluginRegistrant.h b/ios/Runner/GeneratedPluginRegistrant.h
new file mode 100644
index 0000000..7a89092
--- /dev/null
+++ b/ios/Runner/GeneratedPluginRegistrant.h
@@ -0,0 +1,19 @@
+//
+// Generated file. Do not edit.
+//
+
+// clang-format off
+
+#ifndef GeneratedPluginRegistrant_h
+#define GeneratedPluginRegistrant_h
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface GeneratedPluginRegistrant : NSObject
++ (void)registerWithRegistry:(NSObject*)registry;
+@end
+
+NS_ASSUME_NONNULL_END
+#endif /* GeneratedPluginRegistrant_h */
diff --git a/ios/Runner/GeneratedPluginRegistrant.m b/ios/Runner/GeneratedPluginRegistrant.m
new file mode 100644
index 0000000..058bfeb
--- /dev/null
+++ b/ios/Runner/GeneratedPluginRegistrant.m
@@ -0,0 +1,28 @@
+//
+// Generated file. Do not edit.
+//
+
+// clang-format off
+
+#import "GeneratedPluginRegistrant.h"
+
+#if __has_include()
+#import
+#else
+@import file_picker;
+#endif
+
+#if __has_include()
+#import
+#else
+@import path_provider_foundation;
+#endif
+
+@implementation GeneratedPluginRegistrant
+
++ (void)registerWithRegistry:(NSObject*)registry {
+ [FilePickerPlugin registerWithRegistrar:[registry registrarForPlugin:@"FilePickerPlugin"]];
+ [PathProviderPlugin registerWithRegistrar:[registry registrarForPlugin:@"PathProviderPlugin"]];
+}
+
+@end
diff --git a/lib/components/common/input_field.dart b/lib/components/common/input_field.dart
index 7e926d1..d645bb1 100644
--- a/lib/components/common/input_field.dart
+++ b/lib/components/common/input_field.dart
@@ -45,9 +45,10 @@ class InputField extends StatelessWidget {
// return Container(height: 0, color: Colors.transparent);
// },
style: 12.txtSBoldBlack,
- maxLength: maxLength,
- decoration: InputDecoration(
- counterText: '',
+maxLength: maxLength,
+ decoration: InputDecoration(counterText: '',
+
+
isDense: true,
hintStyle: 11.txtSBoldGrey,
maintainHintHeight: true,
@@ -61,6 +62,7 @@ class InputField extends StatelessWidget {
focusedErrorBorder: underLineBorder ?? inputBorder,
filled: true,
hintText: title ?? "",
+
labelStyle: 12.txtSBoldGrey,
fillColor: AppColors.clrD9,
errorText: "",
diff --git a/lib/components/styles/app_strings.dart b/lib/components/styles/app_strings.dart
index 7a1d7bf..a2f7a1a 100644
--- a/lib/components/styles/app_strings.dart
+++ b/lib/components/styles/app_strings.dart
@@ -87,6 +87,9 @@ class AppStrings {
static const String paymentView = "Payment View";
static const String transporterInbound = "Transporter Inbound Transaction";
static const String close = "Close";
+ static const String billDayConfiguration = "Bill Day Configuration";
+ static const String bufferDayConfiguration = "Buffer Day Configuration";
+ static const String ccnConfiguration = "CCN Configuration";
static const String utrAmt = "UTR Amount ";
diff --git a/lib/feature/presentation/screens/admin/configuration_management/configuration_screen.dart b/lib/feature/presentation/screens/admin/configuration_management/configuration_screen.dart
index 92ddd02..8f71760 100644
--- a/lib/feature/presentation/screens/admin/configuration_management/configuration_screen.dart
+++ b/lib/feature/presentation/screens/admin/configuration_management/configuration_screen.dart
@@ -1,42 +1,300 @@
import 'package:flutter/material.dart';
+import 'package:get/get.dart';
+import 'package:get/get_core/src/get_main.dart';
+import 'package:get/get_state_manager/src/rx_flutter/rx_obx_widget.dart';
+import 'package:shayog/feature/presentation/screens/admin/configuration_management/configuration_screen_controller.dart';
+import '../../../../../components/common/common_btn.dart';
+import '../../../../../components/common/input_field.dart';
+import '../../../../../components/styles/app_colors.dart';
+import '../../../../../components/styles/app_images.dart';
+import '../../../../../components/styles/app_strings.dart';
import '../../../widgets/custom_table.dart';
-class ConfigurationScreen extends StatelessWidget {
+class ConfigurationScreen extends StatefulWidget {
const ConfigurationScreen({super.key});
+ @override
+ State createState() => _ConfigurationScreenState();
+}
+
+class _ConfigurationScreenState extends State {
+ final ctrl = Get.put(ConfigurationScreenController());
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
children: [
- // Row 1 (Header Row)
- Row(
- children: [
- CustomTable(text:"Header 1", isHeader: true),
- CustomTable(text:"Header 2", isHeader: true),
- CustomTable(text:"Header 3", isHeader: true),
- ],
- ),
- Row(
- children: [
- CustomTable(text:"Row 1, Col 1"),
- CustomTable(text:"Row 1, Col 2"),
- CustomTable(text:"Row 1, Col 3"),
- ],
- ),
- Row(
- children: [
- CustomTable(text:"Row 2, Col 1"),
- CustomTable(text:"Row 2, Col 2"),
- CustomTable(text:"Row 2, Col 3"),
- ],
+ Container(
+ padding: EdgeInsets.only(bottom: 4),
+ margin: EdgeInsets.all(8),
+ child: Column(
+ children: [
+ Container(
+ margin: EdgeInsets.only(bottom: 12),
+ height: 45,
+ color: AppColors.primaryClr,
+ child: Row(
+ children: [
+ ListView.separated(
+ padding: EdgeInsets.symmetric(horizontal: 16),
+ scrollDirection: Axis.horizontal,
+ shrinkWrap: true,
+ itemBuilder: (context, index) {
+ return Obx(
+ () => InkWell(
+ onTap: () {
+ ctrl.selectedState.value = index;
+ },
+ child: Container(
+ margin: EdgeInsets.only(bottom: 10, top: 10),
+ decoration: BoxDecoration(
+ border: Border(
+ bottom: BorderSide(
+ color:
+ ctrl.selectedState.value == index
+ ? Colors.white
+ : AppColors.primaryClr,
+ width: 3))),
+ child: Center(
+ child: Text(
+ ctrl.userTabs[index].title ?? "",
+ style: TextStyle(
+ fontSize: 12,
+ fontWeight: FontWeight.w900,
+ color: Colors.white),
+ ),
+ ),
+ ),
+ ),
+ );
+ },
+ separatorBuilder: (context, index) {
+ return SizedBox(width: 16);
+ },
+ itemCount: ctrl.userTabs.length),
+ Spacer(),
+ InkWell(
+ child: Image.asset(AppImages.refresh,
+ height: 10, width: 10)),
+ Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: Text(
+ AppStrings.refresh,
+ style: TextStyle(
+ color: AppColors.white,
+ fontSize: 10,
+ fontWeight: FontWeight.normal),
+ ),
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
),
- ],
+ Container(
+ padding: EdgeInsets.all(16),
+ color: AppColors.clrF2,
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Row(
+ children: [
+ Expanded(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ _commonText(
+ "Plant",
+ ),
+ SizedBox(height: 8),
+ InputField(
+ title: "Select Plant ",
+ ),
+ // Obx(
+ // () => Container(
+ // padding: EdgeInsets.only(left: 8),
+ // height: 35,
+ // decoration: BoxDecoration(
+ // borderRadius:
+ // BorderRadius.circular(4.0),
+ // color: AppColors.clrD9,
+ // border: Border.all(
+ // color: AppColors.clrGrey)),
+ // child: DropdownButton(
+ // icon: Icon(
+ // Icons
+ // .keyboard_arrow_down_outlined,
+ // size: 20,
+ // color: AppColors.darkGrey),
+ //
+ // isExpanded: true,
+ // underline: SizedBox(),
+ //
+ // value: ctrl
+ // .selectedInvoice.value,
+ // // Use the selected value
+ // onChanged: (String? newValue) {
+ // if (newValue != null) {
+ // ctrl.selectedInvoice.value =
+ // newValue; // Update the selected value
+ // }
+ // },
+ // items: ctrl.invoiceNoItems
+ // .map((String value) {
+ // return DropdownMenuItem(
+ // value: value.toString(),
+ // child: Text(
+ // value,
+ // style: TextStyle(
+ // fontSize: 12,
+ // color:
+ // AppColors.darkGrey),
+ // ),
+ // );
+ // }).toList(),
+ // ),
+ // ),
+ // ),
+ ],
+ )),
+ SizedBox(width: 16),
+ Expanded(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ _commonText(
+ "User Name",
+ ),
+ SizedBox(height: 8),
+ InputField(
+ title: "Select User Name",
+ ),
+ ],
+ )),
+ SizedBox(width: 16),
+ Expanded(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ _commonText(
+ "Product Name",
+ ),
+ SizedBox(height: 8),
+ InputField(
+ title: "Select Product Name ",
+ ),
+ // Obx(
+ // () => Container(
+ // padding: EdgeInsets.only(left: 8),
+ // height: 35,
+ // decoration: BoxDecoration(
+ // borderRadius:
+ // BorderRadius.circular(4.0),
+ // color: AppColors.clrD9,
+ // border: Border.all(
+ // color: AppColors.clrGrey)),
+ // child: DropdownButton(
+ // icon: Icon(
+ // Icons
+ // .keyboard_arrow_down_outlined,
+ // size: 20,
+ // color: AppColors.darkGrey),
+ //
+ // isExpanded: true,
+ // underline: SizedBox(),
+ //
+ // value: ctrl
+ // .selectedFreightNo.value,
+ // // Use the selected value
+ // onChanged: (String? newValue) {
+ // if (newValue != null) {
+ // ctrl
+ // .selectedFreightNo.value =
+ // newValue; // Update the selected value
+ // }
+ // },
+ // items: ctrl.freightBillNoItems
+ // .map((String value) {
+ // return DropdownMenuItem(
+ // value: value.toString(),
+ // child: Text(
+ // value,
+ // style: TextStyle(
+ // fontSize: 12,
+ // color:
+ // AppColors.darkGrey),
+ // ),
+ // );
+ // }).toList(),
+ // ),
+ // ),
+ // ),
+ ],
+ )),
+ ],
+ ),
+ Padding(
+ padding:
+ const EdgeInsets.only(top: 16.0, left: 0, right: 8),
+ child: Row(
+ children: [
+ Expanded(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ _commonText(
+ "Bill day",
+ ),
+ SizedBox(height: 8),
+ InputField(
+ title: "Select Bill Day",
+ ),
+ ],
+ )),
+ ],
+ ),
+ ),
+ Padding(
+ padding: const EdgeInsets.all(16.0),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.end,
+ children: [
+ CommonBtn(
+ bkClr: Colors.white,
+ text: AppStrings.cancel,
+ clickAction: () {},
+ ),
+ SizedBox(width: 16),
+ CommonBtn(
+ bkClr: Colors.white,
+ text: AppStrings.submit,
+ clickAction: () {},
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ )
+ ],
),
);
}
+ _commonText(String title) {
+ return Text(
+ title,
+ style: TextStyle(
+ fontSize: 13, color: Colors.black, fontWeight: FontWeight.w900),
+ );
+ }
}
diff --git a/lib/feature/presentation/screens/admin/configuration_management/configuration_screen_controller.dart b/lib/feature/presentation/screens/admin/configuration_management/configuration_screen_controller.dart
new file mode 100644
index 0000000..bfc1959
--- /dev/null
+++ b/lib/feature/presentation/screens/admin/configuration_management/configuration_screen_controller.dart
@@ -0,0 +1,24 @@
+import 'package:get/get_rx/src/rx_types/rx_types.dart';
+import 'package:get/get_state_manager/src/simple/get_controllers.dart';
+
+import '../../../../../components/common/common_model.dart';
+import '../../../../../components/styles/app_strings.dart';
+
+class ConfigurationScreenController extends GetxController{
+ var selectedState = 0.obs;
+ RxBool isSelected = false.obs;
+ RxList userTabs = [
+ CommonModel(title: AppStrings.billDayConfiguration),
+ CommonModel(title: AppStrings.bufferDayConfiguration),
+ CommonModel(title: AppStrings.ccnConfiguration),
+ ].obs;
+ var selectedInvoice = '41896424644'.obs; // Default value
+ var selectedFreightNo = '9841651635426'.obs; // Default value
+ void toggleContainer() {
+ isSelected.value = true;
+ print("isSelected.value..${isSelected.value}");
+ }
+ var invoiceNoItems = ['41896424644', '41896424644',
+ '41896424644', '41896424644','41896424644'].obs;
+ var freightBillNoItems = ['9841651635426','9841651635426','9841651635426','9841651635426','9841651635426'];
+}
diff --git a/lib/feature/presentation/screens/admin/freight_bills/freightbill_screen.dart b/lib/feature/presentation/screens/admin/freight_bills/freightbill_screen.dart
index a4e6627..40a78b9 100644
--- a/lib/feature/presentation/screens/admin/freight_bills/freightbill_screen.dart
+++ b/lib/feature/presentation/screens/admin/freight_bills/freightbill_screen.dart
@@ -1,3 +1,4 @@
+import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:shayog/components/styles/textStyles.dart';
@@ -342,10 +343,6 @@ class FreightBillScreen extends StatelessWidget {
TableRow(
decoration: BoxDecoration(color: AppColors.secondaryClr),
children: [
- _cellText(
- text: "SR. No.",
- clr: Colors.black,
- fontWeight: FontWeight.bold),
_cellText(
text: "Transporter Name",
clr: Colors.black,
@@ -378,7 +375,6 @@ class FreightBillScreen extends StatelessWidget {
fontWeight: FontWeight.bold),
]),
TableRow(children: [
- _cellText(text: "01"),
_cellText(text: "User 1"),
_cellText(text: "9841651635426", clr: AppColors.primaryClr),
_cellText(text: "1 August 2024"),
@@ -389,7 +385,6 @@ class FreightBillScreen extends StatelessWidget {
_cellText(text: "78646646"),
]),
TableRow(children: [
- _cellText(text: "02"),
_cellText(text: "User 2"),
_cellText(text: "9841651635426", clr: AppColors.primaryClr),
_cellText(text: "1 August 2024"),
@@ -400,7 +395,6 @@ class FreightBillScreen extends StatelessWidget {
_cellText(text: "78646646"),
]),
TableRow(children: [
- _cellText(text: "03"),
_cellText(text: "User 3"),
_cellText(text: "9841651635426", clr: AppColors.primaryClr),
_cellText(text: "1 August 2024"),
@@ -411,7 +405,6 @@ class FreightBillScreen extends StatelessWidget {
_cellText(text: "-"),
]),
TableRow(children: [
- _cellText(text: "04"),
_cellText(text: "User 4"),
_cellText(text: "9841651635426", clr: AppColors.primaryClr),
_cellText(text: "1 August 2024"),
@@ -422,7 +415,6 @@ class FreightBillScreen extends StatelessWidget {
_cellText(text: "78646646"),
]),
TableRow(children: [
- _cellText(text: "05"),
_cellText(text: "User 5"),
_cellText(text: "9841651635426", clr: AppColors.primaryClr),
_cellText(text: "1 August 2024"),
diff --git a/lib/feature/presentation/screens/admin/masters/controller/master_ctrl.dart b/lib/feature/presentation/screens/admin/masters/controller/master_ctrl.dart
index fe63227..17c0615 100644
--- a/lib/feature/presentation/screens/admin/masters/controller/master_ctrl.dart
+++ b/lib/feature/presentation/screens/admin/masters/controller/master_ctrl.dart
@@ -6,6 +6,7 @@ import '../../../../../../components/styles/app_strings.dart';
class MasterCtrl extends GetxController{
var selectedUser = 0.obs;
+ RxBool isSelected = false.obs;
var supplierCode = 'Supplier Code'.obs;
var bpGrouping = 'BP Grouping'.obs;
var accountGrp = 'Supplier Account Group'.obs;
@@ -24,4 +25,8 @@ class MasterCtrl extends GetxController{
CommonModel(title: AppStrings.plantMaster),
].obs;
+ void toggleContainer() {
+ isSelected.value = true;
+ print("isSelected.value..${isSelected.value}");
+ }
}
\ No newline at end of file
diff --git a/lib/feature/presentation/screens/admin/masters/master_screen.dart b/lib/feature/presentation/screens/admin/masters/master_screen.dart
index 9418492..a4235d6 100644
--- a/lib/feature/presentation/screens/admin/masters/master_screen.dart
+++ b/lib/feature/presentation/screens/admin/masters/master_screen.dart
@@ -1,6 +1,8 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
+import '../../../../../components/common/common_btn.dart';
import '../../../../../components/common/custom_drop_down.dart';
+import '../../../../../components/common/input_field.dart';
import '../../../../../components/styles/app_colors.dart';
import '../../../../../components/styles/app_images.dart';
import '../../../../../components/styles/app_strings.dart';
@@ -79,6 +81,7 @@ class MasterScreen extends StatelessWidget {
),
),
InkWell(
+ onTap: masterCtrl.toggleContainer,
child: Image.asset(AppImages.filter,
height: 12, width: 12)),
Padding(
@@ -107,13 +110,371 @@ class MasterScreen extends StatelessWidget {
],
),
),
+ Obx(
+ () => masterCtrl.isSelected.value
+ ? Container(
+ padding: EdgeInsets.all(16),
+ color: AppColors.clrF2,
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Row(
+ children: [
+ Expanded(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ _commonText(
+ "Supplier Code",
+ ),
+ SizedBox(height: 8),
+ InputField(
+ title: "Enter Supplier Code ",
+ ),
+ // Obx(
+ // () => Container(
+ // padding: EdgeInsets.only(left: 8),
+ // height: 35,
+ // decoration: BoxDecoration(
+ // borderRadius:
+ // BorderRadius.circular(4.0),
+ // color: AppColors.clrD9,
+ // border: Border.all(
+ // color: AppColors.clrGrey)),
+ // child: DropdownButton(
+ // icon: Icon(
+ // Icons
+ // .keyboard_arrow_down_outlined,
+ // size: 20,
+ // color: AppColors.darkGrey),
+ //
+ // isExpanded: true,
+ // underline: SizedBox(),
+ //
+ // value: ctrl
+ // .selectedInvoice.value,
+ // // Use the selected value
+ // onChanged: (String? newValue) {
+ // if (newValue != null) {
+ // ctrl.selectedInvoice.value =
+ // newValue; // Update the selected value
+ // }
+ // },
+ // items: ctrl.invoiceNoItems
+ // .map((String value) {
+ // return DropdownMenuItem(
+ // value: value.toString(),
+ // child: Text(
+ // value,
+ // style: TextStyle(
+ // fontSize: 12,
+ // color:
+ // AppColors.darkGrey),
+ // ),
+ // );
+ // }).toList(),
+ // ),
+ // ),
+ // ),
+ ],
+ )),
+ SizedBox(width: 16),
+ Expanded(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ _commonText(
+ "Supplier Name",
+ ),
+ SizedBox(height: 8),
+ InputField(
+ title: "Enter Supplier Name",
+ ),
+ ],
+ )),
+ SizedBox(width: 16),
+ Expanded(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ _commonText(
+ "Supplier Account Group",
+ ),
+ SizedBox(height: 8),
+ InputField(
+ title: "Supplier Account Group ",
+ ),
+ // Obx(
+ // () => Container(
+ // padding: EdgeInsets.only(left: 8),
+ // height: 35,
+ // decoration: BoxDecoration(
+ // borderRadius:
+ // BorderRadius.circular(4.0),
+ // color: AppColors.clrD9,
+ // border: Border.all(
+ // color: AppColors.clrGrey)),
+ // child: DropdownButton(
+ // icon: Icon(
+ // Icons
+ // .keyboard_arrow_down_outlined,
+ // size: 20,
+ // color: AppColors.darkGrey),
+ //
+ // isExpanded: true,
+ // underline: SizedBox(),
+ //
+ // value: ctrl
+ // .selectedFreightNo.value,
+ // // Use the selected value
+ // onChanged: (String? newValue) {
+ // if (newValue != null) {
+ // ctrl
+ // .selectedFreightNo.value =
+ // newValue; // Update the selected value
+ // }
+ // },
+ // items: ctrl.freightBillNoItems
+ // .map((String value) {
+ // return DropdownMenuItem(
+ // value: value.toString(),
+ // child: Text(
+ // value,
+ // style: TextStyle(
+ // fontSize: 12,
+ // color:
+ // AppColors.darkGrey),
+ // ),
+ // );
+ // }).toList(),
+ // ),
+ // ),
+ // ),
+ ],
+ )),
+ ],
+ ),
+ Padding(
+ padding:
+ const EdgeInsets.only(top: 16.0, left: 0, right: 8),
+ child: Row(
+ children: [
+ Expanded(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ _commonText(
+ "State",
+ ),
+ SizedBox(height: 8),
+ InputField(
+ title: "Select State ",
+ ),
+ // Obx(
+ // () => Container(
+ // padding: EdgeInsets.only(left: 8),
+ // height: 35,
+ // decoration: BoxDecoration(
+ // borderRadius:
+ // BorderRadius.circular(4.0),
+ // color: AppColors.clrD9,
+ // border: Border.all(
+ // color: AppColors.clrGrey)),
+ // child: DropdownButton(
+ // icon: Icon(
+ // Icons
+ // .keyboard_arrow_down_outlined,
+ // size: 20,
+ // color: AppColors.darkGrey),
+ //
+ // isExpanded: true,
+ // underline: SizedBox(),
+ //
+ // value: ctrl
+ // .selectedInvoice.value,
+ // // Use the selected value
+ // onChanged: (String? newValue) {
+ // if (newValue != null) {
+ // ctrl.selectedInvoice.value =
+ // newValue; // Update the selected value
+ // }
+ // },
+ // items: ctrl.invoiceNoItems
+ // .map((String value) {
+ // return DropdownMenuItem(
+ // value: value.toString(),
+ // child: Text(
+ // value,
+ // style: TextStyle(
+ // fontSize: 12,
+ // color:
+ // AppColors.darkGrey),
+ // ),
+ // );
+ // }).toList(),
+ // ),
+ // ),
+ // ),
+ ],
+ )),
+ SizedBox(width: 16,),
+ Expanded(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ _commonText(
+ "BP Group",
+ ),
+ SizedBox(height: 8),
+ InputField(
+ title: "Select BP Group ",
+ ),
+ // Obx(
+ // () => Container(
+ // padding: EdgeInsets.only(left: 8),
+ // height: 35,
+ // decoration: BoxDecoration(
+ // borderRadius:
+ // BorderRadius.circular(4.0),
+ // color: AppColors.clrD9,
+ // border: Border.all(
+ // color: AppColors.clrGrey)),
+ // child: DropdownButton(
+ // icon: Icon(
+ // Icons
+ // .keyboard_arrow_down_outlined,
+ // size: 20,
+ // color: AppColors.darkGrey),
+ //
+ // isExpanded: true,
+ // underline: SizedBox(),
+ //
+ // value: ctrl
+ // .selectedInvoice.value,
+ // // Use the selected value
+ // onChanged: (String? newValue) {
+ // if (newValue != null) {
+ // ctrl.selectedInvoice.value =
+ // newValue; // Update the selected value
+ // }
+ // },
+ // items: ctrl.invoiceNoItems
+ // .map((String value) {
+ // return DropdownMenuItem(
+ // value: value.toString(),
+ // child: Text(
+ // value,
+ // style: TextStyle(
+ // fontSize: 12,
+ // color:
+ // AppColors.darkGrey),
+ // ),
+ // );
+ // }).toList(),
+ // ),
+ // ),
+ // ),
+ ],
+ )),
+ SizedBox(width: 16,),
+ Expanded(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ _commonText(
+ "Status",
+ ),
+ SizedBox(height: 8),
+ InputField(
+ title: "Select Status ",
+ ),
+ // Obx(
+ // () => Container(
+ // padding: EdgeInsets.only(left: 8),
+ // height: 35,
+ // decoration: BoxDecoration(
+ // borderRadius:
+ // BorderRadius.circular(4.0),
+ // color: AppColors.clrD9,
+ // border: Border.all(
+ // color: AppColors.clrGrey)),
+ // child: DropdownButton(
+ // icon: Icon(
+ // Icons
+ // .keyboard_arrow_down_outlined,
+ // size: 20,
+ // color: AppColors.darkGrey),
+ //
+ // isExpanded: true,
+ // underline: SizedBox(),
+ //
+ // value: ctrl
+ // .selectedInvoice.value,
+ // // Use the selected value
+ // onChanged: (String? newValue) {
+ // if (newValue != null) {
+ // ctrl.selectedInvoice.value =
+ // newValue; // Update the selected value
+ // }
+ // },
+ // items: ctrl.invoiceNoItems
+ // .map((String value) {
+ // return DropdownMenuItem(
+ // value: value.toString(),
+ // child: Text(
+ // value,
+ // style: TextStyle(
+ // fontSize: 12,
+ // color:
+ // AppColors.darkGrey),
+ // ),
+ // );
+ // }).toList(),
+ // ),
+ // ),
+ // ),
+ ],
+ )),
+ ],
+ ),
+ ),
+ Padding(
+ padding: const EdgeInsets.all(16.0),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.end,
+ children: [
+ CommonBtn(
+ bkClr: Colors.white,
+ text: AppStrings.cancel,
+ clickAction: () {},
+ ),
+ SizedBox(width: 16),
+ CommonBtn(
+ text: AppStrings.submit,
+
+ clickAction: () {},
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ )
+ : SizedBox(),
+ ),
+ SizedBox(height: 20,),
Obx(() {
switch (masterCtrl.selectedUser.value) {
case 0:
return _tableView();
-
-
- default:
+ default:
return Text("");
}
}),
@@ -129,10 +490,11 @@ _tableView(){
TableRow(
decoration: BoxDecoration(color: AppColors.secondaryClr),
children: [
- _cellText(text: "SR. No."),
+ // _cellText(text: "SR. No."),
//CustomTable(text: "SR. NO."),
CustomDropdown(
items: masterCtrl.supplier,
+ backClr: AppColors.clrD9,
itemLabel: (item) => item,
onSelected: (selected) {
if (selected != null) {
@@ -142,6 +504,7 @@ _tableView(){
hintText: 'Supplier Code'),
CustomDropdown(
items: masterCtrl.supplier,
+ backClr: AppColors.clrD9,
itemLabel: (item) => item,
onSelected: (selected) {
if (selected != null) {
@@ -151,6 +514,7 @@ _tableView(){
hintText: 'BP Grouping'),
CustomDropdown(
items: masterCtrl.supplier,
+ backClr: AppColors.clrD9,
itemLabel: (item) => item,
onSelected: (selected) {
if (selected != null) {
@@ -160,6 +524,7 @@ _tableView(){
hintText: 'Supplier Account Group'),
CustomDropdown(
items: masterCtrl.supplier,
+ backClr: AppColors.clrD9,
itemLabel: (item) => item,
onSelected: (selected) {
if (selected != null) {
@@ -170,7 +535,6 @@ _tableView(){
_cellText(text: "Legal Entity"),
]),
TableRow(children: [
- _cellText(text: "01"),
_cellText(text: "11059440"),
_cellText(text: "ZIPT"),
_cellText(text: "ZIPT"),
@@ -178,7 +542,6 @@ _tableView(){
_cellText(text: "0"),
]),
TableRow(children: [
- _cellText(text: "02"),
_cellText(text: "11059440"),
_cellText(text: "ZIPT"),
_cellText(text: "ZIPT"),
@@ -187,7 +550,6 @@ _tableView(){
]),
TableRow(children: [
- _cellText(text: "03"),
_cellText(text: "11059440"),
_cellText(text: "ZIPT"),
_cellText(text: "ZIPT"),
@@ -195,7 +557,6 @@ _tableView(){
_cellText(text: "0"),
]),
TableRow(children: [
- _cellText(text: "04"),
_cellText(text: "11059440"),
_cellText(text: "ZIPT"),
_cellText(text: "ZIPT"),
@@ -219,4 +580,11 @@ _tableView(){
),
);
}
+ _commonText(String title) {
+ return Text(
+ title,
+ style: TextStyle(
+ fontSize: 13, color: Colors.black, fontWeight: FontWeight.w900),
+ );
+ }
}
diff --git a/lib/feature/presentation/screens/admin/user_management/model/getAllUserResModel.dart b/lib/feature/presentation/screens/admin/user_management/model/getAllUserResModel.dart
index 77e405d..3f493d4 100644
--- a/lib/feature/presentation/screens/admin/user_management/model/getAllUserResModel.dart
+++ b/lib/feature/presentation/screens/admin/user_management/model/getAllUserResModel.dart
@@ -24,9 +24,9 @@ class GetAllUserResModel {
GetAllUserResModel({
this.content,
this.pageable,
- this.last,
this.totalElements,
this.totalPages,
+ this.last,
this.size,
this.number,
this.sort,
@@ -38,9 +38,9 @@ class GetAllUserResModel {
factory GetAllUserResModel.fromJson(Map json) => GetAllUserResModel(
content: json["content"] == null ? [] : List>.from(json["content"]!.map((x) => List.from(x.map((x) => AllUser.fromJson(x))))),
pageable: json["pageable"] == null ? null : Pageable.fromJson(json["pageable"]),
- last: json["last"],
totalElements: json["totalElements"],
totalPages: json["totalPages"],
+ last: json["last"],
size: json["size"],
number: json["number"],
sort: json["sort"] == null ? null : Sort.fromJson(json["sort"]),
@@ -52,9 +52,9 @@ class GetAllUserResModel {
Map toJson() => {
"content": content == null ? [] : List.from(content!.map((x) => List.from(x.map((x) => x.toJson())))),
"pageable": pageable?.toJson(),
- "last": last,
"totalElements": totalElements,
"totalPages": totalPages,
+ "last": last,
"size": size,
"number": number,
"sort": sort?.toJson(),
diff --git a/lib/feature/presentation/screens/transporter/model/get_invoice_request.dart b/lib/feature/presentation/screens/transporter/model/get_invoice_request.dart
new file mode 100644
index 0000000..96c0f2a
--- /dev/null
+++ b/lib/feature/presentation/screens/transporter/model/get_invoice_request.dart
@@ -0,0 +1,48 @@
+// To parse this JSON data, do
+//
+// final getInvoiceRequest = getInvoiceRequestFromJson(jsonString);
+
+import 'dart:convert';
+
+GetInvoiceRequest getInvoiceRequestFromJson(String str) =>
+ GetInvoiceRequest.fromJson(json.decode(str));
+
+String getInvoiceRequestToJson(GetInvoiceRequest data) =>
+ json.encode(data.toJson());
+
+class GetInvoiceRequest {
+ final String? invoiceId;
+ final String? freightBillNo;
+ final String? invFromDate;
+ final String? invToDate;
+ final String? freightFromDate;
+ final String? freightToDate;
+
+ GetInvoiceRequest({
+ this.invoiceId,
+ this.freightBillNo,
+ this.invFromDate,
+ this.invToDate,
+ this.freightFromDate,
+ this.freightToDate,
+ });
+
+ factory GetInvoiceRequest.fromJson(Map json) =>
+ GetInvoiceRequest(
+ invoiceId: json["invoice_id"],
+ freightBillNo: json["freightBillNo"],
+ invFromDate: json["invFromDate"],
+ invToDate: json["invToDate"],
+ freightFromDate: json["freightFromDate"],
+ freightToDate: json["freightToDate"],
+ );
+
+ Map toJson() => {
+ "invoice_id": invoiceId,
+ "freightBillNo": freightBillNo,
+ "invFromDate": invFromDate,
+ "invToDate": invToDate,
+ "freightFromDate": freightFromDate,
+ "freightToDate": freightToDate,
+ };
+}
diff --git a/lib/feature/presentation/screens/transporter/view/ctrl/invoice_management_controller.dart b/lib/feature/presentation/screens/transporter/view/ctrl/invoice_management_controller.dart
index fa24570..f8fcdb3 100644
--- a/lib/feature/presentation/screens/transporter/view/ctrl/invoice_management_controller.dart
+++ b/lib/feature/presentation/screens/transporter/view/ctrl/invoice_management_controller.dart
@@ -7,8 +7,10 @@ import 'package:shayog/services/network/get_requests.dart';
import 'package:shayog/services/network/post_request.dart';
import '../../../../../../components/common/common_model.dart';
import '../../../../../../components/styles/app_strings.dart';
+import '../../../../../../services/network/post_request.dart';
+import '../../model/get_invoice_response.dart';
-class InvoiceManagementController extends GetxController {
+class InvoiceManagementController extends GetxController{
var selectedState = 0.obs;
Rx selectedPlant = "Select Plant".obs;
Rx selectedFreightBill = "Select Bill No.".obs;
@@ -56,7 +58,7 @@ class InvoiceManagementController extends GetxController {
CommonModel(title: AppStrings.viewInvoice),
CommonModel(title: AppStrings.cancelledInvoice),
CommonModel(title: AppStrings.ccnView),
- ].obs; // Default value
+ ].obs;// Default value
RxInt totalPages = 3.obs;
RxInt totalElements = 3.obs;
var pageSize = 2.obs;
@@ -71,7 +73,10 @@ class InvoiceManagementController extends GetxController {
TextEditingController fromController = TextEditingController();
DateTime fromSelectedDate = DateTime.now(); // Initialize with a default value
RxBool dateCheck = false.obs;
-
+ // Validation variables
+ RxBool showPlantError = false.obs;
+ RxBool showProductError = false.obs;
+ RxBool showTransactionError = false.obs;
String getFormattedDate(DateTime date) {
return "${date.day.toString().padLeft(2, '0')}-${date.month.toString()
.padLeft(2, '0')}-${date.year}";
@@ -86,10 +91,24 @@ class InvoiceManagementController extends GetxController {
// RxBool showProductErrorViewFreight = false.obs;
var freightViewLoader = false.obs;
var freightBillData = [].obs;
+ RxBool isFilterVisibleGenerateFreight = false.obs;
+ var selectTransactionTypeFreight = ''.obs;
+ var selectProductFreight = ''.obs;
+ RxString selectPlantViewFreight = ''.obs;
+ var selectProductViewFreight = ''.obs;
+ RxString selectPlantPending = ''.obs;
+ var selectProductPending = ''.obs;
+ var selectLocationPending = ''.obs;
+ var selectTransactionTypePending = ''.obs;
+ RxBool showPlantErrorPending = false.obs;
+ RxBool showProductErrorPending = false.obs;
+ RxBool showTransactionErrorPending = false.obs;
- void toggleContainer() {
- isSelected.value = true;
- }
+ void toggleFilter() {
+ isFilterVisibleGenerateFreight.value =
+ !isFilterVisibleGenerateFreight.value;
+ if (!isFilterVisibleGenerateFreight.value) {
+ clearFiltersGenerateFreightBill(); }}
@override
@@ -98,8 +117,29 @@ class InvoiceManagementController extends GetxController {
getFreightBills();
super.onInit();
}
+ void clearFiltersGenerateFreightBill() {
+ selectPlantFreight.value = '';
+ selectProductFreight.value = '';
+ selectTransactionTypeFreight.value = '';
+ fromController.clear();
+ showPlantError.value = false;
+ showProductError.value = false;
+ showTransactionError.value = false;
+ }
+ void toggleViewFreight() {
+ isFilterVisibleViewFreight.value = !isFilterVisibleViewFreight.value;
+ if (!isFilterVisibleViewFreight.value) {
+ clearFiltersViewFreight();
+ }
+ }
-
+ void togglePending() {
+ isFilterVisiblePendingGeneration.value =
+ !isFilterVisiblePendingGeneration.value;
+ if (!isFilterVisiblePendingGeneration.value) {
+ clearFiltersPendingGeneration();
+ }
+ }
getInvoiceView() async {
try {
invoiceViewLoader.value = true;
@@ -128,7 +168,6 @@ class InvoiceManagementController extends GetxController {
invoiceViewLoader.value = false;
}
}
-
void changeSort(String field) {
if (field == sortField.value) {
sortDirection.value = sortDirection.value == "asc" ? "desc" : "asc";
@@ -142,7 +181,28 @@ class InvoiceManagementController extends GetxController {
RxBool showPlantErrorFreight = false.obs;
RxBool showProductErrorFreight = false.obs;
RxString selectPlantFreight = ''.obs;
-
+ RxBool isFilterVisibleViewFreight = false.obs;
+ RxBool isFilterVisiblePendingGeneration = false.obs;
+ RxBool showPlantErrorViewFreight = false.obs;
+ RxBool showProductErrorViewFreight = false.obs;
+ void clearFiltersViewFreight() {
+ selectPlantViewFreight.value = '';
+ selectProductViewFreight.value = '';
+ selectFreightBillValidate.value = '';
+ fromController.clear();
+ showPlantErrorViewFreight.value = false;
+ showProductErrorViewFreight.value = false;
+ showTransactionErrorViewFreight.value = false;
+ }
+ void clearFiltersPendingGeneration() {
+ selectPlantPending.value = '';
+ selectProductPending.value = '';
+ selectTransactionTypePending.value = '';
+ fromController.clear();
+ showPlantErrorPending.value = false;
+ showProductErrorPending.value = false;
+ showTransactionErrorPending.value = false;
+ }
getFreightBills() async {
try {
isLoading.value = true;
@@ -157,93 +217,7 @@ class InvoiceManagementController extends GetxController {
} finally {
-
-
isLoading.value = false;
}
}
-}
-// void clearFiltersViewFreight() {
-// selectPlantViewFreight.value = '';
-// selectProductViewFreight.value = '';
-// selectFreightBillValidate.value = '';
-// fromController.clear();
-// showPlantErrorViewFreight.value = false;
-// showProductErrorViewFreight.value = false;
-// showTransactionErrorViewFreight.value = false;
-// }
-// void handleFilterSubmitViewFreightBill() {
-// print('submit call');
-// validateFieldsViewFreightBill();
-// if (selectPlantViewFreight.value.isEmpty ||
-// selectProductViewFreight.value.isEmpty
-// // ||
-// // selectTransactionTypeViewFreight.value.isEmpty
-// ) {
-// print('submit call 22');
-// } else {
-// print('submit call 1');
-// displayFilteredDataFromViewFreight();
-// }
-// }
-// void validateFieldsViewFreightBill() {
-// showPlantErrorViewFreight.value = selectPlantViewFreight.value.isEmpty;
-// showTransactionErrorViewFreight.value =
-// selectFreightBillValidate.value.isEmpty;
-// showProductErrorViewFreight.value = selectProductViewFreight.value.isEmpty;
-// }
-//
-// void displayFilteredDataFromViewFreight() async {
-// try {
-// freightViewLoader.value = true;
-// Map requestBody = {
-// "plant": selectPlantViewFreight.value,
-// "productNane": selectProductViewFreight.value,
-// "freightBillNo": selectFreightBillValidate.value,
-// "transactionType": "",
-// "fromLocation": "",
-// "grnFromDate": "",
-// "grnToDate": "",
-// };
-//
-// var response = await PostRequests.viewFreightBill(requestBody);
-//
-// if (response != null) {
-// List flattenedContent =
-// response.content!.expand((list) => list).toList();
-//
-// List filteredData = flattenedContent.where((item) {
-// // Plant filter
-// bool plantMatch = selectPlantViewFreight.value.isEmpty ||
-// item.plantCode.toString().toLowerCase() ==
-// selectPlantViewFreight.value.toLowerCase();
-//
-// // Product filter
-// bool productMatch = selectProductViewFreight.value.isEmpty ||
-// item.materialCode.toString().toLowerCase() ==
-// selectProductViewFreight.value.toLowerCase();
-//
-// // Freight bill filter
-// bool freightBillMatch = selectFreightBillValidate.value.isEmpty ||
-// item.freightbillCode.toString().toLowerCase() ==
-// selectFreightBillValidate.value.toLowerCase();
-//
-//
-// return plantMatch && productMatch && freightBillMatch;
-// }).toList();
-// freightBillData.assignAll(filteredData);
-//
-// // Update pagination values
-// totalPages.value = response.totalPages ?? 0;
-// totalElements.value = response.totalElements ?? 0;
-// } else {
-// freightBillData.clear();
-// }
-// } catch (e) {
-// freightBillData.clear();
-// } finally {
-// freightViewLoader.value = false;
-// }
-// }
-
-
+}
\ No newline at end of file
diff --git a/lib/feature/presentation/screens/transporter/view/sub_views/invoice_management_screen.dart b/lib/feature/presentation/screens/transporter/view/sub_views/invoice_management_screen.dart
index 1596e5d..cdd2758 100644
--- a/lib/feature/presentation/screens/transporter/view/sub_views/invoice_management_screen.dart
+++ b/lib/feature/presentation/screens/transporter/view/sub_views/invoice_management_screen.dart
@@ -1,15 +1,27 @@
+import 'dart:io';
+
+import 'package:file_picker/file_picker.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
+import 'package:intl/intl.dart';
+import 'package:path_provider/path_provider.dart';
import 'package:shayog/components/styles/textStyles.dart';
-import 'package:shayog/feature/presentation/screens/transporter/invoice_management/cancelled_view/cancelled_view_screen.dart';
-import 'package:shayog/feature/presentation/screens/transporter/invoice_management/ccn_view/ccn_view_screen.dart';
-import 'package:shayog/feature/presentation/screens/transporter/invoice_management/payment_view/payment_view_screen.dart';
-import 'package:shayog/feature/presentation/screens/transporter/invoice_management/view_invoice/view_invoice_screen.dart';
-import 'package:shayog/feature/presentation/widgets/text_view.dart';
+import 'package:sizer/sizer.dart';
+import 'package:vph_web_date_picker/vph_web_date_picker.dart';
+
+import '../../../../../../components/common/common_btn.dart';
+import '../../../../../../components/common/common_button.dart';
+import '../../../../../../components/common/custom_drop_down.dart';
+import '../../../../../../components/common/data_cell.dart';
+import '../../../../../../components/common/input_field.dart';
import '../../../../../../components/styles/app_colors.dart';
import '../../../../../../components/styles/app_images.dart';
import '../../../../../../components/styles/app_strings.dart';
+import '../../../../widgets/text_view.dart';
+import '../../invoice_management/ccn_view/ccn_view_screen.dart';
import '../../invoice_management/payment_view/ctrl/payment_view_ctrl.dart';
+import '../../invoice_management/cancelled_view/cancelled_view_screen.dart';
+import '../../invoice_management/payment_view/payment_view_screen.dart';
import '../ctrl/invoice_management_controller.dart';
class InvoiceManagement extends StatefulWidget {
@@ -20,6 +32,8 @@ class InvoiceManagement extends StatefulWidget {
}
class _TransportViewState extends State {
+ final ScrollController horizontalScrollController = ScrollController();
+ final ScrollController verticalScrollController = ScrollController();
final ctrl = Get.put(InvoiceManagementController());
final paymentCtrl = Get.put(PaymentViewCtrl());
@override
@@ -27,87 +41,331 @@ class _TransportViewState extends State {
return Column(
children: [
Container(
- margin: EdgeInsets.symmetric(horizontal: 16, vertical: 8),
- height: 50,
- color: AppColors.primaryClr,
- child: Row(
+ padding: EdgeInsets.only(bottom: 4),
+ margin: EdgeInsets.all(16),
+ child: Column(
children: [
- ListView.separated(
- shrinkWrap: true,
- padding: EdgeInsets.symmetric(horizontal: 16),
- scrollDirection: Axis.horizontal,
- itemBuilder: (context, index) {
- return Obx(
- () => InkWell(
- onTap: () {
- ctrl.selectedState.value = index;
- },
- child: Container(
- margin: EdgeInsets.only(bottom: 10, top: 10),
- decoration: BoxDecoration(
- border: Border(
- bottom: BorderSide(
- color: ctrl.selectedState.value == index
- ? Colors.white
- : AppColors.primaryClr,
- width: 3))),
- child: Center(
- child: TextView(
- text: ctrl.invoiceTabs[index].title ?? "",
- style: 12.txtBoldWhite,
- ),
- ),
+ Container(
+ margin: EdgeInsets.only(bottom: 12),
+ height: 55,
+ color: AppColors.primaryClr,
+ child: Row(
+ children: [
+ ListView.separated(
+ padding: EdgeInsets.symmetric(horizontal: 16),
+ scrollDirection: Axis.horizontal,
+ shrinkWrap: true,
+ itemBuilder: (context, index) {
+ return Obx(
+ () => InkWell(
+ onTap: () {
+ ctrl.selectedState.value = index;
+ },
+ child: Container(
+ margin: EdgeInsets.only(bottom: 10, top: 10),
+ decoration: BoxDecoration(
+ border: Border(
+ bottom: BorderSide(
+ color: ctrl.selectedState.value ==
+ index
+ ? Colors.white
+ : AppColors.primaryClr,
+ width: 3))),
+ child: Center(
+ child: Text(
+ ctrl.userTabs[index].title ?? "",
+ style: TextStyle(
+ fontSize: 12,
+ fontWeight: FontWeight.w900,
+ color: Colors.white),
+ ),
+ ),
+ ),
+ ),
+ );
+ },
+ separatorBuilder: (context, index) {
+ return SizedBox(width: 16);
+ },
+ itemCount: ctrl.userTabs.length),
+ Spacer(),
+ InkWell(
+ child: Image.asset(AppImages.refresh,
+ height: 10, width: 10)),
+ Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: Text(
+ AppStrings.refresh,
+ style: TextStyle(
+ color: AppColors.white,
+ fontSize: 10,
+ fontWeight: FontWeight.normal),
),
),
- );
- },
- separatorBuilder: (context, index) {
- return SizedBox(width: 16);
- },
- itemCount: ctrl.invoiceTabs.length,
- ),
- Spacer(),
- InkWell(
- onTap: (){
- paymentCtrl.resetDropdowns();
- },
- child: Image.asset(AppImages.refresh, height: 16, width: 16)),
- Padding(
- padding: const EdgeInsets.all(8.0),
- child: Text(
- AppStrings.refresh,
- style: 12.txtBoldWhite,
- ),
- ),
- InkWell(
- onTap: () {
- switch (ctrl.selectedState.value) {
- case 0:
- return ctrl.invoiceFilter();
- case 1:
- return ctrl.cancelledFilter();
- case 2:
- return ctrl.paymentFilter();
- default:
- return ctrl.ccnFilter();
- }
- },
- child: Image.asset(AppImages.filter, height: 16, width: 16),
- ),
- Padding(
- padding: const EdgeInsets.all(8.0),
- child: TextView(
- text: AppStrings.filter,
- style: 12.txtBoldWhite,
+ GestureDetector(
+ behavior: HitTestBehavior.translucent,
+ onTap: () {
+ print("cdgsa");
+ ctrl.isSelected.value = !ctrl.isSelected.value;
+ // if (ctrl.isSelected.value == 0) {
+ // ctrl.toggleFilter();
+ // } else if (ctrl.isSelected.value == 1) {
+ // ctrl.toggleViewFreight();
+ // } else if (ctrl.isSelected.value == 2) {
+ // ctrl.togglePending();
+ // }
+ },
+ child: Row(
+ children: [
+ Image.asset(AppImages.filter,
+ height: 16, width: 16),
+ Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: TextView(
+ text: AppStrings.filter,
+ style: 12.txtBoldWhite,
+ ),
+ ),
+ ],
+ ),
+ ),
+ ],
),
),
],
),
),
+ Obx(
+ () => ctrl.isSelected.value
+ ? Container(
+ padding: EdgeInsets.all(8),
+ color: AppColors.clrF2,
+
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Row(
+ children: [
+ Expanded(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ TextView(text: "Plant", isRequired: true),
+ SizedBox(height: 8),
+ CustomDropdown(
+ backClr: AppColors.clrD9,
+ borderClr: AppColors.clrGrey,
+ items: ctrl.plant,
+
+ itemLabel: (item) =>
+ "${item.plantCode} - ${item.plantDesc}",
+ onSelected: (selected) {
+ if (selected != null) {
+ ctrl.selectPlantFreight.value =
+ selected.plantCode ?? "";
+ ctrl.showPlantErrorFreight.value =
+ false;
+ }
+ },
+ hintText: "Select Plant",
+ ),
+ Obx(() =>
+ ctrl.showPlantErrorFreight.value
+ ? Text(
+ 'Required',
+ style: TextStyle(
+ color: Colors.red,
+ fontSize: 12),
+ )
+ : Text('')),
+ ],
+ ),
+ ),
+ SizedBox(width: 16),
+ Expanded(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ TextView(text: "Freight Bill Date",isRequired: true,),
+ Container(
+ height: 35,
+ child: TextFormField(
+ key: ctrl.fromTextFieldKey,
+ controller: ctrl.fromController,
+ onTap: () async {
+ final pickedDate =
+ await showWebDatePicker(
+ width: 20.w,
+ context: ctrl
+ .fromTextFieldKey.currentContext!,
+ initialDate:
+ ctrl.fromSelectedDate,
+ firstDate: DateTime(2000),
+ lastDate: DateTime.now(),
+ );
+
+ if (pickedDate != null) {
+ ctrl.fromSelectedDate =
+ pickedDate;
+ String formattedDate = ctrl
+ .getFormattedDate(pickedDate);
+ ctrl.fromController.text =
+ formattedDate;
+ ctrl.dateCheck.value = true;
+ }
+ },
+ decoration: InputDecoration(
+ fillColor: AppColors.clrD9,
+ filled: true,
+ hintText: 'Select Freight Bill Date ',
+ hintStyle: TextStyle(
+ fontSize: 12,
+ overflow: TextOverflow.ellipsis),
+ border: OutlineInputBorder(
+ borderRadius:
+ BorderRadius.circular(2.0),
+ borderSide:
+ BorderSide(color: AppColors.black),
+ ),
+ enabledBorder: OutlineInputBorder(
+ borderRadius:
+ BorderRadius.circular(2.0),
+ borderSide: BorderSide(
+ color: AppColors.clrGrey),
+ ),
+ focusedBorder: OutlineInputBorder(
+ borderRadius:
+ BorderRadius.circular(2.0),
+ borderSide: BorderSide(
+ color: AppColors.clrGrey),
+ ),
+ disabledBorder: OutlineInputBorder(
+ borderRadius:
+ BorderRadius.circular(2.0),
+ borderSide: BorderSide(
+ color: AppColors.clrGrey),
+ ),
+ suffixIcon: ctrl.dateCheck.value
+ ? InkWell(
+ onTap: () {
+ ctrl.dateCheck.value =
+ false;
+ ctrl.fromController
+ .clear();
+ ctrl.fromSelectedDate =
+ DateTime.now();
+ },
+ child: Icon(Icons.close,
+ size: 1.2.w),
+ )
+ : null,
+ contentPadding:
+ const EdgeInsets.symmetric(
+ horizontal: 12.0, vertical: 0.0),
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ SizedBox(width: 16),
+ Expanded(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ TextView(
+ text: "Freight Bill No.", isRequired: true),
+ SizedBox(height: 8),
+ CustomDropdown(
+ backClr: AppColors.clrD9,
+ borderClr: AppColors.clrGrey,
+ items: ctrl.freightBill,
+ itemLabel: (item) => item,
+ onSelected: (selected) {
+ if (selected != null) {
+ ctrl.selectFreightBillValidate.value =
+ selected;
+ ctrl.showTransactionErrorViewFreight
+ .value = false;
+ }
+ },
+ hintText: "Select Freight Bill No.",
+ ),
+ Obx(() => ctrl
+ .showTransactionErrorViewFreight.value
+ ? Text(
+ 'Required',
+ style: TextStyle(
+ color: Colors.red, fontSize: 12),
+ )
+ : Text('')),
+ ],
+ ),
+ ),
+ ],
+ ),
+ // Padding(
+ // padding:
+ // const EdgeInsets.only(top: 16.0, left: 0, right: 8),
+ // child: Row(
+ // children: [
+ // Expanded(
+ // child: Column(
+ // mainAxisAlignment: MainAxisAlignment.start,
+ // crossAxisAlignment: CrossAxisAlignment.start,
+ // children: [
+ // _commonText(
+ // "Freight Bill Date",
+ // ),
+ // SizedBox(height: 8),
+ // InputField(
+ // title: "Select Bill Date",
+ // ),
+ // ],
+ // )),
+ // ],
+ // ),
+ // ),
+ // Expanded(
+ // //flex: 2,
+ // child: Column(
+ // children: [
+ // TextView(
+ // text: "",
+ // ),
+ // Padding(
+ // padding: const EdgeInsets.only(top: 8.0),
+ // child: Row(
+ // mainAxisAlignment: MainAxisAlignment.end,
+ // children: [
+ // CommonBtn(
+ // bkClr: Colors.white,
+ // text: AppStrings.cancel,
+ // clickAction: () {},
+ // ),
+ // SizedBox(width: 16),
+ // CommonBtn(
+ // text: AppStrings.submit,
+ // clickAction: () {},
+ // ),
+ // ],
+ // ),
+ // ),
+ // ],
+ // ))
+ ],
+ ),
+ )
+ : SizedBox(),
+ ),
Obx(() {
switch (ctrl.selectedState.value) {
case 0:
- return ViewInvoice();
+ return _tableView();
case 1:
return CancelledView();
case 2:
@@ -119,4 +377,213 @@ class _TransportViewState extends State {
],
);
}
+
+ _tableView() {
+ return Padding(
+ padding: const EdgeInsets.symmetric(horizontal: 16),
+ child: Column(
+ children: [
+ Scrollbar(
+ thumbVisibility: true,
+ controller: verticalScrollController,
+ child: SingleChildScrollView(
+ controller: verticalScrollController,
+ child: Scrollbar(
+ thumbVisibility: true,
+ controller: horizontalScrollController,
+ child: SingleChildScrollView(
+ scrollDirection: Axis.horizontal,
+ controller: horizontalScrollController,
+ child: Container(
+ decoration: BoxDecoration(
+ border: Border.all(
+ color: Colors.grey.shade400,
+ width: 1.0,
+ ),
+ ),
+ child: DataTable(
+ dataRowHeight: 40,
+ headingRowHeight: 40,
+ headingRowColor: WidgetStateProperty.all(AppColors.clrF2),
+ border: TableBorder(
+ horizontalInside: BorderSide(color: AppColors.clrGrey),
+ verticalInside: BorderSide(color: AppColors.clrGrey),
+ bottom: BorderSide(color: AppColors.clrGrey),
+ left: BorderSide(color: AppColors.clrGrey),
+ right: BorderSide(color: AppColors.clrGrey),
+ top: BorderSide(color: AppColors.clrGrey),
+ ),
+ columns: [
+ dataColumn(" SAP Reference No."),
+ //dataColumn(AppStrings.productName, onSort: (_, __) => ctrl.changeSort(AppStrings.productName.toLowerCase())),
+ dataColumn("Freight Bill No."),
+ //dataColumn(AppStrings.getInvoiceDate),
+ dataColumn("Freight Bill date"),
+ dataColumn("Plant Code/Plant Desc."),
+ dataColumn("Material Code/Material Desc."),
+ dataColumn("Freight Bill Amount"),
+ dataColumn("GST Amount"),
+ dataColumn("Status"),
+ dataColumn("CCN Amount"),
+ dataColumn("View CCN"),
+ dataColumn("View Invoice"),
+ dataColumn("Add Signature"),
+ ],
+ rows: List.generate(ctrl.getInvoiceData.length,
+ (index) {
+ final getInvoice = ctrl.getInvoiceData[index];
+ return DataRow(
+ cells: [
+ editableCell(index, "${getInvoice.sapReferenceno}"),
+ editableCell(index, getInvoice.freightbillCode),
+ editableCell(
+ index,
+ DateFormat("dd MMMM yyyy").format(
+ DateTime.parse('${getInvoice.createdOn}'))),
+ editableCell(index, "${getInvoice.plantCode} - ${getInvoice.plantDesc}",),
+ editableCell(index, "${getInvoice.materialCode} - ${getInvoice.materialDescription}",),
+ editableCell(index, (getInvoice.shipmentCost.toString() ?? "-")),
+ editableCell(
+ index, "-"),
+ editableCell(index, getInvoice.status.toUpperCase()),
+ editableCell(index,"-"),
+ editableCell(index, "-"),
+ editableCell(index, "View Invoice",isLink: true),
+ DataCell(
+ Row(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Container(
+ padding: EdgeInsets.all(4),
+ decoration: BoxDecoration(
+ border: Border.all(color: Colors.blue),
+ borderRadius: BorderRadius.circular(4),
+ ),
+ child: InkWell(
+ onTap: () { },
+ child: Row(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Icon(Icons.download,
+ size: 16, color: Colors.blue),
+ SizedBox(width: 4),
+ Text('Download',
+ style: TextStyle(
+ color: Colors.blue,
+ fontSize: 12)),
+ ],
+ ),
+ ),
+ ),
+ SizedBox(width: 8),
+ Container(
+ padding: EdgeInsets.all(4),
+ decoration: BoxDecoration(
+ border: Border.all(color: Colors.blue),
+ borderRadius: BorderRadius.circular(4),
+ ),
+ child: InkWell(
+ onTap: () => handleFileUpload(index),
+ child: Row(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Icon(Icons.upload,
+ size: 16, color: Colors.blue),
+ SizedBox(width: 4),
+ Text('Upload',
+ style: TextStyle(
+ color: Colors.blue,
+ fontSize: 12)),
+ ],
+ ),
+ ),
+ ),
+
+ //###################### This Function is used to close or cut uploaded File in Local #######################
+ // if (uploadedFiles.containsKey(index))
+ // IconButton(
+ // icon: Icon(Icons.close, size: 16, color: Colors.red),
+ // onPressed: () {
+ // setState(() {
+ // uploadedFiles.remove(index);
+ // });
+ // },
+ // ),
+
+ //###########################################################################################################
+ ],
+ ),
+ ),
+ ],
+ );
+ }),
+ ),
+ ),
+ ),
+ ),
+ ),
+ ),
+ // CustomPagination(
+ // currentPage: controller.currentPage.value,
+ // totalPages: controller.totalPages.value,
+ // onPageChanged: (int page) {
+ // controller.onPageChanged(page);
+ // },
+ // ),
+ ],
+ ),
+ );
+ }
+
+ Future handleFileUpload(int index) async {
+ try {
+ FilePickerResult? result = await FilePicker.platform.pickFiles(
+ type: FileType.custom,
+ allowedExtensions: ['pdf', 'doc', 'docx', 'xlsx', 'xls'],
+ allowMultiple: false,
+ );
+
+ if (result != null) {
+ PlatformFile file = result.files.first;
+
+ // Validate file size (optional)
+ if (file.size > 10 * 1024 * 1024) { // 10MB limit
+ ScaffoldMessenger.of(context).showSnackBar(
+ SnackBar(
+ content: Text('File size must be less than 10MB'),
+ backgroundColor: Colors.red,
+ ),
+ );
+ return;
+ }
+ final appDir = await getApplicationDocumentsDirectory();
+ final String filePath = '${appDir.path}/${file.name}';
+ File(file.path!).copy(filePath);
+ setState(() {
+ //uploadedFiles[index] = file.name;
+ });
+ ScaffoldMessenger.of(context).showSnackBar(
+ SnackBar(
+ content: Text('File uploaded: ${file.name}'),
+ backgroundColor: Colors.green,
+ ),
+ );
+ }
+ } catch (e) {
+ ScaffoldMessenger.of(context).showSnackBar(
+ SnackBar(
+ content: Text('Error uploading file: ${e.toString()}'),
+ backgroundColor: Colors.red,
+ ),
+ );
+ }
+ }
+
+ _commonText(String title) {
+ return Text(
+ title,
+ style: TextStyle(
+ fontSize: 13, color: Colors.black, fontWeight: FontWeight.w900),
+ );
+ }
}
diff --git a/lib/feature/presentation/widgets/custom_date_range_picker.dart b/lib/feature/presentation/widgets/custom_date_range_picker.dart
new file mode 100644
index 0000000..d4c43e7
--- /dev/null
+++ b/lib/feature/presentation/widgets/custom_date_range_picker.dart
@@ -0,0 +1,253 @@
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+
+class DropdownDateRange extends StatefulWidget {
+ @override
+ _DropdownDateRangeState createState() => _DropdownDateRangeState();
+}
+
+class _DropdownDateRangeState extends State {
+ bool isCalendarVisible = false;
+ DateTime selectedStartDate = DateTime.now();
+ DateTime selectedEndDate = DateTime.now().add(Duration(days: 5));
+ DateTime displayedStartMonth = DateTime.now();
+ DateTime displayedEndMonth = DateTime.now().add(Duration(days: 60));
+
+ List weekdays = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];
+ List months = [
+ 'January', 'February', 'March', 'April', 'May', 'June',
+ 'July', 'August', 'September', 'October', 'November', 'December'
+ ];
+
+ @override
+ Widget build(BuildContext context) {
+ return Material(
+ color: Colors.transparent,
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ // Clickable Container
+ GestureDetector(
+ onTap: () {
+ setState(() {
+ isCalendarVisible = !isCalendarVisible;
+ });
+ },
+ child: Container(
+ padding: EdgeInsets.symmetric(horizontal: 16, vertical: 12),
+ decoration: BoxDecoration(
+ color: Colors.white,
+ borderRadius: BorderRadius.circular(4),
+ border: Border.all(color: Colors.grey.shade300),
+ ),
+ child: Row(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Text(
+ '${selectedStartDate.day} ${months[selectedStartDate.month - 1]} ${selectedStartDate.year} - '
+ '${selectedEndDate.day} ${months[selectedEndDate.month - 1]} ${selectedEndDate.year}',
+ style: TextStyle(fontSize: 14),
+ ),
+ SizedBox(width: 8),
+ Icon(Icons.arrow_drop_down),
+ ],
+ ),
+ ),
+ ),
+
+ // Dropdown Calendar
+ if (isCalendarVisible)
+ Container(
+ margin: EdgeInsets.only(top: 8),
+ decoration: BoxDecoration(
+ color: Colors.white,
+ borderRadius: BorderRadius.circular(8),
+ boxShadow: [
+ BoxShadow(
+ color: Colors.grey.withOpacity(0.2),
+ spreadRadius: 1,
+ blurRadius: 8,
+ offset: Offset(0, 4),
+ ),
+ ],
+ ),
+ child: Column(
+ children: [
+ Padding(
+ padding: EdgeInsets.all(16),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ _buildCalendar(displayedStartMonth, true),
+ SizedBox(width: 32),
+ _buildCalendar(displayedEndMonth, false),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ );
+ }
+
+ Widget _buildCalendar(DateTime displayedMonth, bool isStartCalendar) {
+ return Container(
+ width: 280,
+ decoration: BoxDecoration(
+ color: Colors.white,
+ borderRadius: BorderRadius.circular(8),
+ ),
+ child: Column(
+ children: [
+ // Month Header
+ Padding(
+ padding: EdgeInsets.all(8),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ IconButton(
+ icon: Icon(Icons.chevron_left),
+ onPressed: () {
+ setState(() {
+ if (isStartCalendar) {
+ displayedStartMonth = DateTime(
+ displayedStartMonth.year,
+ displayedStartMonth.month - 1,
+ );
+ } else {
+ displayedEndMonth = DateTime(
+ displayedEndMonth.year,
+ displayedEndMonth.month - 1,
+ );
+ }
+ });
+ },
+ ),
+ Text(
+ '${months[displayedMonth.month - 1]} (${displayedMonth.year})',
+ style: TextStyle(fontWeight: FontWeight.bold),
+ ),
+ IconButton(
+ icon: Icon(Icons.chevron_right),
+ onPressed: () {
+ setState(() {
+ if (isStartCalendar) {
+ displayedStartMonth = DateTime(
+ displayedStartMonth.year,
+ displayedStartMonth.month + 1,
+ );
+ } else {
+ displayedEndMonth = DateTime(
+ displayedEndMonth.year,
+ displayedEndMonth.month + 1,
+ );
+ }
+ });
+ },
+ ),
+ ],
+ ),
+ ),
+
+ // Weekday Headers
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceAround,
+ children: weekdays.map((day) =>
+ Container(
+ width: 32,
+ alignment: Alignment.center,
+ child: Text(
+ day,
+ style: TextStyle(
+ fontSize: 12,
+ color: Colors.grey[600],
+ ),
+ ),
+ ),
+ ).toList(),
+ ),
+
+ // Calendar Grid
+ Container(
+ padding: EdgeInsets.symmetric(vertical: 8),
+ child: Column(
+ children: _buildCalendarDays(displayedMonth),
+ ),
+ ),
+ ],
+ ),
+ );
+ }
+
+ List _buildCalendarDays(DateTime displayedMonth) {
+ List weeks = [];
+ DateTime firstDay = DateTime(displayedMonth.year, displayedMonth.month, 1);
+ int daysInMonth = DateTime(displayedMonth.year, displayedMonth.month + 1, 0).day;
+
+ int firstWeekdayOfMonth = firstDay.weekday;
+ int currentDay = 1 - firstWeekdayOfMonth + 1;
+
+ for (int week = 0; week < 6; week++) {
+ List days = [];
+
+ for (int i = 0; i < 7; i++) {
+ if (currentDay <= 0 || currentDay > daysInMonth) {
+ days.add(Container(width: 32, height: 32));
+ } else {
+ final date = DateTime(displayedMonth.year, displayedMonth.month, currentDay);
+ final isSelected = date.isAfter(selectedStartDate.subtract(Duration(days: 1))) &&
+ date.isBefore(selectedEndDate.add(Duration(days: 1)));
+ final isToday = date.year == DateTime.now().year &&
+ date.month == DateTime.now().month &&
+ date.day == DateTime.now().day;
+
+ days.add(
+ GestureDetector(
+ onTap: () {
+ setState(() {
+ if (date.isBefore(selectedEndDate)) {
+ selectedStartDate = date;
+ } else {
+ selectedEndDate = date;
+ }
+ });
+ },
+ child: Container(
+ width: 32,
+ height: 32,
+ alignment: Alignment.center,
+ decoration: BoxDecoration(
+ color: isSelected ? Colors.blue : Colors.transparent,
+ borderRadius: BorderRadius.circular(16),
+ border: isToday ? Border.all(color: Colors.blue) : null,
+ ),
+ child: Text(
+ currentDay.toString(),
+ style: TextStyle(
+ color: isSelected ? Colors.white : Colors.black,
+ fontWeight: isToday ? FontWeight.bold : FontWeight.normal,
+ ),
+ ),
+ ),
+ ),
+ );
+ }
+ currentDay++;
+ }
+
+ weeks.add(
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceAround,
+ children: days,
+ ),
+ );
+ }
+
+ return weeks;
+ }
+}
+
+
+
diff --git a/lib/feature/presentation/widgets/custom_pagination.dart b/lib/feature/presentation/widgets/custom_pagination.dart
index 89c132f..6ad7a2f 100644
--- a/lib/feature/presentation/widgets/custom_pagination.dart
+++ b/lib/feature/presentation/widgets/custom_pagination.dart
@@ -1,3 +1,4 @@
+import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:shayog/components/styles/textStyles.dart';
import 'dart:math' as math;
diff --git a/lib/main.dart b/lib/main.dart
index c6df794..1a45d87 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -17,7 +17,7 @@ class MyApp extends StatelessWidget {
return GetMaterialApp(
debugShowCheckedModeBanner: false,
title: 'Shayog',
- initialRoute: PageRoutes.login,
+ initialRoute: PageRoutes.dashboard,
onGenerateRoute: Navigation.onGenerateRoutes,
// home: DashboardScreen(),
);
diff --git a/lib/services/network/remote_services.dart b/lib/services/network/remote_services.dart
index c15af26..b3b7f7d 100644
--- a/lib/services/network/remote_services.dart
+++ b/lib/services/network/remote_services.dart
@@ -2,7 +2,6 @@ import 'dart:convert';
import 'package:flutter/cupertino.dart';
import 'package:get/get.dart';
import 'package:http/http.dart' as http;
-import 'package:shayog/services/prefrences/prefrences.dart';
import 'package:shayog/utils/helpers.dart';
import '../../utils/alert_service.dart';
import '../model/common_res_model.dart';
diff --git a/lib/services/prefrences/prefrences.dart b/lib/services/prefrences/prefrences.dart
index fa4fe08..49b3558 100644
--- a/lib/services/prefrences/prefrences.dart
+++ b/lib/services/prefrences/prefrences.dart
@@ -2,6 +2,8 @@
//
//
//
+
+// import 'package:shared_preferences/shared_preferences.dart';
//
// class Preferences {
//
@@ -14,6 +16,13 @@
// static const prefKeyParent = 'pref_key_parent';
// static const userRoleKey = 'pref_key_user_role';
//
+
+// // static late SharedPreferences _prefs;
+//
+// // static Future createInstance() async {
+// // _prefs = await SharedPreferences.getInstance();
+// // return;
+// // }
// static late SharedPreferences _prefs;
//
// static Future createInstance() async {
diff --git a/lib/utils/helpers.dart b/lib/utils/helpers.dart
index 30071de..68360e2 100644
--- a/lib/utils/helpers.dart
+++ b/lib/utils/helpers.dart
@@ -1,4 +1,5 @@
import 'package:flutter/cupertino.dart';
+import 'package:intl/intl.dart';
class Helpers {
Helpers._();
@@ -21,6 +22,11 @@ class Helpers {
return code >= 200 && code < 300;
}
+ String trimDateUsingDateTime(String dateTimeString) {
+ DateTime dateTime = DateTime.parse(dateTimeString);
+ return "${dateTime.year}-${dateTime.month.toString().padLeft(2, '0')}-${dateTime.day.toString().padLeft(2, '0')}";
+ }
+
// static String getImgUrl(String? url) {
// debugPrint("url ======= = $url");
//
diff --git a/lib/utils/validations.dart b/lib/utils/validations.dart
index 91c9022..bd67fbd 100644
--- a/lib/utils/validations.dart
+++ b/lib/utils/validations.dart
@@ -18,8 +18,10 @@ class Validations {
var enteredValue = value?.trim() ?? '';
if (enteredValue.isEmpty) {
return 'Required';
- } else if (enteredValue.length != 10) {
+ } else if (enteredValue.length!= 10) {
return "Not a valid number";
+ }else if (enteredValue.contains(RegExp(r'[^0-9]'))) {
+ return "Only digits are allowed";
} else {
return null;
}
diff --git a/macos/Flutter/ephemeral/Flutter-Generated.xcconfig b/macos/Flutter/ephemeral/Flutter-Generated.xcconfig
new file mode 100644
index 0000000..b14e7b6
--- /dev/null
+++ b/macos/Flutter/ephemeral/Flutter-Generated.xcconfig
@@ -0,0 +1,11 @@
+// This is a generated file; do not edit or check into version control.
+FLUTTER_ROOT=C:\src\flutter\flutter
+FLUTTER_APPLICATION_PATH=C:\Users\Admin\Downloads\shayog
+COCOAPODS_PARALLEL_CODE_SIGN=true
+FLUTTER_BUILD_DIR=build
+FLUTTER_BUILD_NAME=1.0.0
+FLUTTER_BUILD_NUMBER=1
+DART_OBFUSCATION=false
+TRACK_WIDGET_CREATION=true
+TREE_SHAKE_ICONS=false
+PACKAGE_CONFIG=.dart_tool/package_config.json
diff --git a/macos/Flutter/ephemeral/flutter_export_environment.sh b/macos/Flutter/ephemeral/flutter_export_environment.sh
new file mode 100644
index 0000000..c576a2f
--- /dev/null
+++ b/macos/Flutter/ephemeral/flutter_export_environment.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+# This is a generated file; do not edit or check into version control.
+export "FLUTTER_ROOT=C:\src\flutter\flutter"
+export "FLUTTER_APPLICATION_PATH=C:\Users\Admin\Downloads\shayog"
+export "COCOAPODS_PARALLEL_CODE_SIGN=true"
+export "FLUTTER_BUILD_DIR=build"
+export "FLUTTER_BUILD_NAME=1.0.0"
+export "FLUTTER_BUILD_NUMBER=1"
+export "DART_OBFUSCATION=false"
+export "TRACK_WIDGET_CREATION=true"
+export "TREE_SHAKE_ICONS=false"
+export "PACKAGE_CONFIG=.dart_tool/package_config.json"
diff --git a/shayog.iml b/shayog.iml
new file mode 100644
index 0000000..b3a2b0c
--- /dev/null
+++ b/shayog.iml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file