From cabeb3a80ad2d656d4e6ab3693e193840114f4b9 Mon Sep 17 00:00:00 2001 From: Sneha Date: Tue, 13 Jun 2023 11:08:22 +0530 Subject: [PATCH] First commit --- .gitignore | 44 + .metadata | 45 + README.md | 16 + analysis_options.yaml | 29 + android/.gitignore | 13 + android/app/build.gradle | 59 + android/app/src/debug/AndroidManifest.xml | 8 + android/app/src/main/AndroidManifest.xml | 47 + .../example/healthcare_user/MainActivity.kt | 6 + .../res/drawable-v21/launch_background.xml | 12 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 5282 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 3350 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 6975 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 9410 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 11528 bytes .../app/src/main/res/values-night/styles.xml | 18 + android/app/src/main/res/values/styles.xml | 18 + android/app/src/profile/AndroidManifest.xml | 8 + android/build.gradle | 31 + android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 5 + android/settings.gradle | 11 + assets/images/Resources01.svg | 6 + assets/images/consumption.svg | 20 + assets/images/drop_marker.png | Bin 0 -> 28559 bytes assets/images/editsvg.svg | 25 + assets/images/login.svg | 13 + assets/images/notification.svg | 3 + assets/images/notify.svg | 9 + assets/images/pickup_marker.png | Bin 0 -> 43220 bytes assets/images/resources.svg | 4 + assets/images/start.svg | 38 + assets/images/startstop.svg | 38 + assets/images/stop.svg | 16 + assets/images/tanklevels.svg | 4 + assets/images/waterevels.svg | 9 + assets/images/watertanker.svg | 10 + images/background.png | Bin 0 -> 59196 bytes images/logo.png | Bin 0 -> 11044 bytes images/splashscreen.png | Bin 0 -> 81771 bytes ios/.gitignore | 34 + ios/Flutter/AppFrameworkInfo.plist | 26 + ios/Flutter/Debug.xcconfig | 1 + ios/Flutter/Release.xcconfig | 1 + ios/Runner.xcodeproj/project.pbxproj | 481 ++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 87 ++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 ++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 152887 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 882 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 2151 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 3521 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 1452 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 3430 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 5190 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 2151 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 4689 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 6871 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 6871 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 9661 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 4557 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 8438 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 8973 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + ios/Runner/Base.lproj/LaunchScreen.storyboard | 37 + ios/Runner/Base.lproj/Main.storyboard | 26 + ios/Runner/Info.plist | 51 + ios/Runner/Runner-Bridging-Header.h | 1 + json/boreData.json | 41 + json/getTanksData.json | 151 +++ json/govtPipelinesData.json | 21 + json/tankersData.json | 52 + lib/dashboard.dart | 579 +++++++++ .../google_maps_place_picker.dart | 7 + .../providers/place_provider.dart | 161 +++ .../providers/search_provider.dart | 16 + .../src/autocomplete_search.dart | 341 +++++ .../src/components/animated_pin.dart | 58 + .../src/components/floating_card.dart | 47 + .../src/components/prediction_tile.dart | 81 ++ .../src/components/rounded_frame.dart | 51 + .../autocomplete_search_controller.dart | 24 + .../src/google_map_place_picker.dart | 612 +++++++++ .../src/models/circle_area.dart | 22 + .../src/models/pick_result.dart | 91 ++ .../src/place_picker.dart | 535 ++++++++ lib/keys.dart | 6 + lib/login.dart | 302 +++++ lib/main.dart | 23 + lib/maps/app_colors.dart | 32 + lib/maps/app_images.dart | 4 + lib/maps/app_sizes.dart | 25 + lib/maps/helper.dart | 34 + lib/maps/location_controller.dart | 120 ++ lib/maps/order_tracking_page.dart | 252 ++++ lib/maps/padding_type_enum.dart | 1 + lib/maps/permission_alert.dart | 53 + lib/maps/primary_button.dart | 65 + lib/maps/primary_text.dart | 88 ++ lib/preloader.dart | 33 + lib/settings.dart | 467 +++++++ lib/signup.dart | 774 ++++++++++++ lib/splash_screen.dart | 88 ++ linux/.gitignore | 1 + linux/CMakeLists.txt | 138 +++ linux/flutter/CMakeLists.txt | 88 ++ linux/flutter/generated_plugin_registrant.cc | 15 + linux/flutter/generated_plugin_registrant.h | 15 + linux/flutter/generated_plugins.cmake | 24 + linux/main.cc | 6 + linux/my_application.cc | 104 ++ linux/my_application.h | 18 + macos/.gitignore | 7 + macos/Flutter/Flutter-Debug.xcconfig | 1 + macos/Flutter/Flutter-Release.xcconfig | 1 + macos/Flutter/GeneratedPluginRegistrant.swift | 30 + macos/Runner.xcodeproj/project.pbxproj | 572 +++++++++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 87 ++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + macos/Runner/AppDelegate.swift | 9 + .../AppIcon.appiconset/Contents.json | 68 + .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 102994 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 5680 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 520 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 14142 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1066 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 36406 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 2218 bytes macos/Runner/Base.lproj/MainMenu.xib | 343 ++++++ macos/Runner/Configs/AppInfo.xcconfig | 14 + macos/Runner/Configs/Debug.xcconfig | 2 + macos/Runner/Configs/Release.xcconfig | 2 + macos/Runner/Configs/Warnings.xcconfig | 13 + macos/Runner/DebugProfile.entitlements | 12 + macos/Runner/Info.plist | 32 + macos/Runner/MainFlutterWindow.swift | 15 + macos/Runner/Release.entitlements | 8 + pubspec.lock | 1095 +++++++++++++++++ pubspec.yaml | 81 ++ test/widget_test.dart | 31 + web/favicon.png | Bin 0 -> 917 bytes web/icons/Icon-192.png | Bin 0 -> 5292 bytes web/icons/Icon-512.png | Bin 0 -> 8252 bytes web/icons/Icon-maskable-192.png | Bin 0 -> 5594 bytes web/icons/Icon-maskable-512.png | Bin 0 -> 20998 bytes web/index.html | 58 + web/manifest.json | 35 + windows/.gitignore | 17 + windows/CMakeLists.txt | 101 ++ windows/flutter/CMakeLists.txt | 104 ++ .../flutter/generated_plugin_registrant.cc | 23 + windows/flutter/generated_plugin_registrant.h | 15 + windows/flutter/generated_plugins.cmake | 27 + windows/runner/CMakeLists.txt | 39 + windows/runner/Runner.rc | 121 ++ windows/runner/flutter_window.cpp | 61 + windows/runner/flutter_window.h | 33 + windows/runner/main.cpp | 43 + windows/runner/resource.h | 16 + windows/runner/resources/app_icon.ico | Bin 0 -> 33772 bytes windows/runner/runner.exe.manifest | 20 + windows/runner/utils.cpp | 64 + windows/runner/utils.h | 19 + windows/runner/win32_window.cpp | 245 ++++ windows/runner/win32_window.h | 98 ++ 178 files changed, 10785 insertions(+) create mode 100644 .gitignore create mode 100644 .metadata create mode 100644 README.md create mode 100644 analysis_options.yaml create mode 100644 android/.gitignore create mode 100644 android/app/build.gradle create mode 100644 android/app/src/debug/AndroidManifest.xml create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/kotlin/com/example/healthcare_user/MainActivity.kt create mode 100644 android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 android/app/src/main/res/drawable/launch_background.xml create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/values-night/styles.xml create mode 100644 android/app/src/main/res/values/styles.xml create mode 100644 android/app/src/profile/AndroidManifest.xml create mode 100644 android/build.gradle create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100644 android/settings.gradle create mode 100644 assets/images/Resources01.svg create mode 100644 assets/images/consumption.svg create mode 100644 assets/images/drop_marker.png create mode 100644 assets/images/editsvg.svg create mode 100644 assets/images/login.svg create mode 100644 assets/images/notification.svg create mode 100644 assets/images/notify.svg create mode 100644 assets/images/pickup_marker.png create mode 100644 assets/images/resources.svg create mode 100644 assets/images/start.svg create mode 100644 assets/images/startstop.svg create mode 100644 assets/images/stop.svg create mode 100644 assets/images/tanklevels.svg create mode 100644 assets/images/waterevels.svg create mode 100644 assets/images/watertanker.svg create mode 100644 images/background.png create mode 100644 images/logo.png create mode 100644 images/splashscreen.png create mode 100644 ios/.gitignore create mode 100644 ios/Flutter/AppFrameworkInfo.plist create mode 100644 ios/Flutter/Debug.xcconfig create mode 100644 ios/Flutter/Release.xcconfig create mode 100644 ios/Runner.xcodeproj/project.pbxproj create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner/AppDelegate.swift create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 ios/Runner/Base.lproj/Main.storyboard create mode 100644 ios/Runner/Info.plist create mode 100644 ios/Runner/Runner-Bridging-Header.h create mode 100644 json/boreData.json create mode 100644 json/getTanksData.json create mode 100644 json/govtPipelinesData.json create mode 100644 json/tankersData.json create mode 100644 lib/dashboard.dart create mode 100644 lib/google_maps_place_picker_mb/google_maps_place_picker.dart create mode 100644 lib/google_maps_place_picker_mb/providers/place_provider.dart create mode 100644 lib/google_maps_place_picker_mb/providers/search_provider.dart create mode 100644 lib/google_maps_place_picker_mb/src/autocomplete_search.dart create mode 100644 lib/google_maps_place_picker_mb/src/components/animated_pin.dart create mode 100644 lib/google_maps_place_picker_mb/src/components/floating_card.dart create mode 100644 lib/google_maps_place_picker_mb/src/components/prediction_tile.dart create mode 100644 lib/google_maps_place_picker_mb/src/components/rounded_frame.dart create mode 100644 lib/google_maps_place_picker_mb/src/controllers/autocomplete_search_controller.dart create mode 100644 lib/google_maps_place_picker_mb/src/google_map_place_picker.dart create mode 100644 lib/google_maps_place_picker_mb/src/models/circle_area.dart create mode 100644 lib/google_maps_place_picker_mb/src/models/pick_result.dart create mode 100644 lib/google_maps_place_picker_mb/src/place_picker.dart create mode 100644 lib/keys.dart create mode 100644 lib/login.dart create mode 100644 lib/main.dart create mode 100644 lib/maps/app_colors.dart create mode 100644 lib/maps/app_images.dart create mode 100644 lib/maps/app_sizes.dart create mode 100644 lib/maps/helper.dart create mode 100644 lib/maps/location_controller.dart create mode 100644 lib/maps/order_tracking_page.dart create mode 100644 lib/maps/padding_type_enum.dart create mode 100644 lib/maps/permission_alert.dart create mode 100644 lib/maps/primary_button.dart create mode 100644 lib/maps/primary_text.dart create mode 100644 lib/preloader.dart create mode 100644 lib/settings.dart create mode 100644 lib/signup.dart create mode 100644 lib/splash_screen.dart create mode 100644 linux/.gitignore create mode 100644 linux/CMakeLists.txt create mode 100644 linux/flutter/CMakeLists.txt create mode 100644 linux/flutter/generated_plugin_registrant.cc create mode 100644 linux/flutter/generated_plugin_registrant.h create mode 100644 linux/flutter/generated_plugins.cmake create mode 100644 linux/main.cc create mode 100644 linux/my_application.cc create mode 100644 linux/my_application.h create mode 100644 macos/.gitignore create mode 100644 macos/Flutter/Flutter-Debug.xcconfig create mode 100644 macos/Flutter/Flutter-Release.xcconfig create mode 100644 macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 macos/Runner.xcodeproj/project.pbxproj create mode 100644 macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macos/Runner/AppDelegate.swift create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png create mode 100644 macos/Runner/Base.lproj/MainMenu.xib create mode 100644 macos/Runner/Configs/AppInfo.xcconfig create mode 100644 macos/Runner/Configs/Debug.xcconfig create mode 100644 macos/Runner/Configs/Release.xcconfig create mode 100644 macos/Runner/Configs/Warnings.xcconfig create mode 100644 macos/Runner/DebugProfile.entitlements create mode 100644 macos/Runner/Info.plist create mode 100644 macos/Runner/MainFlutterWindow.swift create mode 100644 macos/Runner/Release.entitlements create mode 100644 pubspec.lock create mode 100644 pubspec.yaml create mode 100644 test/widget_test.dart create mode 100644 web/favicon.png create mode 100644 web/icons/Icon-192.png create mode 100644 web/icons/Icon-512.png create mode 100644 web/icons/Icon-maskable-192.png create mode 100644 web/icons/Icon-maskable-512.png create mode 100644 web/index.html create mode 100644 web/manifest.json create mode 100644 windows/.gitignore create mode 100644 windows/CMakeLists.txt create mode 100644 windows/flutter/CMakeLists.txt create mode 100644 windows/flutter/generated_plugin_registrant.cc create mode 100644 windows/flutter/generated_plugin_registrant.h create mode 100644 windows/flutter/generated_plugins.cmake create mode 100644 windows/runner/CMakeLists.txt create mode 100644 windows/runner/Runner.rc create mode 100644 windows/runner/flutter_window.cpp create mode 100644 windows/runner/flutter_window.h create mode 100644 windows/runner/main.cpp create mode 100644 windows/runner/resource.h create mode 100644 windows/runner/resources/app_icon.ico create mode 100644 windows/runner/runner.exe.manifest create mode 100644 windows/runner/utils.cpp create mode 100644 windows/runner/utils.h create mode 100644 windows/runner/win32_window.cpp create mode 100644 windows/runner/win32_window.h diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..24476c5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,44 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/.metadata b/.metadata new file mode 100644 index 0000000..3fdf532 --- /dev/null +++ b/.metadata @@ -0,0 +1,45 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled. + +version: + revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + channel: stable + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + - platform: android + create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + - platform: ios + create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + - platform: linux + create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + - platform: macos + create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + - platform: web + create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + - platform: windows + create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/README.md b/README.md new file mode 100644 index 0000000..8f7d376 --- /dev/null +++ b/README.md @@ -0,0 +1,16 @@ +# healthcare_user + +A new Flutter project. + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 0000000..61b6c4d --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,29 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at + # https://dart-lang.github.io/linter/lints/index.html. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 0000000..6f56801 --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 0000000..7f20acc --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,59 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + compileSdkVersion 33 + ndkVersion flutter.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "com.arminta.healthcare_user" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. + minSdkVersion 28 + targetSdkVersion flutter.targetSdkVersion + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.debug + } + } +} + +flutter { + source '../..' +} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..034853a --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..2192e01 --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/kotlin/com/example/healthcare_user/MainActivity.kt b/android/app/src/main/kotlin/com/example/healthcare_user/MainActivity.kt new file mode 100644 index 0000000..66661d8 --- /dev/null +++ b/android/app/src/main/kotlin/com/example/healthcare_user/MainActivity.kt @@ -0,0 +1,6 @@ +package com.example.healthcare_user + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..f74085f --- /dev/null +++ b/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..304732f --- /dev/null +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..bf7cf8efdbb6b47f93c7e5f39c5d259b0037a8f7 GIT binary patch literal 5282 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..33e8a803652359c8a9a46f33794c9ff2a1ef4280 GIT binary patch literal 3350 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..667664fbb14a01404e1498d865a37223cc51d7c2 GIT binary patch literal 6975 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 RiA4Ya002ovPDHLkV1f(BRdE0S literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..f3e73cc1007da7bcb0da4800bb94be50f9769e32 GIT binary patch literal 9410 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 IM6N<$f~JX1SO5S3 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..1e20c0facecc29ee5bae5189390aa35d7400362b GIT binary patch literal 11528 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 + + + + + + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..cb1ef88 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..034853a --- /dev/null +++ b/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..f33eab0 --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,31 @@ +buildscript { + ext.kotlin_version = '1.7.10' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.1.2' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..94adc3a --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..cb24abd --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 0000000..44e62bc --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,11 @@ +include ':app' + +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() + +assert localPropertiesFile.exists() +localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + +def flutterSdkPath = properties.getProperty("flutter.sdk") +assert flutterSdkPath != null, "flutter.sdk not set in local.properties" +apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/assets/images/Resources01.svg b/assets/images/Resources01.svg new file mode 100644 index 0000000..f5f8be9 --- /dev/null +++ b/assets/images/Resources01.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/consumption.svg b/assets/images/consumption.svg new file mode 100644 index 0000000..7b5d339 --- /dev/null +++ b/assets/images/consumption.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/drop_marker.png b/assets/images/drop_marker.png new file mode 100644 index 0000000000000000000000000000000000000000..6e2538c266310e2852f9660f88862651f77940f0 GIT binary patch literal 28559 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 literal 0 HcmV?d00001 diff --git a/assets/images/editsvg.svg b/assets/images/editsvg.svg new file mode 100644 index 0000000..9b719c6 --- /dev/null +++ b/assets/images/editsvg.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/login.svg b/assets/images/login.svg new file mode 100644 index 0000000..1f75578 --- /dev/null +++ b/assets/images/login.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/assets/images/notification.svg b/assets/images/notification.svg new file mode 100644 index 0000000..4b6f6f3 --- /dev/null +++ b/assets/images/notification.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/notify.svg b/assets/images/notify.svg new file mode 100644 index 0000000..48bec58 --- /dev/null +++ b/assets/images/notify.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/pickup_marker.png b/assets/images/pickup_marker.png new file mode 100644 index 0000000000000000000000000000000000000000..53d818ed69f9b3bfe22a817910f3ecdd2fa22183 GIT binary patch literal 43220 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 bDB}>vc~ZhI`Z&ip1paQSYG2P*A&~zM&|I!r literal 0 HcmV?d00001 diff --git a/assets/images/resources.svg b/assets/images/resources.svg new file mode 100644 index 0000000..4f19ca8 --- /dev/null +++ b/assets/images/resources.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/start.svg b/assets/images/start.svg new file mode 100644 index 0000000..f6d91d7 --- /dev/null +++ b/assets/images/start.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/startstop.svg b/assets/images/startstop.svg new file mode 100644 index 0000000..f6d91d7 --- /dev/null +++ b/assets/images/startstop.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/stop.svg b/assets/images/stop.svg new file mode 100644 index 0000000..b0a9a4d --- /dev/null +++ b/assets/images/stop.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/assets/images/tanklevels.svg b/assets/images/tanklevels.svg new file mode 100644 index 0000000..edd20f2 --- /dev/null +++ b/assets/images/tanklevels.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/waterevels.svg b/assets/images/waterevels.svg new file mode 100644 index 0000000..9473cd0 --- /dev/null +++ b/assets/images/waterevels.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/watertanker.svg b/assets/images/watertanker.svg new file mode 100644 index 0000000..f2db040 --- /dev/null +++ b/assets/images/watertanker.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/images/background.png b/images/background.png new file mode 100644 index 0000000000000000000000000000000000000000..3dc7ddfe01f3f5126ad8fd47fe790a452e84144d GIT binary patch literal 59196 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 z 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 literal 0 HcmV?d00001 diff --git a/images/logo.png b/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ef781fa78ee5905637ef6739ae7d908e47771ef9 GIT binary patch literal 11044 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 literal 0 HcmV?d00001 diff --git a/images/splashscreen.png b/images/splashscreen.png new file mode 100644 index 0000000000000000000000000000000000000000..63a09dab71e9a99766a0ddc5d4bb65a6d1b651a2 GIT binary patch literal 81771 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≤LpUbMq^M6oZhakTl(t2o51grUa1k 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 + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 11.0 + + diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..d342ca1 --- /dev/null +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,481 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.arminta.healthcareUser; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.arminta.healthcareUser; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.arminta.healthcareUser; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..c87d15a --- /dev/null +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift new file mode 100644 index 0000000..70693e4 --- /dev/null +++ b/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d36b1fa --- /dev/null +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..fed59fcc966137c9a2a1ba8173960e1be416ba57 GIT binary patch literal 152887 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

>PpX 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%0D||B>?1h_g;!;(d+}~_f!J);a^Fh&hcg$ zWAK5xXdzz%-@kAog#d#$ICGiVMe@MaBwK_Fjvd2)@KI^7V{;tG^pza=Z)_YJS4{ zH`LBubxOwyd%h+DaZ>}Hw6}RI4}*^x>LxELV4(3bi5C6qOW4-jHUB<>=S$+!@o>|_ zw<2;P|2JW-c}~p>QF^D>n7xC5CuCA4?T7L6=9R<#y$)7Z9klTx6;09=L$MF5@Y8s3e)IyK@XQ;1m^QXMg!e+gU z607R`hP9;4jjG1{=pjlx*>J`U^U|>;(O_bJ$x3K6h=9Pxp(<(9J%iOuzv=-7ohlSE zpSqQmKa)T`&WgPvMCq`}F4ONYug$)scBzs`ypUNpw!UHK5zP0LZH&Ak?D}9ld`%}D zFcZCm7!P{4W!FqhFBt>}nqP%eL|wfCg!K*Hz2Lko!Q&Sa!6O=;@8pb_cDd>X9eq0p zoX#UyUfqTMElYUNV5>?f=V58*&}n)XS06fagqNB#%B_*gg_stZYyr@Q${Z`+HsS}b zpArr{zIV!~31wql!z=})1yukLelqplFnhV8f1p0ErR?%U`z+^H%P4QiLS&c`E6qsA zwoyZbZ$=mkKrm7fHIr7?1Ux2{fUPPK8Lyq2SNFD433ONNSO0FRaeykiknj(N8QdM} z2u~AuHpI&DeDYSRV8J-X3Zp$@Tpu}0NNQk2;1V`+A867;%RC!&oqGwSqB8)qjLm+L zwoC5qWXzI5M8*I%f%TIEV2ANFDW7CucPss4PF;~2sOB+LwF9KPDUYn>pIsi3uPAUP8ywDSwV^=6Or> z&i(fCZ0>rl50mGK{P%Z#b1dN>ZS<8s@>plT3bm)EehZZU`TaY;Hv3Rt7Gktda*FxC zH`W^sV!4uk9AK7Rux-nF(#PwU6Ni9jSZ+RFYyJ-YlW*?xgA&1|Nf4`mHEEKmPjp9+ zB6Fgm{~6sAm{>CJ=9PtW9Y}P#xyoCj$}TuLaM(J_%EuIbFcd1sQ?y6G=ur4Vg}+H7 z&%5@Z_E>_u0!|gn6^imicV_l;mJ9`XsR>(OV>6#~ekYF#5FD?>FEB zr^~S*qfUs{In99elO8{=b6x=nlm-%FNPQqK0fD=C)=QY%)A{#|xG%a~IO2O^{2aZA zJHh+ZY9Ub>F?A|ER%Nj69;+b3N?nB0@Z38z$jt_#+tBATYP!>s!}H>aUnm?Hgcx0j zo2VwFG-0Ig1EX7eDwB|KpmPCO*SO-Z6Vd^yvzj6Lxx3WPpX&}C2wiiF2yz`SWNdIl zpWd?piy~M|vIwnzWeb&qV-j)1GBKy{HPL6Lza7i)@fkM4Xm=Q73>daLa3rIui!Hy3 zWboRkYABg$yIC0urritY)pO2dU*0bzJ{HOE1(=XPa;~If`Ry5BsYi(j{76*RZ~2LK zQg&`78s(NhIWYQ2*0;T3r>96!idQ$!FZ4JtxaXB5lf+`)D29()$TrvXRP>Q?+vvqP zmVQpZvo+UdQk1&;lU_FlA= zGPkpAr&#&n?&&u5I}|o1VlG{;GQAHS4Xkn65E+l1IBtf|`2C>{pp{@wLt`OL&A8Bs zdOoE9;Sj^)vmvl;Z93d!3NK1!= zw19LRtu!9pA>AMy_dEUm_TSxoJNstdyqV9N7<*H3%Fjhi>aX(@Wga3-dz3p~d-1>Z9f8 zE%e-3;5Y%*!-sroM#nVNN~)Gh#1f5E+QGiJae%$Rq|C4gz5Tr!c!^ooGyk_atwBm> zAjwT`~g-X#)L|f zvgU6*pMLmt8r<#ecVNb6YpQaaRW$v__|xwT`vPI`Z9B0e5A11mK1jz(dWn);Y>#s5 z-W~2>o2_0Y@FmcF!6D{`^F2sfYkhy>NU=H?2(=+CWayMb-y6p-N}am?^>%g}olerNCI8KY^DPpURVL{&IQL1n@$vJ*__v?qZ=44g7% zAw}}9+Rv_0^joLvWn*`~+Fx*P#7w*~H|}r0isJ-FIkU4EwCA%O+D)KL*e~ybO3bUB z&P6~o!7Zy7A~A?lr*8TSx~GqWP}jkVtjfnLr2?HRLwf@6BsJKW_4d+rcIE3R{8gZj zKBIF|Xi{0s_gMMs#bZRP^bTToY~l8ut)q9M1}G#5o0PE0Bo#SiIdkVXPpjd(e0|wnsBAGOCfSg%83U{NQIiE zlNCkD)hbT;uSRi5e!fQ_k? zIXAXCF~@u8j~HhGqt?-0HuQ7SeY#pc|4+>2!}R^Rzz;FMa#c~InV3JuQ-@aw2om+Na* z=UKBIc4qrdWB}qN-Ca(c<~H4kC`pk7bLt<{0v}c^=zJua%^l>^BX2BypMaPS&bOPr>hcwaNy7WLAFSAM2*~I6bQ0aQ6lWnV&pm?9McZ3l7q&M ze=sEZp(C5agtCajueS0*{zrEe?@`k54YE=qmFus}-1mm%elvy@VLm@4r`tkA9Bo2a z=s%8+ z=V&HqJ!B~hjWE@eQ9!+8J*IwLB3aD97iYm`J!2*^LqSpZ-K5wrfe9QKlfV+?TM*=q zy;a0x;%?OOsORR=;t8JXk_%pMJN@sg!ESy6RPt%nfZym@x$~z~?d#Rk!&sa5kaydY zg?s6}*!_WT%qR`|EC`Ri=^*c((B{K2E!9Mh!`sx#RP?+*`f-H_OV2uRd?;WtOx5Q6F?0TdAglEioEk^|e$^H>?;=VY z%Y2~P?@Db9`4AgUMD!N(?@DfuEG^C6^7aoL6FB{NhVqI6nft!UkCWJlsos304?4!= zd5GWlAgM;YKix+BVgyKPS7$@sb|eE=c=?K{1B=kyR}#;nRw+NykYH<`7Vmww`n8~_ z{^^ZMgII(~(*Y=E@uw!=%_sNk8 z>!)jIMtS-+0=aUY7i{9TSrHi5O4=P2(ALAI$?iRz)nW#YudgiF7yRkd0wXPPdT_EC z{w%;$BIBk^TQs0!nj`r7H%O`e=*Ky7TkHg@LsJFT3!R zu@x$vb}7gkbz$J#ofh2XAjhaX9TZWV%JAHiFgE?7)!Go8_X;NEvT9KN!OlE;$cRMV z=66QCT$bDl4p6=@(~MQqH;z?_^C*j(;p!0Jhr4rMsstdT9{&9O^p!z4Mz+%{+>M=C zGW}q$4B}nSjdfzo4d0hNm-1$yTo<^>_XS((o@$neO}%)Y{3Gq3bk)VLNd~T6k8xZ% zK6)%T7_0iHCN52WnRfP*l4{htEZ?8HSKAa_vG21RiD^g`!dG5BZ+d>4QxQ&XAC!dj zYNddy5SC5GTEyAlU~Tl^S#+6Pt)1%=9%;V^1%qv2wG$*s z^u$2TpT--gLCssnG`%BmL_}sU?>(0ZQtmGTT_lLsz{`ws(a;aq}x1GFTMz$@C z62v6g62C|5s%p2|FC*dHH~R!Aku7OX-hsrJk0Svh7riKe!@&px=i)8(y6MBx>l%Q5 zof9vkhXB~`L{oo#f*EgLX(82u*Nj_jt{{y0!eQ$s_!s@9s!CvHnpl6I$Xks+Lul$n zQUQJxP94h4VI2KFDAStzS78+QWY^JUl51FWvcW zF?JBBAeVdki!-Z@rzyp8gNFCi z@^F^T+Q;?j8><`j-_O|!lMwUpehvNf8?67}Xb=j#2)FJHAazI|-~Yob`@iDZpKfE*B>_SBTR`OQQ%y4HRXEzY477!H_!mo5$|FqZ-&)Qo zlB8OY(9+ksBGY_StpSHpKy@7as1NZo;gJ&65p@Af+TvTjjPE`}YtzTp5wVUd&8Ybp zG~iIU6ewaei!;1qGn#Ufvd)oJU%MaGoiIOkZufh0fsl}nhVu+WS)c+{H~y9K=7wYU zKWDEk{UYvt_&SMO#%-Ikx&O+P_h0K~?QvSlq{dw3o>z05SFuHUQK{Yc1FtrdQJZJh zrmwG=6zwPNLw`PwI8)4LLIyrn$%gUFZS_J27VFdMspd8H8HzG}TriT~T(mn-HRHW; z735$v!OJ<5^RsRt8=q0`=ZI>Y zBSZQbB3Z!kE~sYWD7OuqEys5iuRu4vE;d$neT2~KUFIi%r#m^Qnrh-=u*V9{3O>#V zp-c(6$2jzuL4QtmIhUCvaXPc}>S+sG6!4yee))SNrQQUpLkn#OGYL?#v3Jg=oQ;un@v6#)>vc&X!;0_jSr8VxFp!8#w#I}d{;op6;|XoOGJm!{*qP;|Wr z-cP}7Ma;Nnh7ld3jotEpoR-g)B}W^WQ#zxy10aThO~FoJ+ywHH-32|nJn zOYf>b(87R1Bs)a=J!l@ahHJ)qx370l-OhckdD~FuW&63=b{gQN*Gnz&6&@qVm17JM zd07!HItWi1(3_T3Pm%ZX^0T2YQs6wpUQqE(NqEY_bm^X;XxaTJPTA-^D)NN}dg`wVhvjfe+b zp1HI~{R(RnXh)%CE5g#YIbEWRefH$yid+%lBi>-ZIhbIQLqrsb1i-_42nm*QR{~R< z8s=%H(QX?gF+aFd_%#}s&nIQa&Wg%uF=Ho zf$OntI;Ck9@d@nO?tK?}E6jLfrYQa;zjdt7_LZeQ^UFR?a`EBR@ovUU&iv7a+WuC= zUW;s!blm;#eMdhpaj_OyJN&@+&jGAP^=Y(*)EYm-ziB`=t-`-p z-u0O3rR3%xz^rl&<@=E@hnJ^s5M4?ezq=}^m|$I77&Yr^O7Lp1=ds~_m_v4v=QDX= zrXrIn>6d{}aPXjNs!?{Mg~fv5euLpX^J{5-C8IfeLrkFijiNLmRKBQ}$jqOf>U~0s z?F%XoGO&aUK#ygKx&mAvYp7pCWC7vT!&yv#OUKwU{X?bR@94LQ=&xyM+=Fc5D=Qr) zK6d46+%9rzlV{yFD&!p2Yf=~Jt)y`lAoUt!>r9F)tkZiwR`YA6~u} zVP%-+S#LyVboh-G|C`t=zYJqViBIHc+G%dz(lOD@Of2Vpl3N9QNj2dtIS(WyINpz* zwR^gK`(PR=X7^>e^+zdR?S!Ky`L)4!0c9wisp;Kt(ZULG0&%j+kKqUiRRV$z_@2U! zT^($W$gwgKaD5F-_=Zq>M~zVV?oc+H+oEGQnH*$wu>3g2z>i%1l9J4~ti-j&sa%af zE^~|2W$p&8+vuYqvT-&gHrn{oJQ;d^O6MZ7bRvty&!2;WzH8 zsBmX-jPJ{bY#oE;IPd&jB==c_ogc}^3#Y+VE7xQLSP_;tw+b6&8dRyTRW)MT4qXfx zG#4(XxcOqUouR}Je1}*BZBeHt&r!K|XxBS!)R$}B+;s=b3IG|!NZv657y@~y0$}zM zOUBqP;i#IVP+(LB5Y~TWWcoTdvZmY9JmlKo$Y6~dR?GgemZvBMExIH9etEd-nrI@2 zdaRT#URTd?u;%2i?SuqLe5B?rv3ZgCRYAD}+QC>K2I9S=!+S=%-++M1aodD>{&v*c zD)uC@b^|V*!Kbz+*}9%QBq46Cu%1S}UN!sBL8ieLmEgq%=!Wp`QwFs^UKWZ zCkC%A!f?g}4l4F*nT{v0*HMiSLG8_fdJlhL3dpPDT;&qlO_nOPMOR}8K)JYN=I7<= z6~x2w^oSb#oTMz zy>|3m4*X=?*0(OdCYBiiUlUsAI^C_q4u9Xxc*C;1pO~w9RkvvBOZLtErrD?w z;kZZr@if2Xf3ohRJGz{)mAD%Mna-Nit`D4=7;%JT@)!@K#-j;NS+ttaFOSCDXB^*o z@1_sD3CGxW=S}pB8C0L)9<15krD#^tmHz}@NtW27Y1Qg9^c6CE_;z`7=W*}i-qD!F znOY`OCtmI*!4*tY-=Z}!zlV?Btscy?k1sE+0l-bF==js?*IWOLF)=-S`e#f{OH6x0 zZ2w?55V+^u?SSW9J-c6%Sn=jO?!;R!501{90mTtW2KUO~85nL+k@hQe$t==I3~<>!F~Q zm+_zgPt^(1Ejp}#e1;FH>Y>F`Y)b7*+_Y`tkmVsV^H#my6JBdX2kLw9dVBb%`QgKC2!vF_K%iFGnN&S z;$sfP&1&s`3)~~rNxD}ZV+Y4m&GXTVnYif@iA*?5SSn3>ktNFT&f@$*iaodWdh=G( z2&=?9N7M`I3otS$@D)PYnb%twEFqrO$T$H4bR)@QwKu#S#ZOwm2D)kY%Ofe?`0Viy zkeR(Rwfg&?r;NkXj!s6#K>RF3|3;{!%U)DWq@__58Q{d_22JridHG0c1El*1?z>IWp)|gy6*7@8k{m+ zN*jDmQO;(5$C)8Qm|Dn&mtR|#*%nw-Jn4_29m#iZ3fC{dgw?hyF4(76tdXju^|B+v zH%*!GM1yVZAnZtA;^X!M*HMnaoyIRnKTjE5e8N4ht%K4k_?#|QE{vi6#7xE)aoC|9N4 zK1Yye^CUcL=a~9^{+UZBX&GWD$G93P0PDUNHImiBiQnqS1dP3@$<>ti4V~;yM6$D0 zd>rZxVyqvHYS@OQQhf^VxeXx!h={mDnh%7dN`11Y4=yNUA|&@spG0>LTl3~jCcpfl zLd3jsp^eAP2)t=-%W=^EW`U5EJSe%z0?L1aZ!b;!jELmJbZalc5|(vz>p@p|3^K%* z<7Bb`DI*{SOuPU~WGIXz5JFSYxbPsKbfzz(_gdcNK6IT1lRk@!m6*gYad?RYl;ntw zI)o^YXKth1l_T7CwH)(b9-NE*IqX%?zeIM>=F*T!2Yg_S`6d1yO+!4)nd0ixxhlXj zZ{Fv=0=)|1C>Fk5PhBv#e=-o-83*%m9CW;jT@lN~W0)P~mdyf-glYz@r<~jP)u`{@ zBoe@~2Xz{xeB%hb!{dRtYshGJbs(w)At8X2&JIB4SV`~7g6`>Tz+>aYRs5%jfcDRU z%|TZl&u;_7lxteoc)hJCa87(d35g+u4e8RTgXtXx%-a<7)A77n9Znf01;VKGa=oAdjU2sI&@bJ42(%a3G zE*T;7bIlQzN}yw9b=_GT^oigte$!5Lt+mP5);O{9Q5O|5gkhX`MP;W;8vY zrG}q9DpRD(87DDxSt)BsjCK8UZMIOWh>OHSXN*G4JF>CaT|PQ~uu8M+|9rof@-8x`Hzo*W z?0(gUZw;3+cm4qGkA*{Z^kRj2Mh@MuYUNUx|TM@_NXYvyv~>DsXW zZV-C2rLUt7Bt88OhT#|M^P2X?p>_I7E+6r?dcomZz2AmYY16~Qdm#9QdT-Jq@uNvE zf@^@Q^>n^q+D(RJhNssBlKP~!>DD5#{ef`9tdWu3t-CjVUbOt_*=m!3WAZZwhLg~L z;-rmio>F8bV94p>{VJsAA^D{ZfQ)&5+dx%~*!?;9#*b{@RGWkgZD|ta_mxV&mRP^v zxTGRdiEDPMrIG9-&W865e<7wZY@t?ZuR{sEn~`BmD$_GK72}5b}MN96f7 z=U_e@TW5yDCL0RIi@3a;Doc-Zr@W|b#^L8X7 zQ2!c=OGFWN{FEvLo{K!9qnCFuFUMANN&If@gdV$4TGK)Pw z-O|KzeV=G0k+5N>^Ccd$-{Y2VX74#BWl#ZVDcH-^H7LjzY3@_R(3F7td#jp_l98yU ztO6O*>`8&Ovi$wDN&;#X?<41WDwiPH!kucCDB;rGD&2KVKo7z9YWMrg@0ctyEIHDk z-t?IcCmrvd6yykzKN_d6hPy+>9^M_`%LA2k_J%dgGgEBoBm}z)2ZQIW)-8)W7k!DW zGl-4II9)o#)0+aw+S7g}B=O|`mSxI}n!l1t#p4VW0)D@Hap9KI()J@wMW~%ax;4eK zb}T-%+pR9pd_`KuPjcJGPrYlOK44%1rO##@uOSs^*%sTBZ%ZqGZXq#}7UY>IYm}&| zP4COW=)iB>Pw#`9J|iJin?V-UIE7nvEm6IaIC8HPr?72{f-i{G_koapWN}1S>d$|; z8BTQKi95o3zDlT*OrJF`winscZgLd5S8}i4=Q925KmdfyIYwY z6qZ31qfK7JbJl?dQNug3JV1Inp#SDjn2#9QOjm4WCx)9c3K{n0>v7Y8G$B-OtLsk(IBkbpX;+i83`DXF!82S2X)JSw&0j=236yEL1^ zk_D_U-+xUpwiI(Vlj;r8b6H5vhW1_P+|$kA`m$7Du8pR6;cZG1L@EljF|*qAh3p4+zuRmi3dX zxvV6LPuQdvnQZY12j9|9oj%Z?x8df^Y7m1v8FvFbH3+0Yz%eyFJm(Ny!_^m>fC_7E zZOraKh+gkZN6*$6k$9@R0;>`7?!Cxz*o2E;e~bm6tZmG{U2ePIG@LVO^Y!=f@bK}G zfnawXtDBMlX43Qku+3_DNO#?DdEX-U!ucSloxAW=!X6LKk3Us=Ds5-`pp{>XQRRrT zpHi%1l-1{mo4XR{IVP{kkh`%9+@Ky^G+-M;j;cAbu7aq-gBChSMFa>z+B&}YzuQCQ z5HdD3dxLlTn1+UqjwYw|SvO+Q`=}i;@4bvTzBw@bh5mOJeU7ZrfNBci0GFmzeP~dpGT~0Oj!W_3{xA%N~lpt{JLL%HGEa zqBal2gW81rYPPe|k1n;}7IzUdHc=rt1dA>BoMHg`d{RGT)s2^i zASSBI!R^-p!{A)|aAZy%mN|vBzBpx^{CZeeSa-v6>+R-ZOT%)|<#5B1s;XN5I?9dU z&oKEwQUKb4{`dExXMpgYX}uc{g`8{8q-Zi3V3 zoMN+2GVF!LsyLXiNkq^eDK1hhVQ2xM_aHQNc*BPxI&XD6MjKY#B0oNcN&zwW*a zzFlqUxR)pj?&%@C!2ypcAOA!(!@vxMO-(5;K=zu;2Q>Jl6gMy=spb3XG4+PFHt{a0 zU$Z&iy)Y(0p4{V~@{3b%SUpcz;MA+i0Oc|Rz-^QRf%s=~a^2dvRCva0!hSHrZ}RX8^dtLjG!te7bd{yu1`9GfqAaJ?&d zCzMu8U=jG@UG)fhh@JNovwPJxz|ZSq^FZjYq_-TkL&QWNA`rTmJ_h?h@R&bR&}YQT z0b#sQ7aj^r{gJ5veN`Jc|ET5Q7>@HHCpJ@Z(a-FU0lJ3U`?jJY+%G`!j}SXN$6_y= zPhJy|Km%pRRdVgfWmUi{5of_@x`?FR2c{M1A&xppKkvbhDaZ?v;IoT^<)EwEWkf&3 zkr;SGlAlHav|)e&=;D*%U-ZHQ7-8#)@Bp6jQa8aY6Qh7#~ketEqCytNIof!z;Nlw-YIORK`UShw;y+pwSV*V}rbK9k*!erZ{)rwt$N(#z_hVxI#?JO7H%Q5}2sCjro<8%BQ zrJ8%JxGlNV&X9pg@gAvQQv^N)}|Xer@fO*ZG?Y<>+b@NM93_C1G67O;|!EcN?B#NWInuoDG< z#Uh)n!VX;p;(x!mTu-Vg49vz?z`CN^T75i%F{Z*^VKs(R^9*MvEpO^%JyRSo zdqhzNs@r@8s1p84!N9(!$4M0adFm+qI~}5*GJemDNx*^m-?+}isN$b*A7eqiUcp6# za7NCU6loK>2GK+4L9fq#t?;O=3+E$adjRNt7dDWJQEs$=kPAV0V|MeXA{(4wAd^3N z-hkqJ%-`2QfPIR;d>3qgD+bI$H@(s`Dlq76@Sz9*AL;>y^`U=^(9eEaae#GKVuJ_x z7|cvf*OSF-8FS`F%H4be-dhj>BPj9KFGP`pF#a1UvzkhlI&2TVK#hyu%|D#a67-tY zx#qk{^nH9L>Vh^J1AOIVgc3OZ?J|cy{g98}POhbPfdE;f18#?VcRXkvEkLz%381Yg#lJJBkZmoH z7e6Ee_UVz70NE4LbB+Br3h`+Ii=t)Srn5%QlBh1VtJ)2G49|=2(h_d+k7QT*?45p%5fJ3xt3m>U#_53>wsq z2HF<-C6M}^BDIxbW}hqdIP+4lM6VeDYX?BcT@4KDzy)C&VG<01feXyyvz_PJJ?1HW zibTD}efZ+LfT##Pa==zppMDfGcVJ}(!|VvtF&{C2VumJxi4;6{R4@RnEXtu(g@%0s z;lQ$2z1zhrFE`xo31RrKS~TR{zZcX76*<5Eu2D>+;`n!E6Sffoeb4*cRj`t$vL7kd zLnOl)XDo)WFBRtHvgT}WOKwB%$8%^US)Zmie|ulV8fCRO;WTf5`(o~xBk5OuvL`%6 zyOv|mlNOq^%ij8Oagb+i5nRUNMq8-t9t_TYwS&IXlOzjq*I zGe53wfSA$2!&ATn`v|UkUy&4F zO30retB*zb^UR7=epT1cRRkY*MphjzryC*9hilQZ%h4yCzLBQa_I2{hl2;Vu~<?vuHyKT_Vb z&EmCI-&xA?8QWx^sm;$>mwL?4-O>LUiE4gUYsZ`M^u!uH(W!OUJ4J&)mN&8I8!1Zg zNv|klYp680rlQbC-y^v{5m8AINcf)_UQ?;xKgYax3jyQ3Y-ghJ@4qqSDAPAVO_S9b z>t!NrVR2|+{;o!MJoR%XChxL<)X7*|R-Yr~5p9g;8w{(~Rl+W3f-~XR{2!)!Q1MtB z;35V2yQ8-;7_b>bNvHx>J<)DjAk13EtfSGPpMt86e%9zs z*oXEX;oc6{Qv81c8$5RTVL3Eo*ibybsQ|%(51(lrX~8nZ4291OJ6JNV^G^eFK7z^R zKRwN;+&vJpJX{`%p3OHRAvIJjW69-ytk&nmrSX1gy_AhS`r5;-)_mdJTisXspc&d> z{cMpVf_}7${Lm>vl7>;gq1RE%Sxrsd_WVa)i`h2B|KB7j=;1qlnzUda8?(pD|S+!VzQF;Uq0A?P|GM%Av8HQ-T5AL zEuPmzc|7^WPlbbiV75&r#8}24x`*9(yG($Gdhv02=%H+8JhGfV(CUT}SYY}ZQ@kzi z{Bbmcd<<#)ReP6+B=sh|y0{LIyM5C{A04@FcVOBIuG%+f6@WhM+frYTRTAbvf?8Xz zS~Iy7AdWub9=dFMo7VLo3*vF+#*s~D({51<_wx`++CwS@>2+6E z{kOqNrsHiLIl28mo0}Htr)bo-$Liv|r1>AA8;!CUg^2(xU{Pi6k<&F`DrNHf%2_tW1l=(g^WtRP1Tk}&TuLyiE z$2NF+vzySz5XfkIm#FS6&A-mU}sl3r*i2F!U2_6q{WgZtPb0enh z`E=t#7B{Y$jUJaBr;MO&_A-9m3O(R>Se=qwcGuZi?Eq&x5~$Wp-l@dn_I4}lx~-rE zyojluF&K_(c_Le-4o^;2b==*-;}CZ{{dACaL~?fsM<&0W?tKeb@{-Q=dx?Y)@t%0~ zq}W`H7$C?44ce+H=Vo@Frkj|}0FkZgxa21N3K%SE6L4thzw`$jwQ$-*K=(EsS-T@Q zY6%`^@gGD;HSW^Ho2wt0tTj+pXU&KsW>(H7u0!Vi(*iuiG{-7J(ik^Rif+@@^|kA}!}6z}@E33|?7Wkfu6)K+nJ77xBr2)pV> zTn5`6{VASb?r=nSe)Ib%E}&o-Y_u;j?-Sh-6h29@$$?7*@Xy0}Mrs`SDGh_i)8x2Y zKk8JQ6#giS4Sb;%p}xX}5fqpt~&PC>9b*O(oYQCqD|l=jO{UO3WxN z|B}E}LRpDy;vt+0#=@dxB>nkglv$#f-UW>)Hvws)NqK}=!in6wf>^O1GIW#`24* z*S?rFE%l_)Rpw%m0k52{!9Ue}vIrt@@#?gA*6xN*MV@J#@Q41u)w78Ruo|EE?q;`# z&&q+4O=@}RVWGFfhO<@68net2E4u#4&vFkkisV3jU^)#x*tbhp&u=fD_GJ5mYku7%QaINr||eWjx~#?Ph^J|LxL^DD|r3-~;z&2w4D7d+N z8fn6~XHa$i9B;1(AjeQUAONkLtQK-VEwq)@oQ|=y zz$Q?M!%}=R$2;VTP|(cI<`T1CFsY-F{*b zg-%p9?PHgZp;^Y9+9 zz4p_zUw>C&^^eN4)EO@?Q<|D{tj)unan-q$scLz=7K?d7Ak?nQAYo9YXqmjT04n9vL(lR5-S(p1S~Iu= zjR`soEX-!7RXl=@oSEyq0I0z|DhZQwkebCalz$Jdbc9uS!QTOj?#!sR%8tfBnzKz+ z==sNL9G8j&^LrE*Wdb)>qlP#}?x?_)aY#d;HSFw2;_WZWn=QG~Vi6O~!6F?MS$uxx zcMfXa+KjZ<3pr%olH1KaALxqfE)yp3yPa~#ju-qg{ewg4ak}a2{3*wir*|pd` z=6|7Z8dCNdC`yMtmc0j6KjWHhh|#iQFVi`F(-7miJavsENO&mg0n_h*T9TFkpyB6? z%&Wb+=Q*tn$=RsGugOe;)vFygb;}`W@_9aDF1@oqm_` zU;B;$>2aQVswt(eriDqEJFmSkZ7ClFwv>lrZ?v`0;2E_79r z$8A0@$9i78X$!CIg}JTns{=0c7FP2apSf*XWuey7wI@zrn6%g%#gmrp=Ut-VeHR!t z4;8xM9z4**0NK9o>wS2s(960>UU2On}yXZ=6og)XT>( zC3@z)| zOcV+37gT0AZ)r?!@SAbSE^Kkp$6W~UBYq;g@lr+Uah5T%k@0^-iPgdhEc;Wh^P3u) zZ9Zu1Rp=c4{h`5O!`T!N-X>D8(4+WXWBc^rde>3?F=&iCfbY5Q4*y5d^tknK&fvp8^g*DLGLmjWY8Bs#)10ga+t z3|7gr@bEzoz*%2qp~X$Ke2x#*aN>=tkxcs{>8P39l{KLg=wXQ7Rqd$0fseHO$$ZThVwUo+_OK?A2*5GPt$?0|NF*1 zPqVVuhFj|Qr2H~3i(0b-`^z(I5F@U{RImgkv}FlZ5L@B;S8?>3UkDPG{C9a#9-@{9 z&0`_!B@8?=+n?6V9@P;8`kXB9sd7Xj;O~yn?7++3SU@%6A5E}I3o#%QcwK=8ov2?b z6u8e>SXykxFnbE{2eTg7ZP=M2H!wdpvHy@H*tBegC}4S?T9K4sVKVdJJ)c+%cGLtY z)XRFcOoHvZ6q2Lq=}=LevFy;hr*u%=z7k2XIx}yx$rt4F{3CB$h^yXozT^AJkA()R zVuTXITxpUOLzzbMyJnxNV%=soAJV(8Gey9dN}=_1*YoDe-*+!XU*g7%N;O;RbA8`S z&TZ67m@r>C+w}Ecd_w$h%zc!;${Y6X&+UJ5KPlN#ElFkA`k)2)aWYRI{Fxha{&Uwy z;$HAOF>A>SO@ebvhzaHQ{>#i9nc;>{N4@%+85VZ6A%=z|?=2P_`1=;{7r${!kMHwWTiWBwMsOT;gO?^2}hzU~Z=`|_ZBJNDv+dsSFR zr-z7@a-mLz5x*0ytnUy66J_~PLqO<%?=Rr%S8`<+rqrx0ELR?P=+8FK7utYf=2r;< z8mSzB4DFd>!g-Dy&wo6XSY}XO=Cau{DAlMF=&y6AbX`W-Tiz=Gs&%anKzf1)^v(q^ zwfy+o!vDl_?5!ga4+dhQ{yKH$o@z6+bFNBfVG++~Vb z8(t~<8e~btjZIT;DX0#@&Y^f30)n-5iaPx%HFq=oS+A~MrqAzm`}@CluE5QEcTbha zN2t`_r_eTxpd9~p>UdBXMM@}fz9`(S+j8fo@Ecr4^1sKSG|-`duP;Ek+o;fT5eKh% z8|$4!Ku=!!y3(!GOI>rH{}VRte~(rZQye}xph>WA3HSrMI`x9+KbGI@BcjBy0Eea9 zDQ2m@_D7)7OrScD_=Yk4|J1lUlG3*g*pfC(aVUo!kb`%TgX<&ez9s`J)W9A{0`o7t zj69aYYQ%@`D9w>b>1en;etjll;pLFx)PV}EeFz+;1$_HaBvNr0B>p{X#;oTH7)iA3 zq2xN!0kI&y`3uk=MIdc*$p;x;TA4%){PF|n|2+!8xXeUA?vKX|YA|x^2WR&P=;Qcd zI%k026CjCCJI`83@*)qn+gdnEuG>ubRIb}9z5EQSsC=D$+kN#gmB{knC@b2*wSM&9 z_rQHqhqv1K2xwUy#wFa+Bc!enC_mrKlAF1O8!!%ouk4W8R>_&$XPr|*nURsb$}iaFeV?colmgtL(aTT@GSW zKqS3ZpMD3Ejx@s+Sc@a2$8a|S8mGuN;@EP6OXft*eDMi5!H9{v+cICyLeL5{OttS0bhF=#1>m#KrLBH%?%O1%b z8>Huh^Fz(Rj||Jo%+7AajO{C(`G<#GJ4MO;R??3BxzyEqhvgcq0k{l@ISr1dXgJ4A z%pG|B;n3#V=?jR;%&|6bNmsIAx2fIZEk~Ha%2OU`(O}g1{>JZ{KpLq#f;~)A^jH%q z{pmfHWJP<3$3Mmivz#XR{%OI(*mn#;nHdivHzgvuaAfTR!~q-O`I~6%nCX|Jk>r+i zK=TjYmRn85*%5ikwcHk339sO8o!3M*@An)!rZX?RYwF_usxro-Rs>E#h}Z^MA8?rY z!(%R%2{RI$DSWLa*M43;#C*m1bh?TgDMp^ln1ZPx?rhk2j)0)mtuJ1)nlOWdh1Lt) zPTwa_2wfn?8gG2E@}~bf8<~j)7vm*PVmc_H3p!0GmpA4zMv6*C42SwXsQKj^$ETqy z#U_6`%_ri6=-L#%RS+GQYv7dsO}&wyfZR=PF!p+n6_10YqmxTS0u_UH?j##1E*U7i zyA%ES-V!7$v#EEiepT6|up!1%M@_B$O*NRM_0H5!MZ~K$8hZnE-*;*>wxhNKHr|%y zd2+~%6_WZvNCS-(VNEH36t%-s<(eD0k4pBFLv`K}HgYieBhTj+3u@;t#8MVt#F4!g z=y^N(U|RK)oaHIC1*S=YP2z4Cw`G4Wy}VTTi*y^w=lyU;>CoPZNx}WtBQx7G896Ww z^LguXB_7{v_W)V*Zx;a*eS>)b_{}Q;Rfgl*v=gM?-f_-~NKdEenTkMN`N5^ZOt3+lX5Z zh}7hs?Tga_?)sx>&&Nr7`U;SQ1M&cQyD_DDnw?@N8zV8}PScqusVy*S^nGCW&6D@* zwKFGL_R3lm-_K=us9_&}SGKz|1~|TA#Rel6UjWBMyIX_K!3X+UG?c}!ttM5b-8Sb0 z50riZzrJUQQ31{EXD2h|)godx1Hq;Bvg<vkfK_J5yO73a~MRr|P&y>BCD zzs$B~I}($nU9#%-y#)_>EJ%o<(R{gA>s;pErO5m;~F zDC@c5cti7Ee1wgmC&BsqGCR}B-6*5te8ScTc#@f$)tUX%F~GjWrlPl%>CJ|U2#*53 zY!jWgZ#3TO@58wO^NRFO4_)qA)WGZjhYlZdlB>LQevR>;njvxks38jh_zj9<0t7g= z^zP@v)`-_-mug_~@o8iL>H*$PV$deeM1H6BB zV0E*bgrW6qNL@9)f9S2d6Hasq{)$dn8R%Cj0gKI+_Nyq!vqkU_bo;%NJQG$QGdh)|Ir0o$0DPQET3L zOeA^z?(BO%UfZNKu+NQ^JlHnA({&r-X#h)yJ16BGGj)@MgmwC*t+`T@aP(aShP)UP zQ&wV>5_Pwgu=I}Sp7lK+>3#^9k?xM#zFN4CY$>-vYWGyEsJB*A6_)Di9HrIt=9>Od z)$zvKM1rFvGPbnU%hp#j&ChqI$)1FW`>=GY zx_>rcQO4ooia-OD_yv1zai2Ld|GFnRWTE_})!4s(BO4pjBL^Y{eWC+BSw6FYNSL5&8*HiKxqIUPXsr~?E% zO8|y^1G?)`Lcr`E3mfwxajo&JvB~p~`v4{carotyqQz*rAaFg9Tb&(fEp2Tsq!CvB zuBC#hFTw7G>K5wttQecZorLH6!zdf>tD5Ya_By6N8Pg{ijx~He?{Q5~2;l9J+uX0qQJ9G;?})eL1Jp9!v?x9c_q)`k>ztH{V-` zJAdCQa4<;Z()NNzW0By?5;xoM-ik-@h2JygsK?Z-4DAaa&j})OCHgBzY}{SkrFNwN zZh)QVx6@nl>D(kioc!2evXx#~n-otz$sb>^AEKnj2AUwbupW-tw_ttyN`&l7{A!Pr)(km}58Tt6-=t7WF-MSx zP}^a~vtM%zvpJmbDZUgNJA+(e2awJ~gJ$8Bl+);;3cg4--;-Dc2O7oW#wtb~n165!c=W!z#vEyl_VwI(yy`3K8WN;D_r8BrH~Uq#ODww| z;r4aWy>dW8Vqdw=%0Tsw2@P)wATIIr>Ah@a{!&I6Nd}FDs1DbZ9CDJF2+9`N*>18k zf~)c?_dU`8iA;hM8s%0YCuFDd7rk%w8VD~@#_tsRle#9ladQ^rfe`AtMXjnZ9K;ve zHeVCHOu;OELp%0;uV)Oj1)uK&^>mwR@CxV{IV;!A*!JLAa#){1S=})*C6GXX?}ts2)Jd<2n-VDLs2Jt1BQiwU zmni!yR}Rqw$uQ(83_?CP3_a!~zU(E(mu9S|>8`lPUhW|G_yS=^b7#k&@KQO;HKnf{ zcmwa;zM%TGM%*e@3TP5$)N74fc=Y9uM!IF1oNRq${o34d2l#Y#yb_X54H4UZxHwL`;ts2<&&ay#4L{-8->CP>p1;s*e9h zVoZr`G`qaULkW&!`uSqpL1CedCzgaE-FPQ7y&kYo%jb~g=PI49!_)eqy&503;eA;y z#NS^R!(~~0nKWtnxb(ItEomni=$_Wfq%&{ghhY^GlG!Oh)Xu_dRmInL0LEqGy z`6|DV1L_KG4UFwB!LuM@cI7*HI5lD&r zL>&;kWhzW(O@r-jmkUBU*b+(n@H}U$L9eml{!vCY5o*S}(`FX835xnlv%Ft3>u%uo z>Kj#TGVT!9P=}KpekKOguVJx&qO$p!DPBAkXK2*-1KvJYv79?57Iq&Ih?F#i|x7r!Cw5yrTqURr_z| zv}!1yt5xIzM zwI?zRDi5<@3zl{-LC#*x@z{88zrsIG}9c!wvGO94Bx%~I_)a(3@95^vxZAL*28w^21R2$_pX$MvlI)q zlFh{ID*uqQ)`Th@{Y74`Y9GGn>puTJ5z$34<2j?rs<&d0Xsw&{e;71Cn99PuNq>-k zEB6Carl*R|vBtZ6v94p^MpV*VuobGb-RTY*J63#oR511m_{8{~MG-&k#8NijQTvET z&H%C1ilfGpZ_=uyw+43<3oo#%E^1Ul=FTFXw1~X~6B83@^GEe)+XPBu0-=(=#Vx72ZY422qJOH0 zm5;+y!60Xj*EmcpvkX`VX zchWc_gbN|^(h-*b$0zov;-U1^g`iqY(&YbP3|!UuyK8SD*Ah!Kn``>Kp*E5y9L&!P zIAuT+eknY^0Krae46Iif+;k#awfHmoUT=AggBe43_2UI@HEZD0L(hECYl%h$Btn-% zC%hUw^Z1ChZvgY?10VXT56zF5u^~V5_~r5a4Q{NYS0VxYzIM|BzHbOLOO~;azJ_+P z)=W`swD7@@$B z1jBO^WlnyLWNxbJc5=f7yg=8Pq_u$KY6V! z@$D6l=YnKBC2P2rq@jcvN{)L`@7BjxUzF^fpy##MQG0TTuoNI=l(Q9FF$un|lC#q{ zG(`PCmfFN1u`*smCIbeS`tWKlKnQ}p~GE&+pc{8ahy?qiWu#S4BV-4!YqiNb+?QPyDyTqTIa;p z)<0ydr7h$S6II*c%-Q&RCnNIB|MkgGx%BZ&se(7;OQV0&R;QlLJIWw9t9>8y85usy zIsxbqO`T_2Yyas8PE4{Caa&;v#SLw3#>QJ;(O+=3ZrZChh*(T8!Iv`erOo!r5xQtI z!KC-R?*RwxQcoONBL?JGFQ}kWFYz;}?qmP4eZI;UzRgF#uq=$hb=Q0!e6^MH{5W34 zA|}m8^umuCD4nu%XOKi7a|YVhZ7uRUagW2zXB}_!R=O*ZqT-o+l}&#hGb&vz3YgYOJU;=|%9`!`4P{ap=kO|ZBMWr% zbZw3OPK(FRGnbPgF~bkrML4%10Rk!_YZtfUMvqZATlI1pV3|5Z&sJ1BdP5|URz&%x z=(Q^`2fUv-6AsVLfDe0e{Z&sa*p3>Xn8|#c?2B=+V0CI6zV=kJ>TZej={T9+fI!6tXgd*U|b2=rNdkN-l3DxN9oTxCE45`^5=%Gg0oGNw|BssBEU z)_;>9Q4O=6JUhikttPmo zo|y~vInf#o?PcoG%RGl3 zQ$dBO$?MLdy!gQpOwy48`%65?0wCOzDgKwEE?*+Ot&^JdeZ0j)phiCE>b`+_~K3abWwz9OKeP0*9P9$j#flUN`L4 zeIY;PyfmKdg$<^3n5-O;vhuRljmzEeHo17SW-ud#Wc%-uT!y9(2Aw7aPb z@D5evy;Rn`+RTJDHS3o~1>&-$3caKOubX|0uT0M@q818i9CxgG#`v89Hku0o`MeX* zF|8zb*#FQ|`T48C!7+Vj?X|cSIo6WbmT9@RNx9R-JqaEg7Ju^awD(?Ii6Jd9%J-ZS zU-6r=OIt=M6Yt2&sxS>|3j35=1!Ot2F~Ya*fO0R&YXH@Aqz3qNJ%8<@!qtpwn@JrF zImGLx4HTK%-rte3BsM@xP~on&T8h`0ou{jvYIUi=?4X6|RNF(_e(6(`ZAL(}29_1$ zgNUP#1ym&nTtMIbcFWDH8oP1MC({08iRNa+*R_;%e2nYf!ygn_0tpV z3KjyzDv<_=>M`aQhjFMjTYk4@zS$B>9Dr(z&Blv9Ee5!C6d$fx7!MW}1#4UvSTm1F zP)-{`4w_wtqo7wpr00D}hRr^i_lYEuv=rlVCTN(ZoDXSVpbcnWf=4n(!8%c0{Yn65 z^Z2tbBJPq1m{O8FpS{s|UU8@(Qn{JdZmuWHp!#Q@x4|C)X_f%F-{7LaP%q7y(K}{& ze36#ZXS>`y&2NuBb|l%TncLL(*HT!pRfo^BU}6wo6QTi4G4WgeN38_`)SZVh3dW{9 z{jW@hd@R>*{S1>*iz%}5e3Gu!r@!{J?>{py#oPDP|4{PzW%EvV$ct@SXH5PLksgs_ zU)FY^ZLw05i&T1+65YmA^6=mS8fZXl3p;&06!^&iCo}-k9kMPfLB7?l_cLOl1fQ%` zjeQuI&7k;%ymSw{`TQO*d#q2c)o)>TUVCCr9iTCs%y?>)V5L=*gS09$<<&0>M4Wop zFFCn{js|$^o--s@{78`3iT}UdP*?x*;wkTgbTmr@jA12-5(fs+&x3F~hEC!QCdr;l z&@CCcyky!f}wF;LU`c7HuVGlt}##T~T_2_*mfs zlB;y7%cx(t-OOsUesEh;$P0(MrLxT`)-J7DCKz5F)%>^!`SWEgCttJ|H!!62H&kJ& zRypasGK?xEdmY~LH^JGnFexl13;$@S-oquF20L{7Kd&i;oh>VA6I-TO&v@@1Fh&-T z=a<1o(rA+02t7@}yNN>%^dYDT1b+2iNX;yYoqI`&Ze-1>3B3RM2`oxgX8M zPONFfVIC9QsnPVqG}}AA#hXzP{$_g1_#33Hzuj-%isEk17ghJ$6X|QJEk9T0V zEfU}JLvJWtULCOgmq9%vh?94r>)SXH0tWw?ldh-s&8}%Nf!!qdgU;tTjc7xHudf$O!90Gl}0m??d|MxT34aS8N?a1GpZx_cD~q^b+{>={?WAH zax^8;{s=+Jf4;s%X**d!dMG};OM4jKUy9$W@nz`9cmT69B>195iZDZB%w~5qGEwsO z*^ft(EX;7IolaiBJ)J>qXAsih#LnHS(dsdp**0 zPP{Og*W~h@=Gw|9S2)X%@ZuroQ-tbambjI`Uz2;AocY{t2KxOCIf+KWSL&`c`ZGh$ z2hiiF5k-AyG^<{7OIPQ2#5C_fgIAsQYR{ZLuyqL?fNmyCRSEFFXOp-sJ~A`B_msd3 z3v(A+m3N>Etce9QkJEDtJaH#YnPp{1ep+$eEq37A0SW!xUN-0QnT(LqolXT1$wcSq z_3aupwn&DvqaTj0b5aB6eE09>f$rcyhT&>ZdR9LNB+7U?MOtQ~mCi z_g9P2KOhF*`F_1;Hha2=`v%yU5)2zomsS@sVQ^-6aI!9yk{8AVB z+Z_y5p%a}{RUUzl3}Vn!I_Rjey8#B#`to}3rTCuyC?xu)dF5=j)~?9@P{{EfwtBGK z&c5s8ilm^y)`Ex}<6i2~JcIBx$oU?$yJa(<5DYh5?H9OvIU{~t>tkpZ6-#xh6IFY4 z3#~(TCKrBGn3B-hB)Fy<`d=B)f>EXP4GYDs&()Fz&gg?0CdyohucNQ!=iCKI2Ll`O zb90@Q8G?kgbuWwgZ78l195p~gPZ9BHFYj|Uo_{J|a;u`iY`_lvli!t{0c3L_`SCnu zSB*}4*$LksTJCr#3}`w*d7u0MxTBV)=r42F3C^F}QhT$o^Mud>^s+8Oc?A?7B|pM` zO1w(XUx(|_{adMyxzb|i7y~vwf+@02N%-~oGmWRMbFJXLc$?kxpku!dcxVaigYaWI zZ8L?rOQVP0Knz2SfgIPMl_--L`An4`w}k5$3tfI`t9<-}`}mFM01Nnk1x7;z@IC%T}#z_(VG#M?~R~HZhW}C)Ng-=k^Bbu>E%e;tdCv_ zJ=+R_d3wj0np)DAjaIm1QcqYtx(X-xDplF;1iWqpV><(_VPp3H+@5nrbJgOrq~N2z zi)u~EvBC6YCohMyqKNXy#!t#GToHSQiX)JS$W^u1hf}EEcRmp>R7&i!HOd|Di9s)* zc)m}){KaNzn1!Gxk=B#;PHbu;@H9)y_W{xzeVv-PxIF?Qo_rBQ(rTVsKSNmPARAA8jBCT_$0 zZkeg1zU1CLeNvS$siCp()ki~Hiz17{6~+8=mnXrMG}r#CTf+U)kmC<63SYA>OBIvs z^?>MS*Rh>%3*RHUTtJbeZEST=dD@5K<{II_rOy{nAO=bR?k8W6^JGo2xy!|&?u=l? zG-v9A7^}?Gy;xJ)r`OJpXVjnMhf+Ec92OYbM6Um*afdR_Q5uTg{59Hx&e!NK4P4iS z_b{%{dra?c`BlX)R`GSoR5H(@CmeU%TQL%mSQaTQkj@W=z?coEr6x*?bTeam&__sc zKCDu*x;ZegrW%t2hHncN)co`d-vLW4D}%(Ni45|);Q0bt({IPD%T~=JsT3@X3U;r% zwu8ZN$v4T&>y{}LUp;7cF>^DuTfdO!EfiRxaFaz-_eK=zBk@91sEXGfA6lc9@*ntA znrafAccrSiEWd3Qxjf#tWaE13DW0ak;aO2%10U;6VipYgN`tAt`ayu7}GEs#3vW#KF5>1_|~pAt;XHa41VV}+YGP@6UsdVn;E>joQbL|$~bA2+*QYP_zV z@L{L?o0P3A7kQ3zW|5y;}#7y%K{j!aqNkv~!e7zpS2T48_%N51sxlahjbQ`iaKFWeNB1@#T|a=S!Sp z7(T5Zbv}YD-KKlhpk|brv>_GXzFSyOwpLkW6>n{ucoZGbE_42$K{w*)vfU5+%@B&I zm36+Sh_A&eJ>J8d{Z{@LJV?nhg!wq|3V39QMwVONVuN6{(V|1b>NN)V5MgF zzS!Pq=)JDJxP9oSu5d+v)5)X49|g6kyd>bwLl+*jw%v_iu165@b66H$4^(UQw& z#^8$#Yy8-aW!G-DbaRy2jL zNgY;9DZ`AyMgBD=QWB}I5!mE;K`_H?>~hCf8zf9CkCSFT#eOI%(<>;^Ecq*n(pg7^ zo%A66t7`I)NGIzCmH{vh*^y&71+71vBp+1uW^{7jn&|oLdUx_bpjI5xvGBd3FUebg zRvvHnjA0);{b|&op}t5eTdSk^M@#@YSl15X3$I(_XU6d;;%6986jGFde;q3DCxpF zT#P2LJY*eipdVHk{&bHpi51WFABsaCst<4~;=6pG%Bw-K=N3q;eIrUByEy;F*N+nu zr@oCXAH*RuQ2g@1)Nfu6ZqfGi&%_J%3(3MApNCRE`|m;RC6jqA?>0wN*4r~aws#*B zm2cteZ|FG^d_0&w9^y$bE5e?vPQ=_7xCr*igJG}*n-~@{*mv=J>IGBMnF<0)S=;=E z!cE|q?{oB_>#^^d%Tg_6i+vyib(9do>=tROK3&NwS*G_3VcFWS1pR}>(6y%ZYLkdh zS(pNaZ!KvV_|HA*6#%lOr_kImEe!&WNBGyWIE* zevWM?`%|N&9sfI?_6Q@Ar`#gU7)c37@Yq$@sAdocNCxfrHHJFlf6Eu}vHcLqK+QZbIRkbn^=DG#Rv|_(mk%aat8y}9(1jnyQKBQZgrI^UX(J;A64SZb@FsP z%fdxXZ`wkcN>9A;^NwsFx*lP?&DQLXXXFOV462gSu{yWDaof&uvt{AEPCSRZBv7_G z6z1c9jBm)tYahd#f8>(lyyw+Uz-Bm*MRt zbc#UEV4$aK_`@wG9K_<2o*A5lI>33U9PB)?*hA_X>U}+P^}f9t*3Nh2C-ApP@K7*U zb)l&=-oryLp}#O`gg1XCW2`kABm+ozhulw(Li)?DN9Te&`FrlFB7$=8oXBSx_HboJY zFl({1(_MN-niulfS$Z@tSTK@adQ|WHUm4G+jAkUHMUnjYEQ@aVYEAE2vtL7{ve%b& zUj>b&db<4I97A_gx>)iY+rHE`b5)1~QJW|Gl@Liqq<1GEu^7?c0&AaL+h*DeP|5z6 z-jn#hr@jT@Ctc4RQ{&n^ON>4cF4RpSo}Hc@NO2IHV~Dda{gd?`<4T72mZl#G#Y?59 zLi?n`AH4!YD!sz~D+EBu>SU$({!wwyq3xhs2OcEm!gC^$`;&RR*^T(2ihLat+SUK{aCl@84I>)@sCc0NGa{cM~9FHj?_x33F z-y`+p4Jlyq#>}7bWbY%Z5xzCKOSaQpx$+1LgW>)6+&m*2pXV?*%4%Li>N{UVe@xj* zlFO*Xm#(mj{K41Hv3_Ld9wyX$qGRG{ZjRy+Yc$VMP-#J5EtAxpCZnn8x0mm z)|lxHoV2tEZEe9k8l4R}j0$E2-|yW4TrqmaSjBnMyVFen6gp@F%7Td(n6yWyMkY>& z^9Zy=zUDoCZ1Q9JYm$1SR9S`8z>%S9+nfbN$f_b;J;yW1{c-9AMW6|kJ(*f+ z&o$Ri3XUHlhvB-l?`9i_TjQ`(q6?m80`G|6|Exy(Pqa&&Iqa}{>7j;=BvZRw%jyJ7s$i{?L;NOAq0tIog}zX@ z!I>VcrJ|o3hC}+iq1?x6oKDp7HT1rp^wbWCIGFVb*rTtk*b+!4|C9I5)rGNJjKXV^ z7yPJwnY;Q&cj7N*E}T%adM761v%6a+$Vm>7^*D-8uTAPJasBp^v(jcBwo9BoIKRil z(Hb2*2oKu^1;@Q5(MtH9+%a2vs-hi-QS+X!{@NX0)t6hQLauT&YcY&ii#zgoh>&`hPm+m~{dbzB? z=27y-w0FE@MsRKej*y~8QIob-W=Ph`%f#k2?2Qh<+3 z9-|(WNENvr`LuyBhqSdLsSmJEehX}OKnysbjNf4|H{$ujYAW5mt`_>_ybsqPx*uwt zw_i+qHr6=%WX6fX%KA&@od^8wDVNcDCA-E?tFk87?ywVh(HXxQ-ns8UlQB5|9&$Nu za;^VEGSSo*#I|p;E;1n=DJTa{)sB1a|2Wn7508Ho0KLZkHT$0|_^qw_OWF8$QvvVi z>R9mts3o{TV-Vs@*PikjqTZR;?; z>~aIoCyIV8MzG%5U|ZI|Sy=3Jb^@ELZ%L2nC-G~B*J)>Dx9BuRH2Dh8<8(~%-Q%~X znc5Tf2ciKf%3aHa3Bs56M;)`FOv%jM-n-7sWEhk3Id{F3bl$Z!^rG>7#}9!DJuu-K zN4VI7)l$x$IHG|=!PA=rF>+eNW71$7(tg(T!};?WxGy{Q)HIIDL)e}}wkRFhY;YhXWjMG`MuM7KQ%F`H-LKk=srG2mIA zNP6DsGf3B5l**RS;OwrCzs1g$E$nHs@nAk`z#27>FSe_(qZGsURXYm~QtzHxFr&!7 z^x*ni=(KC{JBn#bE)ed!fT3&PyvBrOax@Ma@+^T0G<(SH?Cz9rte;#QD**?H-J1@BUKu@cc{zkKOwp^nI6ZU3_Fa5LtLd(`78xNm##+T2C$<`rZ->GY-Cdo>=zP0^(J4P3$Y*q+ZTYg{^h`(`nnbB$XZ%HT{-+B)DO2_Ld7B*JV<9z0k#4WaF zI=-VEjZ}TBMRWQ#DOXInXRKrB%FkcWpQ=N3p_|=r-tvV{AT~|r;48kcnRR?&vAE+T z*|ff{+0G8txasNKuU7&2yQRn2h*Hn!objO}Feb|ajl*o8gcz*Ib8CHoa&X64UQT{1;tT%z3LSeg7Ex00XnfyP)Aqk`(jxb%>{@=%$h+$FckTQF0FYhd8}iliscL z6DRCv4H7f(#&lMc4b_ZpNhVq;d^z6cG)UnI`|jm$Uh#dRg%vrWaG_lULpdiqjjJY9 zu9`n1H3@9XBLEBBK1y(0f`bA5+N4e1X`tTaYr#F?C{jdXLIm54$6RnCe&x z-GV}GJxQnwoGW3{2k|&&>{9qTX=|7z=h$DnN_USJD+*?Q3I1mmJ{J~AxmMD(W&a$J zq`7DQ<%2#GLR()Wa65G=8mMzMB8NX_?``S26B~cD;(h}_cw_`FZesM7MIXnyGi(^; zNGXp;<`wzY?&x#9TziH)u9)osy_2~ag9M{y6gsX2+*6Qnzooko(=<}wBzARUg|dEg zNl;Bg!+{4y#t%DApXkl%(b!sak4aY#4cj<&whmK&5F?ScVnD+f)Fp=F1-t0py3Y=_ zC^XWgt0b5pij&S7`y!ErLdf|%;?u5Cd92}6&xwkyWha5%(#~;s$2dX_1!^c2mum~x zI0(FYb9~Dadz^pXR_t|fQj|(oG~iL2r7*hD?IBXIc7%1PsXQ{aLnNB<9UiI4RvM(u zc$B}#4kl*lxNhdyDXGgmL6 zOX1vgR=L{VH+eQ)Ep)71;=rEB%6}>_-(MQMx0~> zTsHSccc9cZX{TYjcxIpwRa_lYj`u&aG2zmO+ExB775I8Fj$#?2a-A1=_p+?7Bn-Eu zJvYDw--VygTtKyspe0qRH=~EP1yBljsP1FoieKCdZesPvlGjs)$b4UI76nS+DS_6l zx3iB>JBFy!r&OwkV95_BL=SA z(zAx?M&efR%ayo+vd?NjxEfHXT{6mtds{1v#hS?-qlN~N8;P)i{PLp9+R6xAyC(r8 z^^1av?W%1`T{QuZxfUq&vLIB#B*h%R6IYe?_^$R_=kK36)sDD(M>__-8ZmvlSRwHA|6~mYkS%X)w!9rSQK1%@h}oLv zy`!-pCrGJo1{*SOXGYJnpwP<`}GEW5 zc9l`9t2_OPg7^PL#Yjb{YwUzIQ;VS|eK{r^p{QlCS!gCa4UwpJ>5_asMT0m0dz-4; zmEBE)INkwR=r9e<&B1DZXP%{ww={45gJRswc5fRrQ(hl8t-j{YjU+fo;V2$=b8+&CHbPS zwR!5Pafu1I9;r8B;fK3@druih*4A`6)0ikwI00?##-O%Z*R;lJNds1vnwv_afBt}v zTxMB0&0E5fxcfYA=rxua>3u)4brtjYFeM6FM9;ywwt#nA0kK;klH(^35{Y|ue8Se| zV|Fxl-&9m>Y%=a=QA^=_;I@%gG@41 zKH3Z{uAUvN?ByH^6@4(8(-YhcmII;!L=+lW{B+mk@Guk`m;dApMD+Oh`Eyv~kpHAd z^)C?wWB_40!vRgsjLIJ(a5u4I!Y0^{K{c?;`ySCic=&`EflD<6lWI86%oN-}{I=%d z0G`3oU0Rnn;Td&m?5P^J#-eik;4J4`gxZ^UoO{K2uRclrEuyhrsakNn*ckpjc=-GT zx}T+MuCqP!E!|vgv30C7W06FkWgRJhvOmj@wP7kZ`HF-tqOGf&JSp9O9=JZ}#7wxC z+y<{VGihtj6o4w*C=X$KvKO(I&!es?GJf>f0|!I#wp+EepbE!uiGncSnk5VT;Rt5A&j-T2`P$F&HwIjH;{*;+P=7X53u0Pa z9E0vEJ2shg9QW`|xbChy36YX@`0Kx>k2dW+!)u88rm!Bd+)2@SolSgOtthI?WPuH7031V#j4cQt9f(w!_@7N$TC$F}V-dl&K2?-OgT7 zgQD<%j1eiWil5QN@a>!)IL5i>ALUl0x3&Dur_7b!%KM;(MLNw@S?WGnshQrHnX3_o zYWaah&`JqR9%rV``gzXj=k@bq{42^p)^=RoX{|?e;!6 z7wGLx+%;n9^m#UEogj@)u!q_~5?7{OU4N-vAH1~{IJ7Or|M&0II^wN2nA1UoedR20 z=QVM0?uN|?7I|*0sf{%V0Mh7M5^ei`!ZbG|3k{3+Fk4V82LEL%9pWW(k86YplD4V* zuNT~b*7cvxbDQaAe)8hF#;RH7R(Us{OOiS>w9G^9A6~wHX7a}>Z2I{9Gs*N5`Y~nO zH7Bs!v;<sI^{Tl_fK>~{M`Css?eYDT|noifCE zzKQ~ z&-$@KS@OA!?4zLTB-JSQY5m9KJD}2RwK-qK2o3A+j_FjlRG|FB(KTtOQ`P70jTfiw z8*oWa$68yABhs<4w0O&^(Mc@XvvId}i_eGeSp39v4pk=$-}KuDtGv%W+7AJG?4(_@ zR9Z>xaj(H~yIBO)BXvw~u?Ob*4Mg^@qFaW{@x&=KLU$z~G&cs0mh{Z0J63?Nt`{;X zRA5D1*YESxrf|r#aBQjX)4ykI6DN8wzIA#bajHjuss~6uJIof(6go{7?d}#fHgC># zHB#4gO}hOsHi{_9ypFe%R^qq8BH`H5cF8 zu}9|+GC<(}=FhA|BC_^ZrSiKwM9Hi+Py+X>4WI8C@%b!|p?OA%yFA^D=P_)U>u=%40d1HQ$Qq}U`8ECJSS*6ik%vO`T z(UbU@Xg(XbOtBUVx*`8U&P4N2lcnPjjI|!0X;~s%F?)4P)ey~=xP1F{+jeMfJ8yQX zQKp_+VjYjzqZSjmxu=R)3D+|L%XQtN8Qk%+cKf#tN zYa1uhqrXx*LUtUuFyfUP$-hnxmUcj;3Vv?Q#60abr3o(6*F((W4vC{oXj zgQEMzZY5j`5PnG*08vGrrBcrO$YQgdPVE{)t@U{Z+$Xy-pSvmnhnzxr2k(<;be<%> z|7wr7K<)YDZX5k8UDrsu>@cH{pztMcRLH7tHrfsEf8k%FxMSFsr`QMxV>4Fz=K=XSUKwDY} z^7bQXxJ77|eg(Aw>Bla%t4;I| z0xW3cVEMh_o{&S@%TbcELN-o+{T&NRhYS>Jp^vO0ez>)p75N6?)`@MqhQ$@7y42oG z22Yb)qqcut+swXESM-K&bF+T3Z!Klig(dH;g)?@L!^Qc^zKGi<709}X&y?aw_?S2< zIUSeQ>G~*nE6CS~d<5U3QK{HZbjZzL!BH$+@jiOZzutvmy1m@_-usZjN=?7zvpZi* zrm4Wx_kzZv5xQ>da`*A8Ud`q^blVN3mmwK&RQ&_rv*x11+KrFL^&gK{WMtWbwM+3) zhs^=oRLz1=J8v#$Q~?sIa7u|N(93h2U1tRECYb2oAMcsp-kHK3+U1tw=y=7@>4{;l zFcYhTkuS?d%D>)nd`WptD)TSz-wWmhlFt;KgFIk0kd#*a@sscGXk|D1KWA}^J@fXe zqr?gq5a{0m7HA)*Q)WZ3*Y4Q8fmKKCE!eKjob22-LKRf{y&f=|W@;Q1KX5ORGTM+% zl|9p-Erj0koj)h^PgkEB@hF__TZ!<&vw^@(^mO z?(XjH?(RC@Jnwhc{Uh#u=a-o^J!`uAoa#FJ?5f(8u(ieFs$75Fk+Gx)2a^FiQD=L0 z9zv=0w^-_mF6fRN)&?RWPR6IjgV?j-IDklL#qPfZIsN85iDHMPQlE?|#bF}Mowvt! zKR;J|`Q2w}SbuRr)w`BSuMikJAMNewVeyYIH%?tUh4nI!3R>Zrbcmd1zlAIxIiM?_ zdd|1_dh2{L%j&7(WROz`Jb(&>UoMvBy58AiG7Z9-`;C4r7TiCMn*Qy4-O}}Q*e=;0 z{g*h`rL)$&DPAH)NmvcZ75YBdzZOsv*FyynG5(EJLorD*%N;%|6)*!CDf+3?jBQFvC% z0E}E}SEgFmtF}M(AIsn)p2POp3hs=>FfO;1Y92*71V925h;_kc>?)U@ol=PGzqqdC zkKpG&w?`y^qpunAgHM-@F>0t$t|w6F+5n1JPUNQE&TXL{J)E@n!v22A&4fM2Rzp8c zHJ_J+TC0HWI~$_e8ds3FX4yvr{0hIrV`^FiFq=P~*%>PpCiks*(R{ihq_cxtGA&Ebnbdf-$En9wbPOL6i&wqnjOdPV_b+G)z z5P?Odlp>aBWr{q-*jJ~&uMRI7HVG}DRAXSeI_lb%Cbz+tE?e*V_Z=Qw;Ef0qn;W+pqy4QvOLl6F!FXU0ow-~-wUW7-oG(Im_lL2cKp{7H~OWj@Ndm-M2oi&T#g*zN zyG1u|LI001K0o;Zr4mxO`Zc?Sx2?*nPS0|O?awVDj2kL4upTzb<0DkYKvz6W`M~D`nmxs6OYZ0sE!A1P2O~bL0v8d)-O0F-R7^FKJD)#9{Yy( zz7$u9mR{NvYHd1o#Pr@D{WE(~K|c51ENQ_$c6Xqma;*wU21)?wui#sw0C%k4OBALs zrB%)}>-YDfe5VwoO0oWtIU^d!qZFuNk$0sW=$1wBFKeL@#5$wR8za0r2^T+2kGS@8 z=-YxF0sMDWlDC`G+y3TZdQJedeO_@Fcj!?+1JN;H4(nW|AS}55;=P;y-#2Bvyv15m zgWpi?Ya!Rlt)NQmD1`0uP>Ah6_jy+aXS>j{zHB9?YTBOT zR@16j7UkRdJ1j4PEkI?U(`gAsv}Vgg>uQ;1RbE3rK2wLOU=3|ATjD_4skhVoEQ6OC z-aEOU{eiI~pXna%`?~`lHJLq}Fm+Zvx5B*()yz+JA)!$a!!}SxEVr)M_H1<~IwZ^P z)E5dqCjv>o;i0}#zoc4#MWE>E5W~Re*M<*uQS8DlByhhSG3MS*)1T{R_-aRKn9#jI zFzVWE`R><8ztm?z62hd%M>3>u$3JFWPi$vYwdGH93j3|+>o10_ z&vP``o?U{^Ta9Stsx!3+$+7CUL`Xk0R8aE6lbpsw{E7ek5Y>|i`QNEYQ_84x$-5N; zwwroSUFx@4&O(lWX?VdqdM2cC2wiYRd^CVJ%G4W?bAU+pO$4MNmxn5it1L93psFw& zz_6lk^d054T{~;nkowwFwj?Z+@3Y|kZ5UGMHQ{}0@g70OL+86NkmMT|=I8sz&(bap zVQQn}FEk2?;h--GIyhIgvBSoWZY4V2D}iPUzzt~}V5gBq_{6#3s%oQn)bGBe`2?gk zA@EV;>Xwk5+3w_3^=WPLeoL18&NYhqtK@rRm~*Zv^(Rv(D+$(^g`m-d}#`?8>p$p6TX>xSxrC>emL^u;2AE&nmDxP@j; zve=dMUP;?*-TkXLMu6taFuvB_rn3!1RM=bR`**mK13c`aPa6G26wZ_xs{5~uksCR3 zJm=-7ndYy*5@_(Qv3PPqPr7B~iW-=9BIc0yUW~?TE(*kYhCxB#b%hlb`Y%VP8;MbX zm=Iv-yg#HnjQed6HQ;2nZ#ygxsT}Ih_7!dT2m5d4_e`UemgVHPll~w>k^{eEp8E}h z^;lT4L8>oXB0uXEsi(HB3~PrqgL9*AeBPkT`gP&$+8R-&T-+QVv(YX4_G#ezAUKMN zWnER+v|VOWn21t1JQQ|!RIruZwY#3zIo%&T82c3?z~{&H4*~^%?~8s1%$L7k>31oa z^5^ns={E4>wPhf>!nbFE=pO2s6fUcC9pnSq);925CiS?DL!?TX=4}H5V&@P9Wy<%r z3JP_EK1yA9atg*P*ES>)TSxC2Z2CRD4HnQq%rbI3iK*a^q_2xmqhSSdVIRPYOS;16 zvC8BwA=5xizR|Rvf%ySvL5Fv>y1RArk{V9L7acG!&>{>H;23@KU{63%`e`^*zAn+o zd#fn=BeNbTMwE|Cc&Ne&$}8<5dQN}d3d`76zz=ChNJXC5jSN8dYG26kp1&ZQY--0Q zLk0A(_?C}1%0P_$%2dejPY3Q3> zmF^P-?DmIyFPQnd9*z1^`k-N&5VZHuqq^OF?fOccJN7xvhy_MafQ~l5ke%)#KOG9Z z@Z$SV0t?MOCa%^k4}hlG$|>G6`+bSkkVRhZ=&=N|tVXq(qhY zp(lp-?)1rtmBoIPKj9AKhxxQSnj@d#qG@({yN%K5(T^V30`sTje|c@;v5ct3jwpN# zNDz^`E4ZyHEx$Fm3D5C=FItpvI5>UC54lkt`ebeUIW?gJgFrVH9qPrGy5+@2;k}v# z--I|_jj08zF~)<#FqB%*xVsskJy!YffP79B*x9oJJOav7nKO#7xOM;+J$c&kk$n99 zWK!bFnCnmLM#UI`%e(0lbs;aOn%5YdQDNUcRe2fU|42b1nqM+zJ4m2$79C6(u&DG3 z8w?`71fqM|0ff3yL+UD)#2QJ)HEjGNJAPkUEC%hvdQZti1MXGwHRBZ*r1etDl&~Cc zv$#t<73DX*l=oo&mc9-EBn!=I_teh(3X#m%)D3=a9?CXip42L`z2N_pi&z8f%%ogZ&Cqfcp*45nJabvR1a3qdj=K&uLvL6M0jIJdKZ!NI)gafu&iYF zF01DF<4`I9OwsWZW@=_W56x;l8TI}K8B!9DiVDZIVf2Izf;c(8@b5W2sX=51@sp{J z6v}S~$ZRNt#S9$4Oje$%5ndI$u(v>VtMZ~vJMMh%?b?leZc$xDVH^8|oaXa*5wH!O zJWr;@3dJNUN~SNE5k>@>REY*H8BB5L=u!=juRSe`??}VIuALf~Dq=JNEyM$VhU4l| zf*6-ryG4ho&;LUwcE&I>S7pYKloRle37%s552gOA^mJpL3xVQ;YsF>>7{rLj%`AN% z9z;()w9w~N`}<=1tLN)`$ylTEpPgO0L_$ko+wztj%1+l}6P}=FbGO&y`m4h;)8QF^ z1zs#mZ>%5$i6OnxCT51;i`#B-hcSg(x6IFYYff#h$`Bh}zsLr|QGhjsE#VB{p@!&l zu@JpAp`-2A-XA0fgxIKW0U$46{kgzIP8 zwQOWb0@(09;D$cnyX&qX`B=xIa}~E?iJoQpa&C*_aoRdg_BWe zZa1oNIS5N92YR6YFzsgC{)$wK&}oC{uQ-FcXWZ<4;DB za0a2b2U~wH!pnh)W+1mx*;u*F^_xt|rw-c={W^{%F!$|V9!+-mq?(a@+H{7rlKtQj zYX%laAs-B2VH7QGwrXkECU;qw-<^oU1*YCp`qNT_cq+f+rOf`Dg=KAjwq>`dPio~3 zzPL(*XPJiKZoTZ1HE;@Aa;RPqy+w#8pmq#`~^{$zCEcfkqPjl_?$ zRd&Yy7Lrs5SJJ9~30=H9AE_gL%k;t}BP z<-kflZsFLZ2xroJCUQN#6FY8lOoQ`-^|;07$Xm{s(xHMvQz3W7@iOA{umq&yiY_rJ0?B!3JhURuV=IIB(A4Y^khiyU=3~s5B7#qBH zZDV=TK5EAOxi1C8hNwHSc)Ca*sig9)MF#4Yy$NXTp+*ke6M>Sz>emob~O@p`d8Dc)2=M8+!x~AQZFZAd9nbJ8q;+=vcuf!&@FZbuA&lJFGTD(;dszP- zepEmZwYf^?T<^2h(E5v0Xi<=)?|T%<5p>U>8%6KzWOLc&SALnbAQTg_v_RVGfgVJ_ zpo&sCUH+20TMm+yI+F3#oL+m11}CbjKQjbep@tEIe8J_t<55p8VvQxKQYwG^FEHqU ziBv^nvl&4NcA~{`6Tl-g&SlHsZQqWcbP8?DQWjm>Tcw^;ruT}Q4(?g~V~@rBX7jfj zM{kB|lR5r8h`YpV( zY)y=(0KUDRdb9-N7?phlw&$L&XqmUq^XWNCU!kCWcrs8?gy63B! zm0trjE8b(aHN-wd55o3zaI$1d)c3BK&9dYs%$jr|CY9!wxfgo&DZb>x!N``jyNyFx*1fXGZPLn2 zWZ^R3ELddNuiv78`!Jd_3>{Z&>#qRSctnUjzRmev*DXRd%KFW7A8;n7xj+ZgN;(G?G{9AY!76sX}lRMHo5!ckU@|@8YB+>-!L&p&5!QY z^<+J{6T^@~%cf}w_{79f*7t}9wu2WE&HE+W7($FFt7RGzrir1;WRN5XuUwD!K|2QK zmN1e9A^=EB(^S-QUzMK)7psL(L>qGHnM3*f1;X0-n3q8Uj@^6m5$K`8CVp=#hikCq zZw0(@j+8w#j3(sZI#EW3Y63Z5#cdlztblMkPhQtc{xsMK_(E)0oxLG0!NI}@OjZ!2zKEYqXU_Z?C3ANN->@cux%>aV(IEZ;+h!wu`0${xk{ zV}~tK+if|}Q~f6&L#=VC7lgfB^NI z`NDE=AkNdSVrB8pYuH&6a}k$QP^Qg0I~{yZZmpGVizT=%6U^oDq*d9MXf#(UZ5L0k z_yq(GV4$}5Us~?7!8!!nez>p}`uK)|W0(6Lacxytv5)(ev9cbDj1!Dmmeiy$Y?W9gWdT*wF^?@7bY$O}xMz z^u(_u`dV1F#PJzGUTyWDa#KT=yiBRSu7R1p zKow*!`ZOFq>Q=~j`ph+Z$16d;=+&ittGvdJtS>=`!)t`DzVBKq0M(dTA?TjcpddA< z+;25K*|7&G6+8@VC+VXwaP|8XT*rR6odMG9)ouip$J6I|$NPEI*8aj%{K(Nb4;Bo| z4JgoO-?EebvWPiFaRS!dnHTrtuiVw%LyqCr?qeK~9n`Gt-dDELg(DZ)mn%N&$D!g@ zRb!#c)|DqE*a*c{f9zQf%o|4E>7{+b*jM^E;RW9l>xKqP$Rz_f9y0kt&gs$qfHN7?)bm)og4Ab5T&IQJ3q zC@(wOv$hY8LbgtwdN<`ZWUkB1W%X3#drc!#{chA}KD0X!w?2`LJ)RzE>uw?gt9BEh zQx-&0x~%qzge04Vwdu34nUWsu-s(J|!>8Aad@s}zE49}-#DJxH5EZ3_r*ZF=&BY6I zBl(!?plkJWQnU6@=z93HQdsIp=B5w<3mVIgTdI^jNa)$yYsLxr(-FGIwBj#v*<&=C zI8iJ<=mzPD9VA2+{nV$Q9Yu5fuhk<@2N3dnpWTw~ko;i!{R+`;UIlL-#i#1IwOaT5 zq%p_2!anbE_5Y>IjRIC+&R+;?sMv6zvWiML1{M*QaVu!Dr|Qh2V;D3SsgeFgtm$rf`O1x(O02FtY5)I-jo$3)RGH_dISy zqjuU{iUHS!iD&Rg_PTMd)+Yq7Ig@}$9C+L@1Mp^s<2*V2nJ&XIAJqMRT4B%*Ry)yx zo*ooG^k$1I((8F-_zMy&O<{)YLZn-8gI=CF_}jP0baCHcgn)Yp^x#{e=Ir42ZgT_R zO#hZsWMCd_vQp$_(-bc#GV?OrSC(tgX{9T?T?JqkWQf8j3d(&QDI7Le**sUg7>b$E zj(PLqfoqdv{D<#asLmSlNOR}HG-J1S*2&5|31$oEV*RtH+4FD|V@ILyb0Q^22N>Y! za4U?Z0p8T*;W7izuhfT0qU(Ke*7oxbrtjA(nfNG;d*!dj;H6>H3i z-_1E@hORDBoi-Rz`y&710qU>)p$&lbZP%a*avz>};d~pFLZgOi!_i8VJ@0$2@Rc5LsLiq*r{bgF412^>ZC zlqfot$t2XYZ1IUOe^w99Wb&ZS@1C@I8ja|Mw#!->oFzuU^0ycR$&E4FG;Cz2E!->8 z1iD+aF!d>KY$A*5NggHyTUw@&X{U4q^Z8q7Hkp4nPVmny`=&UE-^IaB{>?`WLE!BU zr7}nLL$WRU%zgez{}WC59`6yR;kUkWU}zaY`OU(X&8G{C)B4i3F^{$|yW1qU%zhrB zEyG@Yccbtvs21Q=($R)i_;=*Uame)gHCH1NS$;T_ovpTO_FnRH=EYZ3iJ65L=0VZq#5~7|Kivqt$DX_M7BrHz`qjs@sUFY zel=t*vMAkb;ChV1@6X|Ghm~*~iT&BCnOs;_qU*WH^MNfvCB|P71_6ff&27?$Wq(?% z%Md=GAMBYFNeJt&K1XOwt^S<_$`tlx=g(M9qMO#(H~a%@oS_F=`NlXfN75M=(mw!f z05MI+Ig|cAl~()FfAC@_nvG)C_(F5VOIcw%c=*}|590%UBTG*~NgG4@`!=WPcZ|R= zd%9w#=h&e1-H{kN?oJK`vy==jjw*$Cy1Mh6mRZ)Uqd{j~C`1<9+EBs?*X{y?tHpg} z%fNLU0R2Nh`+gt}qLXwo0$?wvhdNW_oZ##?VcSl7=9<%n?O~s`$-;L&Xq}c%5G=`` z1imD8d<8{%P%;_PhxdcJTSI#9&AVfxt8)aiC{>Dp3CZs>CrwKDouf3nj!u)r70w3Y z=BK6-J_Ro&+HQ;*f+MRO!DpJq>hTzp{kQxBhEFwr06q-9hHW+mu`{7G0B>!N=pQdG zPs_lwWW<&d3Fwl~C?D8~-z^8VS>=?M{stA_QcoMV?_XC-w4I!1sT1Whlqo{*I?Yc5 z305!yjzM}j{z2Veorh4EOj)T=QBqN4Q*ep{mlYB>pVO<`Kz;YY2wmt(PDwTc#Fdsj z<8awjz}NWo784LzPee)NkC^t~RY%xx?cV)mvF|(n*GKSUC${pcXS3TYo15uI zmZmKj0cb?XNqzi9xu5HonqRI5GQG}FO6>w}qv3MgMPNPiIGND)AHU}t7Ke~D;tv06 zbSJmyrv2&gkorb$N(sW&cU}jvV;PE6inQ6AS z|2ERu@ap$9{8*!oDW5BcpMNRn(*qk~jH~ve1t0BjgT;fcf=N)4FCLN!VTV0F4UgA& z4ozdGKl+p7_Wu2HU*KUTYU?{Lo=%;}mmL@uv5#r1z5VcscEb~f2lvZ9wiWf%2Q@O)XQ<}>z=OHVgvhZOJ%w09UDeIkqmjku-9J(#wVH0y)nMBk zSy+X1PW%bX9FOg8wgkJvlNSfd?+lcbM;Ir@DPn#Zr>g7Pb?HVtz5SdBtnXF<;{|Bq z&MBx^jb(@q9D$gGgTIaoa%0+UGBJ05L|)qLmp}_q($Q(G5Y=(BZBay0n8(sC&s@^~ z@`MH;^fAtLpeQ2a{prm>gC=lF$IsjUmC-gou&Jkn1K5>~k5GU2_m1@^*CmKmV|Y;M zP>c@*zs$j))r@HpU?~AX?}5_Z$_b;!(EIHdzU7HKmC_%Uz&;!RWUcTCIvQirP`w(- z8mE1%3JkYvwynPUStxwUXjnlR9+LbtfD6SQIqj^&aEL_llUEKZnFAM}4tRP@UtF3? z<4wqv^smjViz)K(b3N6`rQY70EsbFf**ai-IEnuXPDnke+GEHqH0x-nC3Wufonq4B8H_0-|o()4Y~zckFdZPttHmqhxGG#rNgLbHp$s*C$DftN{T}V3=s)hSltI zy2H`&?UDKF#hjCRb|aYK$P_$dhi#w+Zrf`vA=?hN=XM$* z0ab^4=Dom=?1R_*2cdVS(@{N0ELWF04vvOw`GtKA#=^gH%!*r2(mR2O0ql89b6P1y zlceq7ps5Sf7rNCIkQFGaEi~egsO;H+-sf%Ot$;4mKQ#Os*b8Owq915nk0TC->PGQ5 z3MR6~4=S34ia(vs(eA}HGSHLCWYZ>)Fxdl49A%{KLY#tfs54`P56LtTygF+4J5~c{lK92d2o*C zYrlSs0pW#f!>5L8|FUDEcLPCvTd3a#J;7ddH$H(OYfoG8c9qhYxBxQOAlCiwAZ49$ zw>3!Fj%hvt@S#JN%;5$)I`s+fqrtmsZ2IczzY4@_vdkDEsPfiFcOLQ*-MIsHl8S-1 zlq~|IXXG$J;fWrUu9F$}IxUlnRMGKkFzs?M+c?3|M=qBr-ykOVDY=eeH&D@d=(Q{a ztKBA5dwg?B8z0XWCs6Os)R(SB^YA@U)S6b*vOiwGFgy<4;f}HDoCa^bjIWzSpaHjF z9I}CGI!bUi+{27ZMQOFukfR(Y#@%O|ssUYI;7w#&r zZ(f3EE_gjqXT3KlEZiZ^oL#K^%e$ytWCyOY8<#GNJ2VC<($!hAeIKY#F(Is!F4Rd{ z2U_UzuH1ClP?a^CE07{ydGZ%tbfA6XvsS#MIuMJcw1P#t(|<+ZumR^$jTz!HM-X^( z=H5cFd@shw4fc}154UWEvkHLxi30zJ8fEhdqAI2)thUUPZw;t>bN{-=vrSs?8rbVA z@ERofTBONZpTX&Ja}TqeCe4jer2J;0H9o-i>1ep(EvSCZIo40>p7o$g8wh7Uoi2%PJDRWlaaoTurO*&wW9==V+3 ziIi}-@T}_jNqnncCpDjthV#5nh$7){;ryg-P+Y~*kK**LMxZ++{R3ECN_NikvOGi>RZw|o$h71u1& z>)VMYzsiOy-X?!r^(L@mG<29z{;l2fzPECL*qJ>|Gt%XqFOskS#|NqMO>=a>)9#&u(nlj<(lzgiq8>)0YzRL(!Ri3t4J zxwE@wa#(vsG9MEK6J)_g*tb);o8E^auu5Ud{1XKhjIH-Lvw}LpSZv9m!x{oQoQt*B zcykpx%5B-)h{~Za4#GYh#%~dhu-a%?Kqg~k5A0> z_5D6E1I-&`dQK=UJ+858<^XOK$t6_ zcy~N;&poA*b7CX5xAcvxdP;RiM$RXQ*j4`Zb4@A;@>E+U&BYl%Py@cJ=RdAu`hQ19R$@HDNuBmP^%VPPKD8W`+1b0=DL zGFgsLjIYXS54MM0sOd1c=?5_l!9u}`cSyimir)4mgYy|V zP+nIniUj@959(sjd7A`g5EPL%8DXrogv&U8#p-RrY|@MH{HrIbWIm7b``2l#j_`le zpOU`Cvc-DrWUl+na#>}&5xB6Ti-u813xnk$7|Tr}0}l1|M>0ac1N#&4PeO&h2^6NZ zQfOfR%!d8#>IyNzv5F_;&jF<2=wF~256?cmU_IzRCXy~x`U{G6{;`7{c!Fs+9S92W z7U09e!bTT?=w-P$^&5WR^_nqCgl7hjhJe5+3jJIM5%DqXv+u$_Kk|agX3HjsKg~h| z1>G_BR#F^O93$B2tE)PPvX)y051mUoZCU!59nA&ALR&ps@-Pg8xR5cevi2q+rd!zo zxM@Dk&LLBR89p%NI!%U!TG^Sxi2>_B`dB30S7pW3A3-#U*B;X|+ymUp=fUF=(w@tI zMmD4ysAK7TJ8|sHL=lw@wz*(Fx%Hs35xO`id-UV59>)!;r+oXx!0+Dwm5I_f8gh(+ z@^@^|p+0wNVPX*wcCRCRvp3r%elpz^1P!8RGyZUK$%H@z5+Lny07iOVEF9&Ao8Q<4)DnupP{Pk!&1MvtiRQ8hI|r!-3Wo5yPd}sH>Ww;H~Qhf0b7C%Hf?` zx+$CJFzXdww_TVZVkEH2GnV$wWUTT&g>hrG<*MLe2VJjv!?CxlsBo)#H1+-AMPCF| z5?fkbR&cihTyE!lg{|=D4X*2i{dnh-~=@$nT;`{i~gV36jM8 zn2f@%>O3FZN9U|&R}-Avt(iTW@ECwJ=T+)NIu1(V+YXt|YOTPi35Z9mfdH}UIYwxJ zDPGLSYDuR%y>&(N??LT-3;Y4Hk`b0kr6r=d>P7{Pq{?Rkj zFk=HE;9%QWsfe`VA6)aj7#15MwcfR!*Gtk6-%qM*`9Ulihx~i&60{?j)q}@Bp2?jr zo11-L52|7B!i0HJY2^P5+dmX&NOns=_-po{Nj>g)|AfIsu*!rZRPMTZ?DkI<`0VT1 zLzkt}Z^C;YE*DRuAq341%|JM7CgJOknt0qI?dhd4 zA5|vgw)Mz^J;O7`RFVl|33M zJW9Z)6W;NAbSQ0B@#iICF1R;knz-xYjlpJ+_*3pX0b79M_jWjtgddU(=1N5ZdT9%M&>_eE{}I!^*cAtZ@Vgu2s0@~k>76=ADDUOK^9rx zgIy2?ks0pw^K{Z2Pj350R^DLK<5B0x(-2|?4)BvaBSb(*?-zVZGSnm11VYJI?qOGM zc9Td)w?-t+R0eW|ant<2S2|E{o!m91-u~s)WkJ>E)_#nRwV2wqZfZ4BCjGfU77xB2 z&$s`f4I$pV29`AreTEh#4Vu!LUn~<}Zc~z+iGlEfbL=bZ2wqTIavyWP9O3 z_#E>7i2ZSeVTZAg6GYNIjQieP3f4OSBYKMA9#{&a`LBH|_wB($nV3QO4KS7Iy^M4K zo(#^!+H^Ul9|HUh!65oBj8}vBC(3|%1rji{6c93PS@Mm)J{=4|D+pbcEw@|Gf)Ovo zb$r?|0%G;-DMheJO*+?&mFIitu%mX<g&804M~aLg<^c`G6YmeLUNA$ zv|nhr!qzoj_v%t1AK+@hicHvWv0cHWF|nGQQvS2tDQptaCSn`J8c0!&FfW}fN z4LE_nx5cH~xOq5O<|b5HWP&o32V0qdU@+dzb`ujkNmsX9%tO9OA36ejp{ z(xRAq@O+8@)1S~iqkVSh3wOyKgs&iL-=Qw-(cA$|M)Xa%vCbQ#nTNm4C#%3sw(j2< z5F?I0Ugy`pfN<u}-b|f@5 zKy)QLjaV_5&}J*cu1o?7i3PCQ0t<$ z%*WF>JGzg)L*N%SyGpQq$*17<_<9aMhUE5f2&)27yW_W^dyhQRZf_}$E2O2@Ne^tk zk4ebk#Wedwga8+a2me3g)~)-PB8}P6>Rt=SmBsrhrh!gIH0t`c$iue?`^6Sq0=gj`FeydGH7zCfoz^eA%dBDFnB>+f}rJoD!^=om2cX-ZCMGF z4(Tiu;HZ^4nwy6%?(2U!yTinmUkb;z;{&OkeIQ4fy z<`^K~!tsComgtA(BGEj==_9P!UtLO=y`4BPq5u5Zt;x!{F5urA8l)3BXcYg$NFFRd z4TnTFZOV_>_JiI9?p1a@FJny6P#~RP{@-8B*Pb<{9j6;oddn$MN9FVL#X3d)P(T^T z1C7{!f3i0yOVzf{+Ph#*<9T=HuDt2AZ4xq98zqi1Kmo$!|Dl`#_$t6eQN{L=aJbJb zB-@c^zG70SF!*;!C&>TjG-+UB+tfuE&|s*-?kq~M3WYe>km>jxJEsT=W-ZUwibV`y zpuYiemH(k8C$4B^uN9TaZ_rH8{909!%5o_?^jp~f9jg_p3;pk+kir+=H`6(ZI^MF} z*>;6*baz)M$YA!Axk|uL%B%OwZK#|#T^pk#=y$})r%l+OP{rPM5;Xi_2k=Y&Zh;8a zKT@$CWCCSHn}oemYHjLAz-D*GHM@N-Y|6`ja%-zuZanQ4)7id2&ULH5FMf%p5eMMJ z40KMU>u|}96~K(l=!_L~NN{4n+^xA82OW?pl`^sp_+H(A4Rq{~g+{de@;6(p*vMDM zx@#8MCc-me+Eha5CE)Y;+(!I&DO@&3GL>Whc_+3UpH>Rp=1~A@AFFYnq+Rr4WM?TFv|XjOehJv=EN##G#C)kqfbWK~dD&XpeSu0N{wEmo$r&Ra=g zQK~p0)AFJ`(0v2w7Z-aYqHkhpehQ{l@VR339$tRA_vG1z9ulX`#laI1bEooau=bW* zH)ZAZ-^-%`>)&0U{OhY%J+Nnklb>O#XneAmd~f!8xkpe8>`*e-iH$wSILEppV_=oH z1%z8=q|49Ur|nF^?I6XAZNEsmvU{NC;*mxP%yWo!C; za_s(jblBi=B>{jSAz`GbN3kcwstESxvaB7a-NDTYV&Sy z{>pFueKnan2_eEMll~@30aTGi*zLm?%bG!gqgbbT@h#dcV7j_7$G{ErF0b!y3?n5KFqvU$p++~Zwq}@ zBgu+9hWLn=$(8HlBjY?K4k=i+aTWy`*A{Qu;dTCR`JUJ_tb8}`Zk6ap4AHA_95Nfa zb->fa*Z1cP|Ie_LT`&uv|3!A)@*G7qdEPq{&4m>&AbuIV(2c-GunrO9#dAcb;SdcE z^X+u^CF46YYYF;d!@gNmYwtnReFZjBUhBx9W>PJuyTI1z$-0O=6zJA-}ew6JC}EzTGxzqSqyG1`AhiB`X!9kb#um5NPO?vnD& z_8T?G4%^71!HJkO-ze@XwApxBv1#Irp(d^B;vcrd;IXz@eCKBsoDv|vS=q->8Kme{ z7`jN)5ZaT*5-Nky7+Nuo#J?6zaNkAfTpAbPB4r{+2V?!ry+v2uo8u^iFMY zZ8o1o{&pThh(z;#JPr5q6t@1z=(|GwUbk`5k;MKl-wkW+%QPZ1nt9qIP@uubq2ytm zeiP5S;f(T!deUR)--P9yR8XRqqUO_UtYo=^!0G!owEugNgP=w>R&a(|tU)#o+sO#^s)f6rVME2DHWo@(Kzy7^tl>~LO^f3eYCO@!E z`%~D=z&I+Ul?WUk#=uCbBC1MWrg@k#<_l|kalzMH^U|?Qo}g|%Fvl12lSm-D@9BFJN+JS9oIc&L>X(% zyrXT*6-|ElC$hnug+UzIbjT+U_oH@!SXp|zouE{{K-X!))>cv`3P<9`Tm++4Z(3?G zQ+^hl*r>ZwE})E^5|8c6>S+H3=XKYtv`I@ga(Ej3VRZRLf+gmk?T3v3?$2AtJIiG{ zcV|Q)s5C96`z*xv-X3Y&hwrS6#>|3~O3iJ2)NDn$+R=Wu<~}JGZ~(Qe@h8q>yuJC= zxCKUwz54lnnj50X33$#$*n6iJtBFQp^j%x$f^QtE(&kgN>gD^RU<_Xa(71LVbO}lA zy}?61iB99(L$;=gYQ9^Pq%l@FkDMcdk@m1%fZVo+2)@rz%JU;A00zgrl9Nk$r0}+X z1l>`+A*kU&8)&wi|Jo?Yu2h~h3sBh5yy$|X^T0_@6p>{t$!+{3s@(z4jROx#jZ;@e zgDzyYNOft$Po;?=KL3{~G&(yP=nnDfG+^edLBPXAdl*tx5=BO?{IeWMEZa44yI!() zBwxx^%W-O#J+biDbp4XOy7ir8UXDy72ky!)d1ps~eWPJ~QzPkOG`UXCpa(I|qACZx z$-c1H`1_Zts1lAYT_wJZ9%dW*DQ@tR&2KWH40Z)-D;kHiY3}}bxlwCVb24B*=Ja9e zQkumUZboWBu>sq7N%nznz@+q+Aa1gC@DlERXLjb>L&q5Ug?axSw%S>Er~a}HJYbHEKL`D5dc?1* z+|wM57ITO+qF6=Jsv})IMF^^OV>3U7Q%N=Ga!G;H0g7+htF(&4G*X*&{dGmp*O)S$ z@0-x}rB`q;L4fd&H2Vjie-8ErzH*}9UlkF39drRVNIgl$okvT~?O~)Z4`Q`uN;d9* z3l0~1aX5N&GNy!%@k+JXuN+5UEPEo6mL(izMV5VjxC!%Wh8reSI&Yt!7m(87(W$(zzEQS-eVrK9#>G_j zId8-$6HTvd{Za0#uq}Nz|A9j0zTpYsmghj|aovU}T+_I9h}^lAz7ej2aiLC9-#NDB z-;>kwMDi9*0PwJ7*{Cq&@<7an=3xot;LAwdvJ+Coam(B@`n%PXoX zN{XB|%e+~4{AB5tqQ6m&<1prEnpqUjN>97oc(bx#BLtAHuHL(7*lrtpTX!+RWTG(s zDNj=FKcHQgEe7&8dwG=@BLD%#ee>u@n?YYtb!37= zx$e3C$B#+5JZH>i35$}&C)CwcYw}7r7Z!*31?D#|y2}bOtR6SsSr&c2BhNAAu#K;l z#&jx`CF^sssncos48T9k*k$*|kj7W_v8(gwGquKNJtRWI>#|j>_ep&XO=2jS67vhp zNvT=v?1!juW=(|sZP(o@-7%pYT@UWa+0S;wW@^O(J z;qR&xwa?s}Q;-QM>T4i*`=0W}X2fAgk-@%7ovOQf`HgjE+%cWzd9F5_@AX>;XZ+vB zT!(bq#7=}U#O~RF@55_T)xi+!^MPf`ek>#66)GM~I3`(TRzC)jDrVa03^{!W4Sq2S znfVK~r<$)fk-v9au2^~N!Z~q)o$6dL0 z?V|qhpMteF7`i*!ig#6NHChR?_$GuFX&M@O*nZnKX#7*Kpj;Ezy^XBph!0&pw~|_eNuWUQLw&D)lI;?kA$ZSj4L&s2gnOw4v4DqKF>l}IH1k5r{;Q`9%G{T9#h z*%-6+c0ukiU|nn5q93nLGd2FRknb9Urcs#r?ItGc!mh;k!4SMN`|w{xRTu?^vl8PP zt1Ig+pM49S?zdvGv*WlDi9|xFL_*inh9GE+A?h%cn4A)L{USkv41(8&hLOg$t}V?? zd07W~Dk^k^LMjaRV3>%-@?E{g?~7$)*%?0ewk#+2mOJHgFiBg_)nVFLs0T9-RAp!W zYnsF4sneBCDTd|k+vlH?nSP|uggMGt0K;>g?L7!4s#A>Unxj%LUo3f%ms8~74cd3P zo$*hqDO9R4iWRtfhuckcZG9EFYT2plcS)pC4n0#}kDy#*cr>+4Cd*0PUOLl7@wXch z`)!O^wtVGUFAw>x6NyuqM!uD8#b=7x%lt=91(Aq^VG4)}dsbI#FOky7krS#b#NG53 zZ@KS0YZ9z0;6p6S4v|QoX$lr4E-H-I@!WO(iZ!9(9|Jyr`b40&l^U6Rrs#OW_Ox1x zx=1RGw6TjM5QU|n9tvQ`}_MBq@^TT+qg4~iVYYFS?|C= zdQDZGwdJ>&g%AYGFihchojwWN`nbWIr*&4wbkGor#5YP#H$A-W;v2X=Jo59o^9%A1 zW?U<$ba9DbuIXCvq)Gl6nOj}lI@;T!7O$ic`2GCfL7<1@l=%FctJZ{!5B#|L;is1J zGW4{mV@KrDMP4&vb{Bl}bx&+kN>t2O1aQ4?4fUMpbu02y0TW_eR z9q?twwoOYY>S`x1Rm^a98#mb4gc-jpXGL7}!EJ$8@)9Ca^IJN)lf%C#{i!N6fPM5# zDGU$BmR-7d@yPD7yx4xeXleAm?VFakI9O+VfB8|5X6iSo;|2qBaCG{2Zc#{h(Drqn z2X};4RM!LN0uP6utLyLIyW{HNsgNDY+F!CKgsQIAhYRy|gnpt;3r@(ka#_49dFu$t zN2y$<6U=gtm&8PbvfF+OTr@auMg}@OUcXXe(w@)UJVwqu z2nGjH)k&w(>AUx5MJ)GX`^;2$Bob7DAfQ5lg_lSWaMA!z(N$U7Xld`}IP0^Ksc*po zM5^`ru0J%eae_B)B%4|=!j39DL=sW!MkW|^aL5LGyU8Mkxv~qGo))c+?R)CStE!Ov z0m&d3>*=h0+3sRBaaf&HDkZb5G(CKk9#AFBa1n;0pe>_lXnOg*tG6&?N>65uFxE#k zRc}U&VdqPVU1By5tNYY;YJ?A1UEUD?Oy_yvcXLRHK=6K7C(mMCs48kZPk8^@WrA|5 zi?Y(UgoYYx4f7ttnrH!vhN?tiQ6p{L4=pqQu$0^W7A$`C^2_bXNA~U=@7Kz>tgPnA z(Kjdi?QtqQ^xt3-l$nbeyq(y)+=m-PzefS4Z(~_7TP#Kq~8-E|r`u{-J=^ z#2L~%Oy$BQNagtx-~u13w2709^z}aOGqtn15$kGKr5UMY;)q!AtXeQG=9q1)Z<+r` zVA#Z*q)A7)?PN1cw7nT-$_uBA*DHP5pl<5~+LHQ5ke(6HNa`QMh9;2V;MWn>%Y}3q z($)qLh}1ri=Q3dd4`_hDYF2h&i%6QElGG@QoG4gtsYIC{raF14S=jtuah1L(NO0~u zEp`aPsX?CCK>9{>zhEE|mL7+h=4veKo&yPxAydFjlA#|s=o2P$uY{E`0eK7jLr<3s7IqiVRHyLoslo>>r4CWu>b%Pki z-B6wMCC_UJ+%|M3rjmp%EvSG6X(C7!Y@i}2NKp_$#ddb(JQej&IZ?3yqM+EYpxzx=uwuhT zQ9)3Of(U{jMS_45Qc3cg5C|cH#+dVdf7~;l4{zVhy!r0z+nG1B!U!n@Ngxr8E$ke| zSlT-bHW;Le$H5RvnugK{v%Q^4V-y$VKgoEM|2UIbocqlt@Yjo#Os#wZgIwI)Ep_@S zV9;{n>`hDtA^f}>X!Ok2WtT4`-%UQtuBqs&ZlBO7B{h$Ae{5SYryr5<&tUc^1xhi<`mVz?}d#%=76k6F!k+BCfR)5%`$f*AxVxhPi4h%hbGQ@o}pUDtfdO*()*#d&;-vIlD%(l0< z;5#q-RGjd#8=7P_W`&oBT>9YgcpvKPI2;avprEF%{^JfI6e@Vlx>=Y1=Cw2;#Gzf? zy;KRfA8}n*^ZwlFgu6Fy)Vwaygkc;6w{qAYA!wL|<&(TFS zU+e)r$#tsC9+^yL)Xr^34n+G~=ouPosL19HL_*+n5B0jbjEQb$Dv}c==xj2jzl*kRN@?lZMf1|`+}gAM z5C(&hp(AtKQJp@8fA|Q57Fj_CM<9IX%$R1^Mn5poO=O(;;7&u=n?6CC5@Ke7L?NdQ z8RD#>>6DTZuBiCOt|%G$(jgOjKm)Nn@*@CAW}U~{=( zTu~?#7K_cHHaOk90*neU`uzBbXbkM9Juv3ZO*We?TV($zbZJSknX)RXBdN-7`dF<% zh(DSDbSwr#q38m|e^%f~D{CH?OQli+{AX}@JTwd&63HAoqo%q_&tTBM0L@~t!~+9| z$C;RzidO(*2`nIrYHMpnMvysTArzP;W$yR;pd-RUQ?I31+l~s0h$JW|Xj3Rvv{qpe z8ijgOTIy(TEpUp4FQ!~4kx1!}9&Y}91Be-JJ6C`U{_*(DY*uS~yS5GmSV~^K4BND} z;X{4!x=mmKl0S6P+0&`XCt^c`b{t7rJlFqp@?|R<`_eXAbsJ4rff!&g*iu!U#}~x3 zZ^T+lCb zP0Y*(>Kn)z`s$_g^L@sRwKjTMP96j6fqb} zweIwT$6!a6znZ-x0_cqm4Q(`PEL*qqf8_KjP& zPZ?wDR{P#bn<6q|P^g){-VhA8G&kE~yYm@-8!NmxA7P+BGhnWS9|wz}4>Qx{3|;=F zl+pHigyBF5yTRZgk%tq!0(=kIIr!@j78>7851@0~g}NfTb6#W67{O1oF0?h>y_$!? zVkP|8nGcRU6E7u)qlM$3o#pEr>;T9 zV91E>Ihe`irj(b57vyQ$*j(FtRk!~DM90F!?Yc1_7DjrXnm)d(csoE(UvALZk24)d z8j3D!-d9nSu$o%hG4TmwohMFmb9Z)eJ02hFwR^iFlLhjPp^8cv2m+~TK~vMMnrbaW z!)<>ik8zqHY@T1%jYO%T@&~TAK4DtKdamY0Z1E<|z<~76bGa+1L&BOlCX(Lz|}T1PhY)HU75Thzy*}D*qlGFXL-z7DNpF|J^Lm)T9JwPEz5jHSqv?_ zvU}>1J)X-WFCO@HP=8G@ax;Qs+{TYex%EJ})JaIj!~20gQ`gLK30>j|5~<1>>iD_a zTpZ0~e-A>TkYLEYRz$%{6cAnVgw~r9s>icrcAz*uqkL`yi?Hjl-M=u zD&$+oHf-LX1$Um9zQocao19PU5%vZRf$*9*&UMr*f58$@=blT@#fXb z9zMR}4G+i01iIM@i4lTzil4Y^*%+%~K)?1NZ+ZBsCBKC(Sh7NTlJ85Ha5&t7BPX|o zh76y!J~<}X#bNktkI|x1Fl@$yDOK+(C0bQiRXRB6iY{%;Iy2I+xbwS?-#B{aZx=WB z@4}EJH4WVsVQy(PZ}rl%5evuJ824}oLHv%KNnC&h`r!J2pJ+EudWe4wZHEJ9DP*EJlP{QJ_izlQss>*rdo%kl9HI{eedB0o`6x@v5Oo`twpG28%Q5W`djic8eNIPS-Kq26Q4 zJFqomvdx`As!DR{MvihZuPFUQoanL#bW72*B^x(g+#gNC%6RtkPe^_pb={JAyw(A+b>I(EnoV%Fh|@d2@R%^qLVQmr9~%Bo*hZ)Gdcb_ zaylz_L!dXO?wy3a_htM;R+_hy{lYB~OQ%g$`LS;rvPs#;mYuN&ZyY-ydilhq&)kDi z{dWI?8E1};Tm0Jw-_iD3Bw3E!zgIwNRZ!n}=JJ)l4n(pliuHQtk@9!}% zHnz03v9>WX8$qGyC}Ob?N^YN@*<4-|omp94TKFO_>&cU<>~vo9H+G6rWqF+PmoLCC z>4ZEW_DaHiJW=0;{-x`LA@Ftw#!B98aucg<<+x5b=_ z611KnMqiLaa+|2k=NVnCsLZ?!V8oAbK&f=^KH6)mkaz;5tOnW&HVpcPLMOsfy!|8; zz9aqTBiim=LMf@?Egc0{3_3mQ7Epv3LSf{l^I94ucwksVhv?)5Gyn}0eh0LIv!^hB z2bFlATR?wg&v}rV7U+i0X0Tr7h_wgb&r9i?Cx8pI|fQ2+AfM7rAlkkCnJ1;B5 zTa4y5HFWcE*gO^!@N~sA3Wdaekz-)-2$tXzH+a5+E5TMz@Q^SD#>^KP!YYJO6NygV zw7VCD5Rw9Y6TUZR>5hoa}j-%zbCA{WF5PzcE1J4Hp?pK(=s31DRL&8pU_5?p3z3ua5!72;h zD9+nr@C-$s`AB5L#z58O;js1qNTpw=k;4-5z}$}w^z3`wMnN(Kl+Mnw?~9I!c=T3w zSrLyxV--IKITxSH;Zo~`twa!<+6qx~5Oae2EqUJFSjVZUMDqE-&guG}f%NoLBnHfuI==h(VoqgYa-|v0u$6+2~1ojD`bAi)FA?{RaM@uC?j=s=}9C9KYy?R6e`uCr>!+9AtfVw z-3k+z9Txt+nyOT){i#V2QrT7)*KVD`%FwI6!O!{aY*;ooU{a99kQp;)Wt;2ZM6-Qg zru#WtGIT~ahWqZu1}G+~md7jc_21*^osyd3efbI%u@LA?qv86Whr!b6bTFS!`ph@| zpZm{Y+@9FDHlb*%NH`IKm)bd3l$FNB#ajq_y>iRk7p-E0UXR$?+Cw;*7VQlPNQjt+ zAjsmxl`YN94cU8Ex_MmbXjiF}!Y7Z%`F{ZoDx(E1ilPU%Btn>Bdu~Z9g~CK^m$bB= z$VeYkT#}o$Yb}PK=Kc9K;j;;WL0rzJaZYHnXwLko*x|W%@6^o=_GuEep&B%3P4cqU#L}u8R>MXlr?sItGv5rjC&Sq%H`irB*x5GpZn*CxV8N2$!u@HEjm*ex$w(6 z2-=>1ltmycu_E`le01RPLwOJ@^Sf=O#YL@RF&+=Y>h{493tU;7knS|Iqf_y1Bx(1y z)r(WVkKmOH9yH#2-U1FlR6rn+MBKG`{qpJVH%VH(-r!2b$z)PTN2g)9pLqFI*9sD% zLVrA7`a@dWj>DYkaT_KFhk*S7vkFD`)|7M zBZ%Z)+E??=l-=N_#cbNY&%@Kp#gz_b_wL-tUBi~Vl7llaciMQ)$+~U(@?jVro(mM8 zu&SoI>P&gT=C32b<77YPGvQM+m!#`Qq&xNM&{NQb571EG^$+4gWGbitYy)~NM6?1u&S-?JY>Yi!Fk)v^bixz_hbLkN9R$I^ z6GtFmsvh8A^3f<^Ya2|j$MiZg!5j;m3AETXdZ~mQJO{1+i^TL%)s$P04TNb9%8FlU z@u{zNthAmOip-7$b}Qcrx>gY$v6mm)?XZ@kYisF!e4i2?4dDr@Y958X03wpq{6EO7 zaP{qKQyuVBnmKvQXv9zzk?CWQwUfO3fyHiFnx+BVT1b7f5^zCMW>0`Hbavof7+{GY zWg=rVrcs&9qdYMnjf$YGIuDktY2+KbJ7K|X(085OtCu{7$yDvbdVm09`N_RTr9x4h zZ&b*E9T>Y#9RO>>)JpAxTF9D=p=#W%O7Jq%D?wq^%6|c`;8f}^RM!Cj0000Hm z1zbQVC@7-T1yFXxu$Lt)+4Ck`4I!WgMBjVg_s*9u-^`hF&iwbxnK@_f#UP|0w7RaL zmF;Xh+Ej~KnhJ7qGBQXcQX0kg6JH?cVzTO+njaV5&CAVceRPl4+4g=F%zMU=Se&kn zgV!p*g?4rml!@a4aRi#EhnQ`_-4ghi-f|^1CHc36?q?6*CHqde>a!iUhlIOZ&BS8R zp9G}@4iw5pt!IQ4F$PR3~~fg!sB*%EuBBd zc9oA;b3vBG=rFig$Z=~#?6yF82>Y1;jzlxH)vjJnUKX&f`dXqmUlJ~D{f<-HH$$H# z0NziAO2o^@W8JzsUgf5Xm_y(yS<;Sd-}c{t6($`;!r@~lJ*X7^+Y@6DE;t9ag+{2# zK|$?EFq&#^=q1jrZG{GfWdUKSXVm!S>HrA zr`m?@`;jtz=GZJxBrBTP&3hmY7e!E{T3U?F-0Ox{8`rGll|GN0YBry04^B|=(JnUo za%IIDM|=C_E5Z)^jKkr^FomsyE!F&HX){_I;9#~@vU04G;C?Y->k zWNOLr`L}at3Qims@sV;+jH%_ci|75m-(X@&8P!DSw*mIP z66b?-D)vZ}>2&a%3=TWJp`I@gGI@NyNT9K=??QDYXvkqOi*)ofi3DFQgZSge4#&ie zZN{;~ZEb0(tFE%Mo&(x<8tH2v71>a!puNDwO_8Jswv?rnb)l8z?*ajn$;{2Z(c`@u zBp{ly+UA1%F;6;nxNR-X1Q{%-eL-7*5a{aZCY&9T-zgL`z~S+DbUNK)hN+N+LaITs zZLO`J18#3mPx7Tiu)W-tdXmX1L=vf&%VF_&5E_j{AX{5nqazOkF*F9V+HVa6LG^WY zSJP7X0zQMmcw<5!=;W}8ii&Wr^x4xpw=(q%3>UgCma>>01>EmfdG$2DAd?8Ej~~q| zey*vdt)!w_)Yd{()38uc{a#Z?kS?r6_Wk|H#l;P5wam=)q$5#YMiarVJ}|=)LZJ~{ z_PvhQX=XEkSjCHSXPUK-t4+euM@@}%u>ZyrF1?}Q&aI4woMVavyxjDabv4yS6TfhC z_c)oE0pP03;zKAiV97&IOGH`|6o{deH^~g7Xl5Vl%&V%1eG#Brke^GPJ|TMN%6T@X zn}0nr&TwQXi4KpZU(NGc9KwJ$%SC@tnCV-cnUfU!EX?MD=pH72RFAP4s3W z(f?mTQ7iqhSS*{x`uV_~Tbb7x-Q8w}%CI$><&>?_e@cTyD!6$$*=EN2M1rt#fAXRp zgF(fIc(6HK_rMMHwKdyzhLKfNK(!SdzCY_`Mq&P6`PEfS7E?i4<%>DC!E+sFT3EpW z0P=;8hg)w`Wy+81Zr^(v9+S-D@zH3M?M&mUieH)=8`U&4#sO|~Q=_)}n|h7j+M!BP zpcv~xSed)$!xwKj4341#zZ}6r5OAK8vn%+GXatD)E_2sa;HAayl*i))0z}|}bNwtf zXe-F$!GQw=#s{t~%^~W*?mBv#o+f#&wTXr41pAeHFGp^gpsRlG!k!h|W8CJ`&R$AY zQ5_*JVJd!5xa!*_0q!=z-?;%#7nHp8*c^R0$XkA(47{5C5Q8I3nqu-U_0hov1(eU) zK$_2<>@y+yS}KV@tzQ=rPxaajcdtZl@(+z$Xm68tBM0P;;p+Lhcf8#fMQ!(5wb%}H zGxPsmx+(H_n4g!k4czq(iamWk1+35bzy%Z>wog?}-OeZC!q4lhDPJ55@jV!K&DJ|S zIr;~46Qj62{vpvxo~}-}?iNANkh;0@Wx1c%lHU)mb+H%bk%W|-;K)l!zXm$Z7S@m_ zld>Y>G7{4=W>M!z17j3P7$ly_Q%%2Fxh%xrY0WndJJz^bQ6_M?JTQbpq4oxPWc(GJ z`NvgPcMox`6Gx-G7h1ts0TJY7^Ap32bktaEPT>BtMOEF`a|*Szb)>{Fx{3_=AoWJB zo1ysEFIQU}qve`N{&nJhNgqrDjAw41qj{3u=( zjJkj{Fq)8_Q{e6HB7;c-`(}tOG#aE<33!T*%2bmi~!pZxFF}yyL%0lq`Ff7 zm3nYeVriyB z3}71qmt9j{TvKnTG*wD{866{xilzh;WHq(v)(GTaq@rZyu!fU{s}l_kI7|kjyhY0C z3bSqwfeYy7jT=j6NCg+d;o75jB1XEdTtK1tY?jPGA&bRA?8;}&p}xb#T7WK}zi`pW z=~{v~Jbu=2xVKX-ybAbEN0IPB{i4!p7L)m|Q8XG2XX9_YR?y}-zQ+zhK|vb0*PoQN z6y-_6?Ja#2apKg8e{K5UEssQ!>h%=Bt*#*%Fr%ez7JGlhZa$+E?hZK$u0`#4{%W3! z*@sJw&qfC?rqpI8i@HPL@;lpt0t0j|UNO^D{p`R-pv3zn3A=s}=SUv3?GN)jzjlsE zNOYJic{BT*#ODi+T)%l}-AZ12lQ@5bywLHqXvLzrTcb|}E|@!p_k15uT};-N)93#P zSr2ad52fX?R$hjP$U4*^*QOs zzz<|H17nrR6itGhJR~zNKzV!tgT=0EYGzbC<2KfRSYcEZ8K%iQ4eaW& zj#K-U{C9$}&bYlK|DB@g|B2fN{*~Txx>Mu(i|)XZEy3P^BRiccH+P9ho>lf33E_a* zo~#tmm3LSS8ogPmpiOY|#aqx|F?Lm1S5gdV%`OxqJj?q_?sX@{5*98Omh<3#ibQg| zI@%9yB>4vq+;xNm>XjXZkofV%KrgrDt%5D05*+?Uf} z0U=iKY$_U%8THLXlgvQyFwzo4cQxUZYWsf^8RZXn7j`^C___cI9vU*HpcP1>@WN9U z3`ZlPo@}AFKrl$~72H;VWXY~7f9tst87+Na7WLLFa6e>VjHAp#E2+GJH{e~YF$KeG zZ|QrG&1)0ZX`nFxv=eTKsDGdf9*#$K0_epBhU*FufGBEfDslQTGvhr$s zNQm_E2q_tpVa((H&z;Md8Dr8IcKd(&e&%zXbMCpn^E=;r&hPxr@7@a!NeZmG4na%T z#BrLbsrgV7Qym343Xwp>;UpILrC`G_wT~*!Y733t4AZ3iRhCF9CGeQfh>aOHHOgn$NIX{!r+}L{oU%&!hW6)9z^~cE ze)&)gqc~qo&CjqvwzA(4eaPR=LY5$j1^LGT?%V-i?wOo}i+UtNT;F6Z?c+`) z%`hF>59$pl+${`MjkMV{SMw3b9zM`r5ajKG8s0mMo{OtwSIVgiB_qs^q-b|9np@5C$9i zxlE_X5c*Y#g4}yIu3gRf>u%wr2P`JDOBDja$k=p@gX27}MWgM<_Nxx=V{Mal4OrDL zI-2G`CpXl@bA)mKwViqE=Dyt#p#NA5#!*viqnU+~f}%1}29L#lWVAhRrao@`aN+oo z;|cL5X2aKP-0b1CxSuo`tEWvFX3`{*1uI*-e%dB9H&X+aF9t(EhfF>&X1tG~u^e9X zh-+an&pa>R^RzI)*C+YhnV5v*YU&zN*GG;>u&}Yq&bo$X1z512>?HN}0P5@Nyxm>O ziwZYejr_^NT0!jO2kiKonJ+gmO?X@?#;R+A*#XiRB5sA1)i@P(|3|sr zb7ma<ecA9-ZbA^v*+TA=8Gjl2GrYuY1r3F~PVK7o`1|V|BR+!OtYo@yp z1rRr0295_0AGNU=O{3Au%1T%L=+ESE`0IcXfs>OtWNBx9_p0Bb`58G6WMoK?lzfSEO zy2Tsw3^tor8H>f@xWVhtNB4hu@(?Y=VX%o4r%uq)frvO0ilUW*QeI9r5ZfRAWq+~o zwx$}m#*+u@^Gb@FKE9>X$BY?gYSuA2Q*`(WZT=@KYjXi zB_;XQC)xy%#~~BgNloX;%aX#!4{hznNL}0hVxhjS794fR!l6o6H}_@B{kqqek&)RJ zx&uu&H#b*TRRI<{&S4RoJxq=Qj&G~0ps$Dpse^z)Mg)`D-XFsI$^x6szLS3AUe+BZ zlR09P?F?6UvK(^%HMO+Cv4-BltBEecmoHr?EiFMyh(zN04VzR|Rbd$ZM5FE5{Yx8z z0dZ|gOH0><5C>UPi)mDFG&1S3wdrZ8cWkl0^SWiESthK5BsT7FXL`Bd3 z5V$UG-=6qq#V8As0S427!HRwL45a6K`=Eui=4Nm-9X1HfE_QW1mzI~2mO9gIu4JwB ziG_#vk>?y9PNI!AFc2#O)iGQ!m4#a=MqnOW@g;@Zsr88z2t#{N1Bd3 zu%EwBQ&wO*2e&dCXf3{lxr6kF96bJKPxenuSstj7c`E~0N<3bY9`%WZqQ?(y%!i4o zK%vOT|9*O|%e1+-Z`^d6F;Z2XcM43Cs`-l;eA_1i7CVT~zkpesM{nz9<=_4Qv#*{^ zQdCkB(-2VOQhLGjvQjhiZf2zykemgu|EVZ1^KteNUkxl{*E4gMEO48ec6FDHy}z*; zZ!@Re&8Ol4X0lVtpD%lq(~5y&kDRm_Z7;qR8}p%ng~Epq2AYNBb4g&GpI|GzSt>3n z{P4a(LrZJ8g%vtJEk; z?ftwQhfyX(zUMb*ujk@$*i(_K9BoX~vI|#-pIG4PeD+G3ZD&|rMMZVXj$bzXye0E? zdVWs!-}$*$-n<4ICpMcUFRw7vz|d{xtTE#poo2dH1fw$d^K*SXW;ZuA?p!;6zVq0; z!g9YY33u{~c@=;fGbfEoO3eZL7fnGk+>b1jmJ~tU*~lxYZTOh~qyl&{o-X4+)_3k? zhmpp!1ET>Edk-FQoim?T6Re;vv)sV1mu&$GfDk65^~`T;-KN@t5<@-B%>0t$$#?7D zQ#I8(!iOjeWu?Uf#{v$AT*zd0#R!xYDPT;Ny{@HxqAPNpDB#uHKE7qjvT(me3pRz6 zYzhgJprMqD=hmK(dk_vZD1+hWc~ ztoK9HI7XL`MM%Mwsef zirK)U;9X<0d*H7RieE(rc?T_Z;Z+7|JSus;aEY(Hf?^Ny#6j{kV)+jNFDsr$#qEDl zS)Z`eADsnmQ%9fqZH@QFSeF%12|N5foDt_5m@Z&4LE`KmC#&APPP~*Vo`}}g)}Pj{ z1eHBq#vYGY$uq#YkIUTyqnl`So`FEIJ?=u((JSK|C+>)fmaH#*@*TtX>?05ear=I) zuK#c?VKa}2hZiG&UGxl!DS1&H8ZZxO28RPgm<-X`bvXGy8&>Z>d`yhkkd13l3Qk6@ z!gsz*dp<31#kM01CX1f}FgsRkJ#yh@e!#j-p%J?!?nqzb3!xEv94Ac;4q7wbJM_So zWs~fX*FS(=y!U6=)|m6V4qqN=HpF!bqBQ7FXuw<*MY;8nC#E^O%yOS6QsCeDd4C)~ z>gO>fe(Q1^uEW$_z4HKY`uzm!_-)JewAIkU;)-g|4f|i$QFq52Thh})F! zoUh-_n>SPO8;J0#hM0AW4#Y#UC|MQj|fQ78TpGjRZz{!*>aNHQYO}b(QSb+K7 zCXfuYW-5(_1O;IZ3_Ki>by#d9vI6#qBw1PhT@$^fg-&m2Yi$J;db$?kY6z-asD7Zu~IP1&6f zFU4Ow%47(H_~W6H?M+b77+nu|1X!qVp-U_j;PtDQfC93k3r<;GOf>=?Z!mOd)2s65 zmrlKZ-+;bl-1M;#P#|M&OEmb*s~WmGIv840$)5+`H#GD`+lH1_URr>K;wMFry;WaC z1CT833A*Bfkt7nyc#M5b&TYVg&?({&6Y`j8;^pgET43s{0SkT9v$*&vFD<}A?%i8# zUvC^%%5Sv%3&DZmoI4r3tN;rQV(ZSxwzgLBm+%8PPG78ICsLoiViXtfvcmpCZp_YXhmjM8O5&NT zsHkq(yj3!_WMoLIgMOCm+Al>jqy60P0%k>+1;*2Ygi9$Cf>uHQzu0xVpe8+qzeI%Z zcqd`+U3b@s!*mBqs{zHG7gdR&K|VFv@^pF#DVcH zR4#fSQF=OV9$7wa?Mf4M<^I=gfB?+F`r~KH{)q2>N;C_c7TS~FLKZhQUfLC^t0){J z_!?17r7ej&Q5+M>q0_pb6}P8+eJpw*0e^7wrs0}BKAZn404VSdjd+$2*;9qj?5s-< zN6mUs{!>Vpzn!IIPQ*V8;3HlydmR=N_vVDS@bu^73$%>n(1N=UA`gYkcG6dt{-*=| z2e4n-ay~URZg+d}eepGW6=ebI%H>t_(=WJtEMB&Jii4@TbmCn7hdNqIQeoN2_yfK9 z;2!#-SX0aGO2W7!v+4!-Wo0C1{T7D&gBHzy($Qp7KS-29PG8q9dwwTBTYhgn&HCCTD65Fs4u2jGUuSlELLc}?&@ z7;K1D?ApA*FpO@HgvxnW@p>ezvw|{Sc^2n&kdff(eoCb&Kr`3ytJdo{$>hD>9;TQbl^vOUDd~!V1mA(qL=Wg zro;oioe`iaf0pdvj8f2ESwYk@03%1%b|T7xNVH_7VU*NltwwX{hT7|ESoJln_pZqp zfBu0WahNGe0i*Icy9pU??56kNNV0Z7DFDNepl1ZCkZmWSET8~)qUFDTP-ZRyX@ZuZ zj}JplNgX}v7z>@iXhxjwNfkx(4#RLm2r^z|EbX{ih?e@N+<0e_r9Dnbl|0#ve&;g( zRbaRh^^gx)=s7pQ_MB|hA)oOypMDFWjK>0y0Dj`>Xw6RJpDCygKnq%GqOw;YMoAT` zs7f>+-4#uMA-sOa|Cj-@TYv-%jP|JQNj{L-+p*9w9y{kYfjhe}7+7UxD6bC5%3g>C zc^5B|CGzwM45jXo-#&uSIl~bh;12C%^o)2cfGpZN#ATVohMA=Wo!#l2VBEj_EWk~P zv5=@q1@Mu33fM5gVgZYX)0F&OGcc;@*=Zu1=7FGR0C)!pR#PL`MDqH9Bsw!V#jX%3 z7`cFYg8CpFcRG-)?RhK!);=a7Jz`ZN@0kgV1u?fvxzlbze5MP`2r74Wb=MwfC1!qg z2Z!4D*})<=zT?3p@}kU^j_>I>5Zs&?OCIk`>}LD{KU8j4MQDQQ>QSe4gppF-b6~iO zSqM-M3omf|&x_$s)sc%Z9H_V8h<@md0k;piwE}0sv?u5p;uKUN5t<;40v&*bMp=NN z9v^2T>cNm;|2lxM@GiuMzleW@s|#5oQX+pH2pJtdeCZzly-@d4Ew_?eZgs6Jb%L6p z0A}@l)H+epx+>GIC4pa04e@8&f<-j(&38obKd7?cKQ`{!{r~^~07*qoM6N<$g3mGn A@Bjb+ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..acf8f56934ad594e0ecf6bedb8e7957434e75d14 GIT binary patch literal 2151 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 T;)t;m00000NkvXXu0mjffAB(J literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6ae3f4abe4e945924d6715d7c863ed0542609389 GIT binary patch literal 6871 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 Y0FJ8cC1Y{#Bme*a07*qoM6N<$f&fKp&Hw-a literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9eb693ddf3dc1dfd3510f8bddc8a6331692836b6 GIT binary patch literal 8973 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 0000000..0bedcf2 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 0000000..89c2725 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f2e259c --- /dev/null +++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f3c2851 --- /dev/null +++ b/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist new file mode 100644 index 0000000..f9dc04f --- /dev/null +++ b/ios/Runner/Info.plist @@ -0,0 +1,51 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Healthcare User + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + healthcare_user + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/ios/Runner/Runner-Bridging-Header.h b/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 0000000..308a2a5 --- /dev/null +++ b/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/json/boreData.json b/json/boreData.json new file mode 100644 index 0000000..e077940 --- /dev/null +++ b/json/boreData.json @@ -0,0 +1,41 @@ +{ + "status_code": 200, + "data": [ + { + "boreName": "bore1", + "typeofwater": "bore", + "description": "this is bore 1", + "_id": "63e1e80dbd430f5ec4c5badc", + "__v": 0 + }, + { + "boreName": "bore2", + "typeofwater": "drinking", + "description": "this is bore 2", + "_id": "63e1e80dbd430f5ec4c5badc", + "__v": 0 + }, + { + "boreName": "bore3", + "typeofwater": "bore", + "description": "this is bore 3", + "_id": "63e1e80dbd430f5ec4c5badc", + "__v": 0 + }, + { + "boreName": "bore4", + "typeofwater": "drinking", + "description": "this is bore 4", + "_id": "63e1e80dbd430f5ec4c5badc", + "__v": 0 + }, + { + "boreName": "bore5", + "typeofwater": "bore", + "description": "this is bore 5", + "_id": "63e1e80dbd430f5ec4c5badc", + "__v": 0 + } + ], + "count": 1 +} \ No newline at end of file diff --git a/json/getTanksData.json b/json/getTanksData.json new file mode 100644 index 0000000..0c0027d --- /dev/null +++ b/json/getTanksData.json @@ -0,0 +1,151 @@ +{ + "status_code": 200, + "data": [ + { + "connections": { + "inputConnections": [], + "outputConnections": [] + }, + "userName": "testuser1", + "tankName": "tank3", + "blockName": "sriram", + "capacity": "5000", + "typeOfWater": "mineral", + "type": "supplier", + "tankLocation": "", + "tankId": 1, + "_id": "63ca4d187d797729224c1127", + "__v": 0 + }, + { + "connections": { + "inputConnections": [ + { + "_id": "63ce510b7a899c297d081c08", + "inputConnections": "TankerA" + } + ], + "outputConnections": [ + { + "_id": "63ce510b7a899c297d081c09", + "outputConnections": "overheadAb" + } + ], + "source": "TestA" + }, + "userName": "testuser1", + "tankName": "TestA", + "blockName": "blockA", + "capacity": "8000000", + "typeOfWater": "bore", + "type": "tank", + "tankLocation": "sump", + "tankId": 2, + "_id": "63ce28397c8d731709b62f1d", + "__v": 2 + }, + { + "connections": { + "inputConnections": [ + { + "_id": "63d0d239e0fa16109d08e613", + "inputConnections": "bore22" + } + ], + "outputConnections": [ + { + "_id": "63d0d239e0fa16109d08e614", + "outputConnections": "oh22" + } + ], + "source": "tank22" + }, + "userName": "testuser1", + "tankName": "tank22", + "blockName": "block22", + "capacity": "9000", + "typeOfWater": "bore", + "type": "tank", + "tankLocation": "overhead", + "tankId": 3, + "_id": "63ce5b0ce587f12d52284b5b", + "__v": 2 + }, + { + "connections": { + "inputConnections": [ + { + "_id": "63ce616cfe4b9731adb91d6d", + "inputConnections": "sump254" + } + ], + "outputConnections": [ + { + "_id": "63ce616cfe4b9731adb91d6e", + "outputConnections": "oh254" + } + ], + "source": "test24" + }, + "userName": "testuser1", + "tankName": "test24", + "blockName": "block24", + "capacity": "3000", + "typeOfWater": "bore", + "type": "tank", + "tankLocation": "overhead", + "tankId": 4, + "_id": "63ce6085fe4b9731adb91d62", + "__v": 3 + }, + { + "connections": { + "inputConnections": [], + "outputConnections": [] + }, + "userName": "testuser1", + "tankName": "tank26", + "blockName": "block25", + "capacity": "100", + "typeOfWater": "ghmc", + "type": "tank", + "tankLocation": "sump", + "tankId": 5, + "_id": "63cf7e57e99a8523fe0807dd", + "__v": 0 + }, + { + "connections": { + "inputConnections": [], + "outputConnections": [] + }, + "userName": "testuser1", + "tankName": "tank", + "blockName": "sri", + "capacity": "8000", + "typeOfWater": "drinking", + "type": "tank", + "tankLocation": "sump", + "tankId":6, + "_id": "63cf8535f023b02aaef29cc5", + "__v": 0 + }, + { + "connections": { + "inputConnections": [], + "outputConnections": [] + }, + "userName": "testuser1", + "tankName": "sri", + "blockName": "blockb", + "capacity": "100", + "typeOfWater": "ghmc", + "type": "supplier", + "tankLocation": "sump", + "tankId": 7, + "_id": "63cfa943e4c64f3251a5e4e1", + "__v": 0 + } + ], + "count": 7 +} \ No newline at end of file diff --git a/json/govtPipelinesData.json b/json/govtPipelinesData.json new file mode 100644 index 0000000..70097a3 --- /dev/null +++ b/json/govtPipelinesData.json @@ -0,0 +1,21 @@ +{ + "status_code": 200, + "data": [ + { + "pipelineName": "ghmc 1", + "typeofwater": "drinking", + "description": "this is first pipeline", + "_id": "63e1e80dbd430f5ec4c5badc", + "__v": 0 + }, + { + "pipelineName": "ghmc 2", + "typeofwater": "drinking", + "description": "this is second pipeline", + "_id": "63e1e80dbd430f5ec4c5badc", + "__v": 0 + } + + ], + "count": 1 +} \ No newline at end of file diff --git a/json/tankersData.json b/json/tankersData.json new file mode 100644 index 0000000..21a8a5a --- /dev/null +++ b/json/tankersData.json @@ -0,0 +1,52 @@ +{ + "status_code": 200, + "data": [ + { + "tankerName": "tanker1", + "phoneNumber": "9912995084", + "typeofwater": "bore", + "capacity": "5000", + "_id": "63e1e80dbd430f5ec4c5badc", + "__v": 0 + }, + { + "tankerName": "tanker2", + "phoneNumber": "9912995083", + "typeofwater": "drinking", + "capacity": "5000", + "_id": "63e1e80dbd430f5ec4c5badc", + "__v": 0 + }, + { + "tankerName": "tanker3", + "phoneNumber": "9912995085", + "typeofwater": "bore", + "capacity": "3000", + "_id": "63e1e80dbd430f5ec4c5badc", + "__v": 0 + }, + { + "tankerName": "tanker4", + "phoneNumber": "9912995086", + "typeofwater": "drinking", + "capacity": "2000", + "_id": "63e1e80dbd430f5ec4c5badc", + "__v": 0 + },{ + "tankerName": "tanker5", + "phoneNumber": "9912995087", + "typeofwater": "bore", + "capacity": "4000", + "_id": "63e1e80dbd430f5ec4c5badc", + "__v": 0 + },{ + "tankerName": "tanker6", + "phoneNumber": "9912995088", + "typeofwater": "bore", + "capacity": "10000", + "_id": "63e1e80dbd430f5ec4c5badc", + "__v": 0 + } + ], + "count": 1 +} \ No newline at end of file diff --git a/lib/dashboard.dart b/lib/dashboard.dart new file mode 100644 index 0000000..fc24ff3 --- /dev/null +++ b/lib/dashboard.dart @@ -0,0 +1,579 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:healthcare_user/settings.dart'; +import 'package:image_picker/image_picker.dart'; +import 'dart:io'; +import 'dart:ui' as ui; + +import 'login.dart'; + +class Dashboard extends StatefulWidget { + const Dashboard({super.key}); + + @override + State createState() => _DashboardState(); +} + +class _DashboardState extends State { + int _selectedIndex = 0; + + TextEditingController tankNameController = TextEditingController(); + TextEditingController blockNameController = TextEditingController(); + TextEditingController capacityController = TextEditingController(); + String dropdownTypeOfWater = 'General'; + String dropdownTankLocation = 'Sump'; + var typeOfWaterItems = [ + 'General', + 'Bore', + 'Tanker', + ]; + var typeOfTankLocationItems = [ + 'Sump', + 'Overhead', + ]; + + bool isT1Checked = false; + bool isT2Checked = false; + bool isT3Checked = false; + bool isS2T1Checked = false; + bool isS2T2Checked = false; + bool isS2T3Checked = false; + bool isS3T1Checked = false; + bool isS3T2Checked = false; + bool isS3T3Checked = false; + static const TextStyle optionStyle = + TextStyle(fontSize: 30, fontWeight: FontWeight.bold); + + final ImagePicker _picker = ImagePicker(); + bool isTablet = false; + bool isPhone = true; + + final double devicePixelRatio = ui.window.devicePixelRatio; + static final ui.Size size1 = ui.window.physicalSize; + final double width = size1.width; + final double height = size1.height; + + devicedetection() { + if (devicePixelRatio < 2 && (width >= 1000 || height >= 1000)) { + isTablet = true; + isPhone = false; + } else if (devicePixelRatio == 2 && (width >= 1920 || height >= 1920)) { + isTablet = true; + isPhone = false; + } else { + isTablet = false; + isPhone = true; + } + } + + + Widget _dashBoard() { + return Container( + color: screenBackgroundColor, + child: Column( + children: [ + Container( + height: MediaQuery.of(context).size.height * .250, + width: double.infinity, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(0), + ), + //color: Colors.red, + child: FittedBox( + child: Image( + image: isTablet + ? AssetImage('images/appbg.png') + : AssetImage('images/mobilebg.png'), + ), + fit: BoxFit.fill, + )), + SizedBox(height: 5), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded( + child: GestureDetector( + onTap: () { + /*Navigator.push( + context, + MaterialPageRoute(builder: (context) => TankLevelsNew()), + );*/ + }, + child: Container( + padding: EdgeInsets.all(05), + margin: + EdgeInsets.only(left: 15, top: 10, right: 0, bottom: 0), + //height: MediaQuery.of(context).size.height * .05, + //width: MediaQuery.of(context).size.width * .45, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + ), + // Change button text when light changes state. + + child: Column( + children: [ + Container( + padding: EdgeInsets.fromLTRB(35, 10, 0, 0), + child: new SvgPicture.asset( + "assets/images/tanklevels.svg")), + Text( + 'Tank Levels', + style: dashboardTextStyle(), + ), + ], + ), + ), + )), + ], + ), + ], + ), + ); + } + + @override + void initState() { + super.initState(); + devicedetection(); + } + + showLogoutAlertDialog(context) { + return showDialog( + context: context, + barrierDismissible: false, + builder: (BuildContext context) { + return StatefulBuilder( + builder: (BuildContext context, StateSetter setState) { + return AlertDialog( + title: const Text('Do you really want to logout?'), + actions: [ + TextButton( + child: Text('No', style: textButtonStyle()), + onPressed: () { + Navigator.of(context).pop(); + }, + ), + TextButton( + child: Text('Yes', style: textButtonStyle()), + onPressed: () async { + await AppSettings.clearSharedPreferences(); + await Navigator.pushAndRemoveUntil( + context, + MaterialPageRoute(builder: (context) => Login()), + (Route route) => false, + ); + }, + ), + ]); + }); + }); + } + + @override + Widget build(BuildContext context) { + return WillPopScope( + onWillPop: () async { + if (_selectedIndex == 0) { + final shouldPop = await showDialog( + context: context, + builder: (context) { + return AlertDialog( + title: const Text('Do you want to exit app?', + style: TextStyle( + color: primaryColor, + fontSize: 20, + )), + actionsAlignment: MainAxisAlignment.spaceBetween, + actions: [ + TextButton( + onPressed: () { + SystemNavigator.pop(); + }, + child: const Text('Yes', + style: TextStyle( + color: primaryColor, + fontSize: 20, + )), + ), + TextButton( + onPressed: () { + Navigator.of(context).pop(false); + }, + child: const Text('No', + style: TextStyle( + color: primaryColor, + fontSize: 20, + )), + ), + ], + ); + }, + ); + return shouldPop!; + } else { + setState(() { + _selectedIndex = 0; + }); + return false; + } + }, + child: Scaffold( + resizeToAvoidBottomInset: false, + appBar: AppSettings.appBar('Arminta Water Management'), + drawer: Drawer( + // Add a ListView to the drawer. This ensures the user can scroll + // through the options in the drawer if there isn't enough vertical + // space to fit everything. + //backgroundColor: screenBackgroundColor, + child: ListView( + // Important: Remove any padding from the ListView. + padding: EdgeInsets.zero, + children: [ + DrawerHeader( + decoration: const BoxDecoration( + color: primaryColor, + ), + child: Row( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: GestureDetector( + child: Container( + width: MediaQuery.of(context).size.width * .20, + height: + MediaQuery.of(context).size.height * .15, + decoration: BoxDecoration( + shape: BoxShape.circle, + image: DecorationImage( + image: (AppSettings.updatedImage != + null) + ? FileImage( + AppSettings.updatedImage!) + as ImageProvider + : AssetImage( + "images/profile_pic.png"), // picked file + fit: BoxFit.cover)), + ), + onTap: () { + /*showModalBottomSheet( + context: context, + builder: (BuildContext context) { + return SizedBox( + height: 200, + child: Center( + child: Row( + mainAxisAlignment: + MainAxisAlignment.center, + children: [ + GestureDetector( + child: Icon( + Icons.camera_alt_outlined, + size: 100, + color: greyColor, + ), + onTap: () async { + await takeImageFromCamera(); + Navigator.pop(context); + }, + ), + SizedBox( + width: MediaQuery.of(context) + .size + .width * + .20, + ), + GestureDetector( + child: Icon( + Icons.photo, + size: 100, + color: greyColor, + ), + onTap: () async { + await pickImageFromGallery(); + Navigator.pop(context); + }, + ), + ], + ), + ), + ); + });*/ + }, + ), + ), + Text( + AppSettings.userName, + style: TextStyle(color: Colors.white, fontSize: 15), + ), + Text( + AppSettings.phoneNumber, + style: TextStyle(color: Colors.white, fontSize: 15), + ), + Text( + AppSettings.email, + style: TextStyle(color: Colors.white, fontSize: 15), + ), + ], + ), + Container() + ], + )), + + ListTile( + title: Row( + children: const [ + Image( + image: const AssetImage('images/editprofileblue.png'), + height: 25, + width: 25, + fit: BoxFit.fill), + const SizedBox( + width: 10, + ), + const SizedBox( + width: 10, + ), + Text('Edit Profile', style: TextStyle(color: primaryColor)), + ], + ), + onTap: () { + /* Navigator.push( + context, + MaterialPageRoute(builder: (context) => UpdateProfile()), + );*/ + }, + ), + Divider( + color: Colors.grey, + ), + // Add Tanks + ListTile( + title: Row( + children: const [ + Image( + image: const AssetImage('images/addtankerblue.png'), + height: 25, + width: 25, + fit: BoxFit.fill), + const SizedBox( + width: 10, + ), + Text('Add Tanks', style: TextStyle(color: primaryColor)), + ], + ), + onTap: () { + /*Navigator.push( + context, + MaterialPageRoute(builder: (context) => AddTanks()), + );*/ + }, + ), + Divider( + color: Colors.grey, + ), + ListTile( + title: Row( + children: const [ + Image( + image: const AssetImage('images/tankviewblue.png'), + height: 25, + width: 25, + fit: BoxFit.fill), + const SizedBox( + width: 10, + ), + Text('Tanks View', style: TextStyle(color: primaryColor)), + ], + ), + onTap: () { + /*Navigator.push( + context, + MaterialPageRoute(builder: (context) => TanksView()), + );*/ + }, + ), + Divider( + color: Colors.grey, + ), + //Add Tanker + ListTile( + title: Row( + children: const [ + Image( + image: const AssetImage('images/suppliersblue.png'), + height: 25, + width: 25, + fit: BoxFit.fill), + const SizedBox( + width: 10, + ), + Text('Add Water Suppliers', + style: TextStyle(color: primaryColor)), + ], + ), + onTap: () { + /* Navigator.push( + context, + MaterialPageRoute(builder: (context) => Suppliers()), + );*/ + }, + ), + Divider( + color: Colors.grey, + ), + ListTile( + title: Row( + children: const [ + Image( + image: const AssetImage('images/connectionsblue.png'), + height: 25, + width: 25, + fit: BoxFit.fill), + const SizedBox( + width: 10, + ), + Text('Connections', style: TextStyle(color: primaryColor)), + ], + ), + onTap: () { + /* Navigator.push( + context, + MaterialPageRoute(builder: (context) => ConnectionsView()), + );*/ + }, + ), + Divider( + color: Colors.grey, + ), + ListTile( + title: Row( + children: const [ + Image( + image: const AssetImage('images/resourceblue.png'), + height: 25, + width: 25, + fit: BoxFit.fill), + const SizedBox( + width: 10, + ), + Text('Resources', style: TextStyle(color: primaryColor)), + ], + ), + onTap: () { + /*Navigator.push( + context, + MaterialPageRoute(builder: (context) => Resources()), + );*/ + }, + ), + Divider( + color: Colors.grey, + ), + ListTile( + title: Row( + children: const [ + Image( + image: const AssetImage('images/customercareblue.png'), + height: 25, + width: 25, + fit: BoxFit.fill), + const SizedBox( + width: 10, + ), + Text('Accounts', style: TextStyle(color: primaryColor)), + ], + ), + onTap: () { + /*Navigator.push( + context, + MaterialPageRoute(builder: (context) => UserAccounts()), + );*/ + }, + ), + Divider( + color: Colors.grey, + ), + ListTile( + title: Row( + children: const [ + Image( + image: const AssetImage('images/customercareblue.png'), + height: 25, + width: 25, + fit: BoxFit.fill), + const SizedBox( + width: 10, + ), + Text('Customer Support', + style: TextStyle(color: primaryColor)), + ], + ), + onTap: () {}, + ), + Divider( + color: Colors.grey, + ), + ListTile( + title: Row( + children: const [ + Image( + image: const AssetImage('images/logoutblue.png'), + height: 25, + width: 25, + fit: BoxFit.fill), + const SizedBox( + width: 10, + ), + Text('Logout', style: TextStyle(color: primaryColor)), + ], + ), + onTap: () async { + showLogoutAlertDialog(context); + }, + ), + ], + ), + ), + body: _dashBoard(), + /*body: IndexedStack( + index: _selectedIndex, + children: screens, + ),*/ + /* bottomNavigationBar: Container( + //height: MediaQuery.of(context).size.height, + child: BottomNavigationBar( + items: const [ + BottomNavigationBarItem( + icon: Icon( + Icons.home, + ), + label: 'Home', + ), + BottomNavigationBarItem( + icon: Icon(Icons.propane_tank), + label: 'Add Tanks', + ), + */ /*BottomNavigationBarItem( + icon: Icon(Icons.private_connectivity_outlined), + label: 'CreateConnections', + ),*/ /* + BottomNavigationBarItem( + icon: Icon(Icons.list_alt), + label: 'Add Tanker', + ), + ], + currentIndex: _selectedIndex, + selectedItemColor: primaryColor, + unselectedItemColor: greyColor, + showUnselectedLabels: true, + onTap: _onItemTapped, + ), + ),*/ + ), + ); + } +} diff --git a/lib/google_maps_place_picker_mb/google_maps_place_picker.dart b/lib/google_maps_place_picker_mb/google_maps_place_picker.dart new file mode 100644 index 0000000..f9466bf --- /dev/null +++ b/lib/google_maps_place_picker_mb/google_maps_place_picker.dart @@ -0,0 +1,7 @@ +library google_maps_place_picker_mb; + +export 'src/models/pick_result.dart'; +export 'src/components/floating_card.dart'; +export 'src/components/rounded_frame.dart'; +export 'src/models/circle_area.dart'; +export 'src/place_picker.dart'; diff --git a/lib/google_maps_place_picker_mb/providers/place_provider.dart b/lib/google_maps_place_picker_mb/providers/place_provider.dart new file mode 100644 index 0000000..e665b36 --- /dev/null +++ b/lib/google_maps_place_picker_mb/providers/place_provider.dart @@ -0,0 +1,161 @@ +import 'dart:async'; + +import 'package:flutter/widgets.dart'; +import 'package:geolocator/geolocator.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:google_maps_webservice/geocoding.dart'; +import 'package:google_maps_webservice/places.dart'; +import 'package:http/http.dart'; +import 'package:provider/provider.dart'; + +import '../src/models/pick_result.dart'; +import '../src/place_picker.dart'; + +class PlaceProvider extends ChangeNotifier { + PlaceProvider( + String apiKey, + String? proxyBaseUrl, + Client? httpClient, + Map apiHeaders, + ) { + places = GoogleMapsPlaces( + apiKey: apiKey, + baseUrl: proxyBaseUrl, + httpClient: httpClient, + apiHeaders: apiHeaders as Map?, + ); + + geocoding = GoogleMapsGeocoding( + apiKey: apiKey, + baseUrl: proxyBaseUrl, + httpClient: httpClient, + apiHeaders: apiHeaders as Map?, + ); + } + + static PlaceProvider of(BuildContext context, {bool listen = true}) => + Provider.of(context, listen: listen); + + late GoogleMapsPlaces places; + late GoogleMapsGeocoding geocoding; + String? sessionToken; + bool isOnUpdateLocationCooldown = false; + LocationAccuracy? desiredAccuracy; + bool isAutoCompleteSearching = false; + + Future updateCurrentLocation(bool forceAndroidLocationManager) async { + bool serviceEnabled; + LocationPermission permission; + + // Test if location services are enabled. + serviceEnabled = await Geolocator.isLocationServiceEnabled(); + if (!serviceEnabled) { + // Location services are not enabled don't continue + // accessing the position and request users of the + // App to enable the location services. + return Future.error('Location services are disabled.'); + } + + permission = await Geolocator.checkPermission(); + if (permission == LocationPermission.denied) { + permission = await Geolocator.requestPermission(); + if (permission == LocationPermission.denied) { + // Permissions are denied, next time you could try + // requesting permissions again (this is also where + // Android's shouldShowRequestPermissionRationale + // returned true. According to Android guidelines + // your App should show an explanatory UI now. + return Future.error('Location permissions are denied'); + } + } + + if (permission == LocationPermission.deniedForever) { + // Permissions are denied forever, handle appropriately. + return Future.error( + 'Location permissions are permanently denied, we cannot request permissions.'); + } + + Position position = await Geolocator.getCurrentPosition( + desiredAccuracy: LocationAccuracy.best, + ); + + currentPosition = position; + + // notifyListeners(); + } + + Position? _currentPosition; + Position? get currentPosition => _currentPosition; + set currentPosition(Position? newPosition) { + _currentPosition = newPosition; + notifyListeners(); + } + + Timer? _debounceTimer; + Timer? get debounceTimer => _debounceTimer; + set debounceTimer(Timer? timer) { + _debounceTimer = timer; + notifyListeners(); + } + + CameraPosition? _previousCameraPosition; + CameraPosition? get prevCameraPosition => _previousCameraPosition; + setPrevCameraPosition(CameraPosition? prePosition) { + _previousCameraPosition = prePosition; + } + + CameraPosition? _currentCameraPosition; + CameraPosition? get cameraPosition => _currentCameraPosition; + setCameraPosition(CameraPosition? newPosition) { + _currentCameraPosition = newPosition; + } + + PickResult? _selectedPlace; + PickResult? get selectedPlace => _selectedPlace; + set selectedPlace(PickResult? result) { + _selectedPlace = result; + notifyListeners(); + } + + SearchingState _placeSearchingState = SearchingState.Idle; + SearchingState get placeSearchingState => _placeSearchingState; + set placeSearchingState(SearchingState newState) { + _placeSearchingState = newState; + notifyListeners(); + } + + GoogleMapController? _mapController; + GoogleMapController? get mapController => _mapController; + set mapController(GoogleMapController? controller) { + _mapController = controller; + notifyListeners(); + } + + PinState _pinState = PinState.Preparing; + PinState get pinState => _pinState; + set pinState(PinState newState) { + _pinState = newState; + notifyListeners(); + } + + bool _isSeachBarFocused = false; + bool get isSearchBarFocused => _isSeachBarFocused; + set isSearchBarFocused(bool focused) { + _isSeachBarFocused = focused; + notifyListeners(); + } + + MapType _mapType = MapType.normal; + MapType get mapType => _mapType; + setMapType(MapType mapType, {bool notify = false}) { + _mapType = mapType; + if (notify) notifyListeners(); + } + + switchMapType() { + _mapType = MapType.values[(_mapType.index + 1) % MapType.values.length]; + if (_mapType == MapType.none) _mapType = MapType.normal; + + notifyListeners(); + } +} diff --git a/lib/google_maps_place_picker_mb/providers/search_provider.dart b/lib/google_maps_place_picker_mb/providers/search_provider.dart new file mode 100644 index 0000000..88d6520 --- /dev/null +++ b/lib/google_maps_place_picker_mb/providers/search_provider.dart @@ -0,0 +1,16 @@ +import 'package:flutter/widgets.dart'; +import 'package:provider/provider.dart'; + +class SearchProvider extends ChangeNotifier { + static SearchProvider of(BuildContext context, {bool listen = true}) => + Provider.of(context, listen: listen); + + String prevSearchTerm = ""; + String _searchTerm = ""; + String get searchTerm => _searchTerm; + + set searchTerm(String newValue) { + _searchTerm = newValue; + notifyListeners(); + } +} diff --git a/lib/google_maps_place_picker_mb/src/autocomplete_search.dart b/lib/google_maps_place_picker_mb/src/autocomplete_search.dart new file mode 100644 index 0000000..7dfd32b --- /dev/null +++ b/lib/google_maps_place_picker_mb/src/autocomplete_search.dart @@ -0,0 +1,341 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:google_maps_webservice/places.dart'; +import 'package:provider/provider.dart'; +import 'package:healthcare_user/google_maps_place_picker_mb/google_maps_place_picker.dart'; +import 'package:healthcare_user/google_maps_place_picker_mb/providers/place_provider.dart'; +import 'package:healthcare_user/google_maps_place_picker_mb/providers/search_provider.dart'; +import 'package:healthcare_user/google_maps_place_picker_mb/src/components/prediction_tile.dart'; +import 'package:healthcare_user/google_maps_place_picker_mb/src/components/rounded_frame.dart'; +import 'package:healthcare_user/google_maps_place_picker_mb/src/controllers/autocomplete_search_controller.dart'; + +class AutoCompleteSearch extends StatefulWidget { + const AutoCompleteSearch( + {Key? key, + required this.sessionToken, + required this.onPicked, + required this.appBarKey, + this.hintText = "Search here", + this.searchingText = "Searching...", + this.hidden = false, + this.height = 40, + this.contentPadding = EdgeInsets.zero, + this.debounceMilliseconds, + this.onSearchFailed, + required this.searchBarController, + this.autocompleteOffset, + this.autocompleteRadius, + this.autocompleteLanguage, + this.autocompleteComponents, + this.autocompleteTypes, + this.strictbounds, + this.region, + this.initialSearchString, + this.searchForInitialValue, + this.autocompleteOnTrailingWhitespace}) + : super(key: key); + + final String? sessionToken; + final String? hintText; + final String? searchingText; + final bool hidden; + final double height; + final EdgeInsetsGeometry contentPadding; + final int? debounceMilliseconds; + final ValueChanged onPicked; + final ValueChanged? onSearchFailed; + final SearchBarController searchBarController; + final num? autocompleteOffset; + final num? autocompleteRadius; + final String? autocompleteLanguage; + final List? autocompleteTypes; + final List? autocompleteComponents; + final bool? strictbounds; + final String? region; + final GlobalKey appBarKey; + final String? initialSearchString; + final bool? searchForInitialValue; + final bool? autocompleteOnTrailingWhitespace; + + @override + AutoCompleteSearchState createState() => AutoCompleteSearchState(); +} + +class AutoCompleteSearchState extends State { + TextEditingController controller = TextEditingController(); + FocusNode focus = FocusNode(); + OverlayEntry? overlayEntry; + SearchProvider provider = SearchProvider(); + + @override + void initState() { + super.initState(); + if (widget.initialSearchString != null) { + WidgetsBinding.instance.addPostFrameCallback((_) { + controller.text = widget.initialSearchString!; + if (widget.searchForInitialValue!) { + _onSearchInputChange(); + } + }); + } + controller.addListener(_onSearchInputChange); + focus.addListener(_onFocusChanged); + + widget.searchBarController.attach(this); + } + + @override + void dispose() { + controller.removeListener(_onSearchInputChange); + controller.dispose(); + + focus.removeListener(_onFocusChanged); + focus.dispose(); + _clearOverlay(); + + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return !widget.hidden + ? ChangeNotifierProvider.value( + value: provider, + child: RoundedFrame( + height: widget.height, + padding: const EdgeInsets.only(right: 10), + color: Theme.of(context).brightness == Brightness.dark + ? Colors.black54 + : Colors.white, + borderRadius: BorderRadius.circular(20), + elevation: 4.0, + child: Row( + children: [ + SizedBox(width: 10), + Icon(Icons.search), + SizedBox(width: 10), + Expanded(child: _buildSearchTextField()), + _buildTextClearIcon(), + ], + ), + ), + ) + : Container(); + } + + Widget _buildSearchTextField() { + return TextField( + controller: controller, + focusNode: focus, + decoration: InputDecoration( + hintText: widget.hintText, + border: InputBorder.none, + errorBorder: InputBorder.none, + enabledBorder: InputBorder.none, + focusedBorder: InputBorder.none, + disabledBorder: InputBorder.none, + focusedErrorBorder: InputBorder.none, + isDense: true, + contentPadding: widget.contentPadding, + ), + ); + } + + Widget _buildTextClearIcon() { + return Selector( + selector: (_, provider) => provider.searchTerm, + builder: (_, data, __) { + if (data.length > 0) { + return Padding( + padding: const EdgeInsets.only(right: 8.0), + child: GestureDetector( + child: Icon( + Icons.clear, + color: Theme.of(context).brightness == Brightness.dark + ? Colors.white + : Colors.black, + ), + onTap: () { + clearText(); + }, + ), + ); + } else { + return SizedBox(width: 10); + } + }); + } + + _onSearchInputChange() { + if (!mounted) return; + this.provider.searchTerm = controller.text; + + PlaceProvider provider = PlaceProvider.of(context, listen: false); + + if (controller.text.isEmpty) { + provider.debounceTimer?.cancel(); + _searchPlace(controller.text); + return; + } + + if (controller.text.trim() == this.provider.prevSearchTerm.trim()) { + provider.debounceTimer?.cancel(); + return; + } + + if (!widget.autocompleteOnTrailingWhitespace! && + controller.text.substring(controller.text.length - 1) == " ") { + provider.debounceTimer?.cancel(); + return; + } + + if (provider.debounceTimer?.isActive ?? false) { + provider.debounceTimer!.cancel(); + } + + provider.debounceTimer = + Timer(Duration(milliseconds: widget.debounceMilliseconds!), () { + _searchPlace(controller.text.trim()); + }); + } + + _onFocusChanged() { + PlaceProvider provider = PlaceProvider.of(context, listen: false); + provider.isSearchBarFocused = focus.hasFocus; + provider.debounceTimer?.cancel(); + provider.placeSearchingState = SearchingState.Idle; + } + + _searchPlace(String searchTerm) { + this.provider.prevSearchTerm = searchTerm; + + _clearOverlay(); + + if (searchTerm.length < 1) return; + + _displayOverlay(_buildSearchingOverlay()); + + _performAutoCompleteSearch(searchTerm); + } + + _clearOverlay() { + if (overlayEntry != null) { + overlayEntry!.remove(); + overlayEntry = null; + } + } + + _displayOverlay(Widget overlayChild) { + _clearOverlay(); + + final RenderBox? appBarRenderBox = + widget.appBarKey.currentContext!.findRenderObject() as RenderBox?; + final translation = appBarRenderBox?.getTransformTo(null).getTranslation(); + final Offset offset = translation != null + ? Offset(translation.x, translation.y) + : Offset(0.0, 0.0); + final screenWidth = MediaQuery.of(context).size.width; + + overlayEntry = OverlayEntry( + builder: (context) => Positioned( + top: appBarRenderBox!.paintBounds.shift(offset).top + + appBarRenderBox.size.height, + left: screenWidth * 0.025, + right: screenWidth * 0.025, + child: Material( + elevation: 4.0, + child: overlayChild, + ), + ), + ); + + Overlay.of(context)!.insert(overlayEntry!); + } + + Widget _buildSearchingOverlay() { + return Container( + padding: const EdgeInsets.symmetric(vertical: 16, horizontal: 24), + child: Row( + children: [ + SizedBox( + height: 24, + width: 24, + child: CircularProgressIndicator(strokeWidth: 3), + ), + SizedBox(width: 24), + Expanded( + child: Text( + widget.searchingText ?? "Searching...", + style: TextStyle(fontSize: 16), + ), + ) + ], + ), + ); + } + + Widget _buildPredictionOverlay(List predictions) { + return ListBody( + children: predictions + .map( + (p) => PredictionTile( + prediction: p, + onTap: (selectedPrediction) { + resetSearchBar(); + widget.onPicked(selectedPrediction); + }, + ), + ) + .toList(), + ); + } + + _performAutoCompleteSearch(String searchTerm) async { + PlaceProvider provider = PlaceProvider.of(context, listen: false); + + if (searchTerm.isNotEmpty) { + final PlacesAutocompleteResponse response = + await provider.places.autocomplete( + searchTerm, + sessionToken: widget.sessionToken, + location: provider.currentPosition == null + ? null + : Location( + lat: provider.currentPosition!.latitude, + lng: provider.currentPosition!.longitude), + offset: widget.autocompleteOffset, + radius: widget.autocompleteRadius, + language: widget.autocompleteLanguage, + types: widget.autocompleteTypes ?? const [], + components: widget.autocompleteComponents ?? const [], + strictbounds: widget.strictbounds ?? false, + region: widget.region, + ); + + if (response.errorMessage?.isNotEmpty == true || + response.status == "REQUEST_DENIED") { + if (widget.onSearchFailed != null) { + widget.onSearchFailed!(response.status); + } + return; + } + + _displayOverlay(_buildPredictionOverlay(response.predictions)); + } + } + + clearText() { + provider.searchTerm = ""; + controller.clear(); + } + + resetSearchBar() { + clearText(); + focus.unfocus(); + } + + clearOverlay() { + _clearOverlay(); + } +} diff --git a/lib/google_maps_place_picker_mb/src/components/animated_pin.dart b/lib/google_maps_place_picker_mb/src/components/animated_pin.dart new file mode 100644 index 0000000..a39499a --- /dev/null +++ b/lib/google_maps_place_picker_mb/src/components/animated_pin.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; + +class AnimatedPin extends StatefulWidget { + AnimatedPin({ + Key? key, + this.child, + }); + + final Widget? child; + + @override + _AnimatedPinState createState() => _AnimatedPinState(); +} + +class _AnimatedPinState extends State + with TickerProviderStateMixin { + late AnimationController _controller; + + @override + void initState() { + super.initState(); + _controller = AnimationController( + duration: const Duration(seconds: 1), + vsync: this, + )..repeat(); + } + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return JumpingContainer(controller: _controller, child: widget.child); + } +} + +class JumpingContainer extends AnimatedWidget { + const JumpingContainer({ + Key? key, + required AnimationController controller, + this.child, + }) : super(key: key, listenable: controller); + + final Widget? child; + + Animation get _progress => listenable as Animation; + + @override + Widget build(BuildContext context) { + return Transform.translate( + offset: Offset(0, -10 + _progress.value * 10), + child: child, + ); + } +} diff --git a/lib/google_maps_place_picker_mb/src/components/floating_card.dart b/lib/google_maps_place_picker_mb/src/components/floating_card.dart new file mode 100644 index 0000000..a408c71 --- /dev/null +++ b/lib/google_maps_place_picker_mb/src/components/floating_card.dart @@ -0,0 +1,47 @@ +import 'package:flutter/material.dart'; +import 'package:healthcare_user/google_maps_place_picker_mb/src/components/rounded_frame.dart'; + +class FloatingCard extends StatelessWidget { + const FloatingCard({ + Key? key, + this.topPosition, + this.leftPosition, + this.rightPosition, + this.bottomPosition, + this.width, + this.height, + this.borderRadius = BorderRadius.zero, + this.elevation = 0.0, + this.color, + this.child, + }) : super(key: key); + + final double? topPosition; + final double? leftPosition; + final double? bottomPosition; + final double? rightPosition; + final double? width; + final double? height; + final BorderRadius borderRadius; + final double elevation; + final Color? color; + final Widget? child; + + @override + Widget build(BuildContext context) { + return Positioned( + top: topPosition, + left: leftPosition, + right: rightPosition, + bottom: bottomPosition, + child: RoundedFrame( + width: width, + height: height, + borderRadius: borderRadius, + elevation: elevation, + color: color, + child: child, + ), + ); + } +} diff --git a/lib/google_maps_place_picker_mb/src/components/prediction_tile.dart b/lib/google_maps_place_picker_mb/src/components/prediction_tile.dart new file mode 100644 index 0000000..d1a1d6b --- /dev/null +++ b/lib/google_maps_place_picker_mb/src/components/prediction_tile.dart @@ -0,0 +1,81 @@ +import 'package:flutter/material.dart'; +import 'package:google_maps_webservice/places.dart'; + +class PredictionTile extends StatelessWidget { + final Prediction prediction; + final ValueChanged? onTap; + + PredictionTile({required this.prediction, this.onTap}); + + @override + Widget build(BuildContext context) { + return ListTile( + leading: Icon(Icons.location_on), + title: RichText( + text: TextSpan( + children: _buildPredictionText(context), + ), + ), + onTap: () { + if (onTap != null) { + onTap!(prediction); + } + }, + ); + } + + List _buildPredictionText(BuildContext context) { + final List result = []; + final textColor = Theme.of(context).textTheme.bodyText2!.color; + + if (prediction.matchedSubstrings.length > 0) { + MatchedSubstring matchedSubString = prediction.matchedSubstrings[0]; + // There is no matched string at the beginning. + if (matchedSubString.offset > 0) { + result.add( + TextSpan( + text: prediction.description + ?.substring(0, matchedSubString.offset as int?), + style: TextStyle( + color: textColor, fontSize: 16, fontWeight: FontWeight.w300), + ), + ); + } + + // Matched strings. + result.add( + TextSpan( + text: prediction.description?.substring( + matchedSubString.offset as int, + matchedSubString.offset + matchedSubString.length as int?), + style: TextStyle( + color: textColor, fontSize: 16, fontWeight: FontWeight.w500), + ), + ); + + // Other strings. + if (matchedSubString.offset + matchedSubString.length < + (prediction.description?.length ?? 0)) { + result.add( + TextSpan( + text: prediction.description?.substring( + matchedSubString.offset + matchedSubString.length as int), + style: TextStyle( + color: textColor, fontSize: 16, fontWeight: FontWeight.w300), + ), + ); + } + // If there is no matched strings, but there are predicts. (Not sure if this happens though) + } else { + result.add( + TextSpan( + text: prediction.description, + style: TextStyle( + color: textColor, fontSize: 16, fontWeight: FontWeight.w300), + ), + ); + } + + return result; + } +} diff --git a/lib/google_maps_place_picker_mb/src/components/rounded_frame.dart b/lib/google_maps_place_picker_mb/src/components/rounded_frame.dart new file mode 100644 index 0000000..db8b602 --- /dev/null +++ b/lib/google_maps_place_picker_mb/src/components/rounded_frame.dart @@ -0,0 +1,51 @@ +import 'package:flutter/material.dart'; + +class RoundedFrame extends StatelessWidget { + const RoundedFrame({ + Key? key, + this.margin, + this.padding, + this.width, + this.height, + this.child, + this.color, + this.borderRadius = BorderRadius.zero, + this.borderColor = Colors.transparent, + this.elevation = 0.0, + this.materialType, + }) : super(key: key); + + final EdgeInsetsGeometry? margin; + final EdgeInsetsGeometry? padding; + final double? width; + final double? height; + final Widget? child; + final Color? color; + final Color borderColor; + final BorderRadius borderRadius; + final double elevation; + final MaterialType? materialType; + + @override + Widget build(BuildContext context) { + return Container( + width: width, + height: height, + margin: margin, + padding: padding, + child: Material( + type: color == Colors.transparent + ? MaterialType.transparency + : materialType ?? MaterialType.canvas, + color: color, + shape: RoundedRectangleBorder( + borderRadius: borderRadius, side: BorderSide(color: borderColor)), + elevation: elevation, + child: ClipRRect( + borderRadius: borderRadius, + child: child, + ), + ), + ); + } +} diff --git a/lib/google_maps_place_picker_mb/src/controllers/autocomplete_search_controller.dart b/lib/google_maps_place_picker_mb/src/controllers/autocomplete_search_controller.dart new file mode 100644 index 0000000..2385d0f --- /dev/null +++ b/lib/google_maps_place_picker_mb/src/controllers/autocomplete_search_controller.dart @@ -0,0 +1,24 @@ +import 'package:flutter/cupertino.dart'; +import 'package:healthcare_user/google_maps_place_picker_mb/src/autocomplete_search.dart'; + +class SearchBarController extends ChangeNotifier { + late AutoCompleteSearchState _autoCompleteSearch; + + attach(AutoCompleteSearchState searchWidget) { + _autoCompleteSearch = searchWidget; + } + + /// Just clears text. + clear() { + _autoCompleteSearch.clearText(); + } + + /// Clear and remove focus (Dismiss keyboard) + reset() { + _autoCompleteSearch.resetSearchBar(); + } + + clearOverlay() { + _autoCompleteSearch.clearOverlay(); + } +} diff --git a/lib/google_maps_place_picker_mb/src/google_map_place_picker.dart b/lib/google_maps_place_picker_mb/src/google_map_place_picker.dart new file mode 100644 index 0000000..e216bc2 --- /dev/null +++ b/lib/google_maps_place_picker_mb/src/google_map_place_picker.dart @@ -0,0 +1,612 @@ +import 'dart:async'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:geolocator/geolocator.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:google_maps_webservice/geocoding.dart'; +import 'package:google_maps_webservice/places.dart'; + +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; +import 'package:healthcare_user/google_maps_place_picker_mb/google_maps_place_picker.dart'; +import 'package:healthcare_user/google_maps_place_picker_mb/providers/place_provider.dart'; +import 'package:healthcare_user/google_maps_place_picker_mb/src/components/animated_pin.dart'; + +typedef SelectedPlaceWidgetBuilder = Widget Function( + BuildContext context, + PickResult? selectedPlace, + SearchingState state, + bool isSearchBarFocused, +); + +typedef PinBuilder = Widget Function( + BuildContext context, + PinState state, +); + +class GoogleMapPlacePicker extends StatelessWidget { + const GoogleMapPlacePicker({ + Key? key, + required this.initialTarget, + required this.appBarKey, + this.selectedPlaceWidgetBuilder, + this.pinBuilder, + this.onSearchFailed, + this.onMoveStart, + this.onMapCreated, + this.debounceMilliseconds, + this.enableMapTypeButton, + this.enableMyLocationButton, + this.onToggleMapType, + this.onMyLocation, + this.onPlacePicked, + this.usePinPointingSearch, + this.usePlaceDetailSearch, + this.selectInitialPosition, + this.language, + this.pickArea, + this.forceSearchOnZoomChanged, + this.hidePlaceDetailsWhenDraggingPin, + this.onCameraMoveStarted, + this.onCameraMove, + this.onCameraIdle, + this.selectText, + this.outsideOfPickAreaText, + this.zoomGesturesEnabled = true, + this.zoomControlsEnabled = false, + this.fullMotion = false, + }) : super(key: key); + + final LatLng initialTarget; + final GlobalKey appBarKey; + + final SelectedPlaceWidgetBuilder? selectedPlaceWidgetBuilder; + final PinBuilder? pinBuilder; + + final ValueChanged? onSearchFailed; + final VoidCallback? onMoveStart; + final MapCreatedCallback? onMapCreated; + final VoidCallback? onToggleMapType; + final VoidCallback? onMyLocation; + final ValueChanged? onPlacePicked; + + final int? debounceMilliseconds; + final bool? enableMapTypeButton; + final bool? enableMyLocationButton; + + final bool? usePinPointingSearch; + final bool? usePlaceDetailSearch; + + final bool? selectInitialPosition; + + final String? language; + final CircleArea? pickArea; + + final bool? forceSearchOnZoomChanged; + final bool? hidePlaceDetailsWhenDraggingPin; + + /// GoogleMap pass-through events: + final Function(PlaceProvider)? onCameraMoveStarted; + final CameraPositionCallback? onCameraMove; + final Function(PlaceProvider)? onCameraIdle; + + // strings + final String? selectText; + final String? outsideOfPickAreaText; + + /// Zoom feature toggle + final bool zoomGesturesEnabled; + final bool zoomControlsEnabled; + + /// Use never scrollable scroll-view with maximum dimensions to prevent unnecessary re-rendering. + final bool fullMotion; + + _searchByCameraLocation(PlaceProvider provider) async { + // We don't want to search location again if camera location is changed by zooming in/out. + if (forceSearchOnZoomChanged == false && + provider.prevCameraPosition != null && + provider.prevCameraPosition!.target.latitude == + provider.cameraPosition!.target.latitude && + provider.prevCameraPosition!.target.longitude == + provider.cameraPosition!.target.longitude) { + provider.placeSearchingState = SearchingState.Idle; + return; + } + + provider.placeSearchingState = SearchingState.Searching; + + final GeocodingResponse response = + await provider.geocoding.searchByLocation( + Location( + lat: provider.cameraPosition!.target.latitude, + lng: provider.cameraPosition!.target.longitude), + language: language, + ); + + if (response.errorMessage?.isNotEmpty == true || + response.status == "REQUEST_DENIED") { + print("Camera Location Search Error: " + response.errorMessage!); + if (onSearchFailed != null) { + onSearchFailed!(response.status); + } + provider.placeSearchingState = SearchingState.Idle; + return; + } + + if (usePlaceDetailSearch!) { + final PlacesDetailsResponse detailResponse = + await provider.places.getDetailsByPlaceId( + response.results[0].placeId, + language: language, + ); + + if (detailResponse.errorMessage?.isNotEmpty == true || + detailResponse.status == "REQUEST_DENIED") { + print("Fetching details by placeId Error: " + + detailResponse.errorMessage!); + if (onSearchFailed != null) { + onSearchFailed!(detailResponse.status); + } + provider.placeSearchingState = SearchingState.Idle; + return; + } + + provider.selectedPlace = + PickResult.fromPlaceDetailResult(detailResponse.result); + } else { + provider.selectedPlace = + PickResult.fromGeocodingResult(response.results[0]); + } + + provider.placeSearchingState = SearchingState.Idle; + } + + @override + Widget build(BuildContext context) { + return Stack( + children: [ + if (this.fullMotion) + SingleChildScrollView( + physics: const NeverScrollableScrollPhysics(), + child: SizedBox( + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + child: Stack( + alignment: AlignmentDirectional.center, + children: [ + _buildGoogleMap(context), + _buildPin(), + ], + ))), + if (!this.fullMotion) _buildGoogleMap(context), + if (!this.fullMotion) _buildPin(), + _buildFloatingCard(), + _buildMapIcons(context), + _buildZoomButtons() + ], + ); + } + + Widget _buildGoogleMapInner(PlaceProvider? provider, MapType mapType) { + CameraPosition initialCameraPosition = + CameraPosition(target: this.initialTarget, zoom: 15); + return GoogleMap( + zoomGesturesEnabled: this.zoomGesturesEnabled, + zoomControlsEnabled: + false, // we use our own implementation that supports iOS as well, see _buildZoomButtons() + myLocationButtonEnabled: false, + compassEnabled: false, + mapToolbarEnabled: false, + initialCameraPosition: initialCameraPosition, + mapType: mapType, + myLocationEnabled: true, + circles: pickArea != null && pickArea!.radius > 0 + ? Set.from([pickArea]) + : Set(), + onMapCreated: (GoogleMapController controller) { + if (provider == null) return; + provider.mapController = controller; + provider.setCameraPosition(null); + provider.pinState = PinState.Idle; + + // When select initialPosition set to true. + if (selectInitialPosition!) { + provider.setCameraPosition(initialCameraPosition); + _searchByCameraLocation(provider); + } + + if (onMapCreated != null) { + onMapCreated!(controller); + } + }, + onCameraIdle: () { + if (provider == null) return; + if (provider.isAutoCompleteSearching) { + provider.isAutoCompleteSearching = false; + provider.pinState = PinState.Idle; + provider.placeSearchingState = SearchingState.Idle; + return; + } + + // Perform search only if the setting is to true. + if (usePinPointingSearch!) { + // Search current camera location only if camera has moved (dragged) before. + if (provider.pinState == PinState.Dragging) { + // Cancel previous timer. + if (provider.debounceTimer?.isActive ?? false) { + provider.debounceTimer!.cancel(); + } + provider.debounceTimer = + Timer(Duration(milliseconds: debounceMilliseconds!), () { + _searchByCameraLocation(provider); + }); + } + } + + provider.pinState = PinState.Idle; + + if (onCameraIdle != null) { + onCameraIdle!(provider); + } + }, + onCameraMoveStarted: () { + if (provider == null) return; + if (onCameraMoveStarted != null) { + onCameraMoveStarted!(provider); + } + + provider.setPrevCameraPosition(provider.cameraPosition); + + // Cancel any other timer. + provider.debounceTimer?.cancel(); + + // Update state, dismiss keyboard and clear text. + provider.pinState = PinState.Dragging; + + // Begins the search state if the hide details is enabled + if (this.hidePlaceDetailsWhenDraggingPin!) { + provider.placeSearchingState = SearchingState.Searching; + } + + onMoveStart!(); + }, + onCameraMove: (CameraPosition position) { + if (provider == null) return; + provider.setCameraPosition(position); + if (onCameraMove != null) { + onCameraMove!(position); + } + }, + // gestureRecognizers make it possible to navigate the map when it's a + // child in a scroll view e.g ListView, SingleChildScrollView... + gestureRecognizers: Set() + ..add(Factory(() => EagerGestureRecognizer())), + ); + } + + Widget _buildGoogleMap(BuildContext context) { + return Selector( + selector: (_, provider) => provider.mapType, + builder: (_, data, __) => this._buildGoogleMapInner( + PlaceProvider.of(context, listen: false), data)); + } + + Widget _buildPin() { + return Center( + child: Selector( + selector: (_, provider) => provider.pinState, + builder: (context, state, __) { + if (pinBuilder == null) { + return _defaultPinBuilder(context, state); + } else { + return Builder( + builder: (builderContext) => + pinBuilder!(builderContext, state)); + } + }, + ), + ); + } + + Widget _defaultPinBuilder(BuildContext context, PinState state) { + if (state == PinState.Preparing) { + return Container(); + } else if (state == PinState.Idle) { + return Stack( + children: [ + Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.place, size: 36, color: Colors.red), + SizedBox(height: 42), + ], + ), + ), + Center( + child: Container( + width: 5, + height: 5, + decoration: BoxDecoration( + color: Colors.black, + shape: BoxShape.circle, + ), + ), + ), + ], + ); + } else { + return Stack( + children: [ + Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + AnimatedPin( + child: Icon(Icons.place, size: 36, color: Colors.red)), + SizedBox(height: 42), + ], + ), + ), + Center( + child: Container( + width: 5, + height: 5, + decoration: BoxDecoration( + color: Colors.black, + shape: BoxShape.circle, + ), + ), + ), + ], + ); + } + } + + Widget _buildFloatingCard() { + return Selector>( + selector: (_, provider) => Tuple4( + provider.selectedPlace, + provider.placeSearchingState, + provider.isSearchBarFocused, + provider.pinState), + builder: (context, data, __) { + if ((data.item1 == null && data.item2 == SearchingState.Idle) || + data.item3 == true || + data.item4 == PinState.Dragging && + this.hidePlaceDetailsWhenDraggingPin!) { + return Container(); + } else { + if (selectedPlaceWidgetBuilder == null) { + return _defaultPlaceWidgetBuilder(context, data.item1, data.item2); + } else { + return Builder( + builder: (builderContext) => selectedPlaceWidgetBuilder!( + builderContext, data.item1, data.item2, data.item3)); + } + } + }, + ); + } + + Widget _buildZoomButtons() { + return Selector>( + selector: (_, provider) => new Tuple2( + provider.mapController, provider.cameraPosition?.target), + builder: (context, data, __) { + if (!this.zoomControlsEnabled || + data.item1 == null || + data.item2 == null) { + return Container(); + } else { + return Positioned( + bottom: 50, + right: 10, + child: Card( + elevation: 4.0, + child: Container( + width: 40, + height: 100, + child: Column( + children: [ + IconButton( + icon: Icon(Icons.add), + onPressed: () async { + double currentZoomLevel = + await data.item1!.getZoomLevel(); + currentZoomLevel = currentZoomLevel + 2; + data.item1!.animateCamera( + CameraUpdate.newCameraPosition( + CameraPosition( + target: data.item2!, + zoom: currentZoomLevel, + ), + ), + ); + }), + SizedBox(height: 2), + IconButton( + icon: Icon(Icons.remove), + onPressed: () async { + double currentZoomLevel = + await data.item1!.getZoomLevel(); + currentZoomLevel = currentZoomLevel - 2; + if (currentZoomLevel < 0) currentZoomLevel = 0; + data.item1!.animateCamera( + CameraUpdate.newCameraPosition( + CameraPosition( + target: data.item2!, + zoom: currentZoomLevel, + ), + ), + ); + }), + ], + ), + ), + ), + ); + } + }, + ); + } + + Widget _defaultPlaceWidgetBuilder( + BuildContext context, PickResult? data, SearchingState state) { + return FloatingCard( + bottomPosition: MediaQuery.of(context).size.height * 0.1, + leftPosition: MediaQuery.of(context).size.width * 0.15, + rightPosition: MediaQuery.of(context).size.width * 0.15, + width: MediaQuery.of(context).size.width * 0.7, + borderRadius: BorderRadius.circular(12.0), + elevation: 4.0, + color: Theme.of(context).cardColor, + child: state == SearchingState.Searching + ? _buildLoadingIndicator() + : _buildSelectionDetails(context, data!), + ); + } + + Widget _buildLoadingIndicator() { + return Container( + height: 48, + child: const Center( + child: SizedBox( + width: 24, + height: 24, + child: CircularProgressIndicator(), + ), + ), + ); + } + + Widget _buildSelectionDetails(BuildContext context, PickResult result) { + bool canBePicked = pickArea == null || + pickArea!.radius <= 0 || + Geolocator.distanceBetween( + pickArea!.center.latitude, + pickArea!.center.longitude, + result.geometry!.location.lat, + result.geometry!.location.lng) <= + pickArea!.radius; + MaterialStateColor buttonColor = MaterialStateColor.resolveWith( + (states) => canBePicked ? Colors.lightGreen : Colors.red); + return Container( + margin: EdgeInsets.all(10), + child: Column( + children: [ + Text( + result.types!.length==1? + result.formattedAddress!:result.name!+', '+result.formattedAddress!, + style: TextStyle(fontSize: 18), + textAlign: TextAlign.center, + ), + SizedBox(height: 10), + (canBePicked && (selectText?.isEmpty ?? true)) || + (!canBePicked && (outsideOfPickAreaText?.isEmpty ?? true)) + ? SizedBox.fromSize( + size: Size(56, 56), // button width and height + child: ClipOval( + child: Material( + child: InkWell( + overlayColor: buttonColor, + onTap: () { + if (canBePicked) { + onPlacePicked!(result); + } + }, + child: Icon( + canBePicked + ? Icons.check_sharp + : Icons.app_blocking_sharp, + color: buttonColor)), + ), + ), + ) + : SizedBox.fromSize( + size: Size(MediaQuery.of(context).size.width * 0.8, + 56), // button width and height + child: ClipRRect( + borderRadius: BorderRadius.circular(10.0), + child: Material( + child: InkWell( + overlayColor: buttonColor, + onTap: () { + if (canBePicked) { + onPlacePicked!(result); + } + }, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon( + canBePicked + ? Icons.check_sharp + : Icons.app_blocking_sharp, + color: buttonColor), + SizedBox.fromSize(size: new Size(10, 0)), + Text( + canBePicked + ? selectText! + : outsideOfPickAreaText!, + style: TextStyle(color: buttonColor)) + ], + )), + ), + ), + ) + ], + ), + ); + } + + Widget _buildMapIcons(BuildContext context) { + if (appBarKey.currentContext == null) { + return Container(); + } + final RenderBox appBarRenderBox = + appBarKey.currentContext!.findRenderObject() as RenderBox; + return Positioned( + top: appBarRenderBox.size.height, + right: 15, + child: Column( + children: [ + enableMapTypeButton! + ? Container( + width: 35, + height: 35, + child: RawMaterialButton( + shape: CircleBorder(), + fillColor: Theme.of(context).brightness == Brightness.dark + ? Colors.black54 + : Colors.white, + elevation: 4.0, + onPressed: onToggleMapType, + child: Icon(Icons.layers), + ), + ) + : Container(), + SizedBox(height: 10), + enableMyLocationButton! + ? Container( + width: 35, + height: 35, + child: RawMaterialButton( + shape: CircleBorder(), + fillColor: Theme.of(context).brightness == Brightness.dark + ? Colors.black54 + : Colors.white, + elevation: 4.0, + onPressed: onMyLocation, + child: Icon(Icons.my_location), + ), + ) + : Container(), + ], + ), + ); + } +} diff --git a/lib/google_maps_place_picker_mb/src/models/circle_area.dart b/lib/google_maps_place_picker_mb/src/models/circle_area.dart new file mode 100644 index 0000000..f16b510 --- /dev/null +++ b/lib/google_maps_place_picker_mb/src/models/circle_area.dart @@ -0,0 +1,22 @@ +import 'dart:ui'; + +import 'package:flutter/material.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:uuid/uuid.dart'; + +class CircleArea extends Circle { + CircleArea({ + required LatLng center, + required double radius, + Color? fillColor, + Color? strokeColor, + int strokeWidth = 2, + }) : super( + circleId: CircleId(Uuid().v4()), + center: center, + radius: radius, + fillColor: fillColor ?? Colors.blue.withAlpha(32), + strokeColor: strokeColor ?? Colors.blue.withAlpha(192), + strokeWidth: strokeWidth, + ); +} diff --git a/lib/google_maps_place_picker_mb/src/models/pick_result.dart b/lib/google_maps_place_picker_mb/src/models/pick_result.dart new file mode 100644 index 0000000..15f7ea4 --- /dev/null +++ b/lib/google_maps_place_picker_mb/src/models/pick_result.dart @@ -0,0 +1,91 @@ +import 'package:google_maps_webservice/geocoding.dart'; +import 'package:google_maps_webservice/places.dart'; + +class PickResult { + PickResult({ + this.placeId, + this.geometry, + this.formattedAddress, + this.types, + this.addressComponents, + this.adrAddress, + this.formattedPhoneNumber, + this.id, + this.reference, + this.icon, + this.name, + this.openingHours, + this.photos, + this.internationalPhoneNumber, + this.priceLevel, + this.rating, + this.scope, + this.url, + this.vicinity, + this.utcOffset, + this.website, + this.reviews, + }); + + final String? placeId; + final Geometry? geometry; + final String? formattedAddress; + final List? types; + final List? addressComponents; + + // Below results will not be fetched if 'usePlaceDetailSearch' is set to false (Defaults to false). + final String? adrAddress; + final String? formattedPhoneNumber; + final String? id; + final String? reference; + final String? icon; + final String? name; + final OpeningHoursDetail? openingHours; + final List? photos; + final String? internationalPhoneNumber; + final PriceLevel? priceLevel; + final num? rating; + final String? scope; + final String? url; + final String? vicinity; + final num? utcOffset; + final String? website; + final List? reviews; + + factory PickResult.fromGeocodingResult(GeocodingResult result) { + return PickResult( + placeId: result.placeId, + geometry: result.geometry, + formattedAddress: result.formattedAddress, + types: result.types, + addressComponents: result.addressComponents, + ); + } + + factory PickResult.fromPlaceDetailResult(PlaceDetails result) { + return PickResult( + placeId: result.placeId, + geometry: result.geometry, + formattedAddress: result.formattedAddress, + types: result.types, + addressComponents: result.addressComponents, + adrAddress: result.adrAddress, + formattedPhoneNumber: result.formattedPhoneNumber, + id: result.id, + reference: result.reference, + icon: result.icon, + name: result.name, + openingHours: result.openingHours, + photos: result.photos, + internationalPhoneNumber: result.internationalPhoneNumber, + priceLevel: result.priceLevel, + rating: result.rating, + scope: result.scope, + url: result.url, + vicinity: result.vicinity, + utcOffset: result.utcOffset, + website: result.website, + reviews: result.reviews, + ); + } +} diff --git a/lib/google_maps_place_picker_mb/src/place_picker.dart b/lib/google_maps_place_picker_mb/src/place_picker.dart new file mode 100644 index 0000000..4341d16 --- /dev/null +++ b/lib/google_maps_place_picker_mb/src/place_picker.dart @@ -0,0 +1,535 @@ +import 'dart:async'; +import 'dart:io' show Platform; + +import 'package:flutter/material.dart'; +import 'package:geolocator/geolocator.dart'; +import 'package:google_api_headers/google_api_headers.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:google_maps_webservice/places.dart'; +import 'package:http/http.dart'; + +import 'package:provider/provider.dart'; +import 'package:uuid/uuid.dart'; +import 'package:healthcare_user/google_maps_place_picker_mb/google_maps_place_picker.dart'; +import 'package:healthcare_user/google_maps_place_picker_mb/providers/place_provider.dart'; +import 'package:healthcare_user/google_maps_place_picker_mb/src/autocomplete_search.dart'; +import 'package:healthcare_user/google_maps_place_picker_mb/src/controllers/autocomplete_search_controller.dart'; +import 'package:healthcare_user/google_maps_place_picker_mb/src/google_map_place_picker.dart'; + +typedef IntroModalWidgetBuilder = Widget Function( + BuildContext context, + Function? close, +); + +enum PinState { Preparing, Idle, Dragging } + +enum SearchingState { Idle, Searching } + +class PlacePicker extends StatefulWidget { + const PlacePicker({ + Key? key, + required this.apiKey, + this.onPlacePicked, + required this.initialPosition, + this.useCurrentLocation, + this.desiredLocationAccuracy = LocationAccuracy.high, + this.onMapCreated, + this.hintText, + this.searchingText, + this.selectText, + this.outsideOfPickAreaText, + this.onAutoCompleteFailed, + this.onGeocodingSearchFailed, + this.proxyBaseUrl, + this.httpClient, + this.selectedPlaceWidgetBuilder, + this.pinBuilder, + this.introModalWidgetBuilder, + this.autoCompleteDebounceInMilliseconds = 500, + this.cameraMoveDebounceInMilliseconds = 750, + this.initialMapType = MapType.normal, + this.enableMapTypeButton = true, + this.enableMyLocationButton = true, + this.myLocationButtonCooldown = 10, + this.usePinPointingSearch = true, + this.usePlaceDetailSearch = false, + this.autocompleteOffset, + this.autocompleteRadius, + this.autocompleteLanguage, + this.autocompleteComponents, + this.autocompleteTypes, + this.strictbounds, + this.region, + this.pickArea, + this.selectInitialPosition = false, + this.resizeToAvoidBottomInset = true, + this.initialSearchString, + this.searchForInitialValue = false, + this.forceAndroidLocationManager = false, + this.forceSearchOnZoomChanged = false, + this.automaticallyImplyAppBarLeading = true, + this.autocompleteOnTrailingWhitespace = false, + this.hidePlaceDetailsWhenDraggingPin = true, + this.onTapBack, + this.onCameraMoveStarted, + this.onCameraMove, + this.onCameraIdle, + this.onMapTypeChanged, + this.zoomGesturesEnabled = true, + this.zoomControlsEnabled = false, + }) : super(key: key); + + final String apiKey; + + final LatLng initialPosition; + final bool? useCurrentLocation; + final LocationAccuracy desiredLocationAccuracy; + + final String? hintText; + final String? searchingText; + final String? selectText; + final String? outsideOfPickAreaText; + + final ValueChanged? onAutoCompleteFailed; + final ValueChanged? onGeocodingSearchFailed; + final int autoCompleteDebounceInMilliseconds; + final int cameraMoveDebounceInMilliseconds; + + final MapType initialMapType; + final bool enableMapTypeButton; + final bool enableMyLocationButton; + final int myLocationButtonCooldown; + + final bool usePinPointingSearch; + final bool usePlaceDetailSearch; + + final num? autocompleteOffset; + final num? autocompleteRadius; + final String? autocompleteLanguage; + final List? autocompleteTypes; + final List? autocompleteComponents; + final bool? strictbounds; + final String? region; + + /// If set the picker can only pick addresses in the given circle area. + /// The section will be highlighted. + final CircleArea? pickArea; + + /// If true the [body] and the scaffold's floating widgets should size + /// themselves to avoid the onscreen keyboard whose height is defined by the + /// ambient [MediaQuery]'s [MediaQueryData.viewInsets] `bottom` property. + /// + /// For example, if there is an onscreen keyboard displayed above the + /// scaffold, the body can be resized to avoid overlapping the keyboard, which + /// prevents widgets inside the body from being obscured by the keyboard. + /// + /// Defaults to true. + final bool resizeToAvoidBottomInset; + + final bool selectInitialPosition; + + /// By using default setting of Place Picker, it will result result when user hits the select here button. + /// + /// If you managed to use your own [selectedPlaceWidgetBuilder], then this WILL NOT be invoked, and you need use data which is + /// being sent with [selectedPlaceWidgetBuilder]. + final ValueChanged? onPlacePicked; + + /// optional - builds selected place's UI + /// + /// It is provided by default if you leave it as a null. + /// INPORTANT: If this is non-null, [onPlacePicked] will not be invoked, as there will be no default 'Select here' button. + final SelectedPlaceWidgetBuilder? selectedPlaceWidgetBuilder; + + /// optional - builds customized pin widget which indicates current pointing position. + /// + /// It is provided by default if you leave it as a null. + final PinBuilder? pinBuilder; + + /// optional - builds customized introduction panel. + /// + /// None is provided / the map is instantly accessible if you leave it as a null. + final IntroModalWidgetBuilder? introModalWidgetBuilder; + + /// optional - sets 'proxy' value in google_maps_webservice + /// + /// In case of using a proxy the baseUrl can be set. + /// The apiKey is not required in case the proxy sets it. + /// (Not storing the apiKey in the app is good practice) + final String? proxyBaseUrl; + + /// optional - set 'client' value in google_maps_webservice + /// + /// In case of using a proxy url that requires authentication + /// or custom configuration + final BaseClient? httpClient; + + /// Initial value of autocomplete search + final String? initialSearchString; + + /// Whether to search for the initial value or not + final bool searchForInitialValue; + + /// On Android devices you can set [forceAndroidLocationManager] + /// to true to force the plugin to use the [LocationManager] to determine the + /// position instead of the [FusedLocationProviderClient]. On iOS this is ignored. + final bool forceAndroidLocationManager; + + /// Allow searching place when zoom has changed. By default searching is disabled when zoom has changed in order to prevent unwilling API usage. + final bool forceSearchOnZoomChanged; + + /// Whether to display appbar backbutton. Defaults to true. + final bool automaticallyImplyAppBarLeading; + + /// Will perform an autocomplete search, if set to true. Note that setting + /// this to true, while providing a smoother UX experience, may cause + /// additional unnecessary queries to the Places API. + /// + /// Defaults to false. + final bool autocompleteOnTrailingWhitespace; + + final bool hidePlaceDetailsWhenDraggingPin; + + // Raised when clicking on the back arrow. + // This will not listen for the system back button on Android devices. + // If this is not set, but the back button is visible through automaticallyImplyLeading, + // the Navigator will try to pop instead. + final VoidCallback? onTapBack; + + /// GoogleMap pass-through events: + + /// Callback method for when the map is ready to be used. + /// + /// Used to receive a [GoogleMapController] for this [GoogleMap]. + final MapCreatedCallback? onMapCreated; + + /// Called when the camera starts moving. + /// + /// This can be initiated by the following: + /// 1. Non-gesture animation initiated in response to user actions. + /// For example: zoom buttons, my location button, or marker clicks. + /// 2. Programmatically initiated animation. + /// 3. Camera motion initiated in response to user gestures on the map. + /// For example: pan, tilt, pinch to zoom, or rotate. + final Function(PlaceProvider)? onCameraMoveStarted; + + /// Called repeatedly as the camera continues to move after an + /// onCameraMoveStarted call. + /// + /// This may be called as often as once every frame and should + /// not perform expensive operations. + final CameraPositionCallback? onCameraMove; + + /// Called when camera movement has ended, there are no pending + /// animations and the user has stopped interacting with the map. + final Function(PlaceProvider)? onCameraIdle; + + /// Called when the map type has been changed. + final Function(MapType)? onMapTypeChanged; + + /// Allow user to make visible the zoom button & toggle on & off zoom gestures + final bool zoomGesturesEnabled; + final bool zoomControlsEnabled; + + @override + _PlacePickerState createState() => _PlacePickerState(); +} + +class _PlacePickerState extends State { + GlobalKey appBarKey = GlobalKey(); + late final Future _futureProvider; + PlaceProvider? provider; + SearchBarController searchBarController = SearchBarController(); + bool showIntroModal = true; + + @override + void initState() { + super.initState(); + + _futureProvider = _initPlaceProvider(); + } + + @override + void dispose() { + searchBarController.dispose(); + + super.dispose(); + } + + Future _initPlaceProvider() async { + final headers = await const GoogleApiHeaders().getHeaders(); + final provider = PlaceProvider( + widget.apiKey, + widget.proxyBaseUrl, + widget.httpClient, + headers, + ); + provider.sessionToken = const Uuid().v4(); + provider.desiredAccuracy = widget.desiredLocationAccuracy; + provider.setMapType(widget.initialMapType); + if (widget.useCurrentLocation != null && widget.useCurrentLocation!) { + await provider.updateCurrentLocation(widget.forceAndroidLocationManager); + } + return provider; + } + + @override + Widget build(BuildContext context) { + return WillPopScope( + onWillPop: () { + searchBarController.clearOverlay(); + return Future.value(true); + }, + child: FutureBuilder( + future: _futureProvider, + builder: (context, snapshot) { + if (snapshot.connectionState == ConnectionState.waiting) { + return const Center(child: CircularProgressIndicator()); + } else if (snapshot.hasData) { + provider = snapshot.data; + + return MultiProvider( + providers: [ + ChangeNotifierProvider.value(value: provider!), + ], + child: Stack(children: [ + Scaffold( + key: ValueKey(provider.hashCode), + resizeToAvoidBottomInset: widget.resizeToAvoidBottomInset, + extendBodyBehindAppBar: true, + appBar: AppBar( + key: appBarKey, + automaticallyImplyLeading: false, + iconTheme: Theme.of(context).iconTheme, + elevation: 0, + backgroundColor: Colors.transparent, + titleSpacing: 0.0, + title: _buildSearchBar(context), + ), + body: _buildMapWithLocation(), + ), + _buildIntroModal(context), + ]), + ); + } + + final children = []; + if (snapshot.hasError) { + children.addAll([ + Icon( + Icons.error_outline, + color: Theme.of(context).errorColor, + ), + Padding( + padding: const EdgeInsets.only(top: 16), + child: Text('Error: ${snapshot.error}'), + ) + ]); + } else { + children.add(CircularProgressIndicator()); + } + + return Scaffold( + body: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: children, + ), + ), + ); + }, + )); + } + + Widget _buildSearchBar(BuildContext context) { + return Row( + children: [ + widget.automaticallyImplyAppBarLeading || widget.onTapBack != null + ? IconButton( + onPressed: () { + if (!showIntroModal || + widget.introModalWidgetBuilder == null) { + if (widget.onTapBack != null) { + widget.onTapBack!(); + return; + } + Navigator.maybePop(context); + } + }, + icon: Icon( + Platform.isIOS ? Icons.arrow_back_ios : Icons.arrow_back, + ), + color: Colors.black.withAlpha(128), + padding: EdgeInsets.zero) + : SizedBox(width: 15), + Expanded( + child: AutoCompleteSearch( + appBarKey: appBarKey, + searchBarController: searchBarController, + sessionToken: provider!.sessionToken, + hintText: widget.hintText, + searchingText: widget.searchingText, + debounceMilliseconds: widget.autoCompleteDebounceInMilliseconds, + onPicked: (prediction) { + _pickPrediction(prediction); + }, + onSearchFailed: (status) { + if (widget.onAutoCompleteFailed != null) { + widget.onAutoCompleteFailed!(status); + } + }, + autocompleteOffset: widget.autocompleteOffset, + autocompleteRadius: widget.autocompleteRadius, + autocompleteLanguage: widget.autocompleteLanguage, + autocompleteComponents: widget.autocompleteComponents, + autocompleteTypes: widget.autocompleteTypes, + strictbounds: widget.strictbounds, + region: widget.region, + initialSearchString: widget.initialSearchString, + searchForInitialValue: widget.searchForInitialValue, + autocompleteOnTrailingWhitespace: + widget.autocompleteOnTrailingWhitespace), + ), + SizedBox(width: 5), + ], + ); + } + + _pickPrediction(Prediction prediction) async { + provider!.placeSearchingState = SearchingState.Searching; + + final PlacesDetailsResponse response = + await provider!.places.getDetailsByPlaceId( + prediction.placeId!, + sessionToken: provider!.sessionToken, + language: widget.autocompleteLanguage, + ); + + if (response.errorMessage?.isNotEmpty == true || + response.status == "REQUEST_DENIED") { + if (widget.onAutoCompleteFailed != null) { + widget.onAutoCompleteFailed!(response.status); + } + return; + } + + provider!.selectedPlace = PickResult.fromPlaceDetailResult(response.result); + + // Prevents searching again by camera movement. + provider!.isAutoCompleteSearching = true; + + await _moveTo(provider!.selectedPlace!.geometry!.location.lat, + provider!.selectedPlace!.geometry!.location.lng); + + provider!.placeSearchingState = SearchingState.Idle; + } + + _moveTo(double latitude, double longitude) async { + GoogleMapController? controller = provider!.mapController; + if (controller == null) return; + + await controller.animateCamera( + CameraUpdate.newCameraPosition( + CameraPosition( + target: LatLng(latitude, longitude), + zoom: 16, + ), + ), + ); + } + + _moveToCurrentPosition() async { + if (provider!.currentPosition != null) { + await _moveTo(provider!.currentPosition!.latitude, + provider!.currentPosition!.longitude); + } + } + + Widget _buildMapWithLocation() { + if (provider!.currentPosition == null) { + return _buildMap(widget.initialPosition); + } + return _buildMap(LatLng(provider!.currentPosition!.latitude, + provider!.currentPosition!.longitude)); + } + + Widget _buildMap(LatLng initialTarget) { + return GoogleMapPlacePicker( + fullMotion: !widget.resizeToAvoidBottomInset, + initialTarget: initialTarget, + appBarKey: appBarKey, + selectedPlaceWidgetBuilder: widget.selectedPlaceWidgetBuilder, + pinBuilder: widget.pinBuilder, + onSearchFailed: widget.onGeocodingSearchFailed, + debounceMilliseconds: widget.cameraMoveDebounceInMilliseconds, + enableMapTypeButton: widget.enableMapTypeButton, + enableMyLocationButton: widget.enableMyLocationButton, + usePinPointingSearch: widget.usePinPointingSearch, + usePlaceDetailSearch: widget.usePlaceDetailSearch, + onMapCreated: widget.onMapCreated, + selectInitialPosition: widget.selectInitialPosition, + language: widget.autocompleteLanguage, + pickArea: widget.pickArea, + forceSearchOnZoomChanged: widget.forceSearchOnZoomChanged, + hidePlaceDetailsWhenDraggingPin: widget.hidePlaceDetailsWhenDraggingPin, + selectText: widget.selectText, + outsideOfPickAreaText: widget.outsideOfPickAreaText, + onToggleMapType: () { + provider!.switchMapType(); + if (widget.onMapTypeChanged != null) { + widget.onMapTypeChanged!(provider!.mapType); + } + }, + onMyLocation: () async { + // Prevent to click many times in short period. + if (provider!.isOnUpdateLocationCooldown == false) { + provider!.isOnUpdateLocationCooldown = true; + Timer(Duration(seconds: widget.myLocationButtonCooldown), () { + provider!.isOnUpdateLocationCooldown = false; + }); + await provider! + .updateCurrentLocation(widget.forceAndroidLocationManager); + await _moveToCurrentPosition(); + } + }, + onMoveStart: () { + searchBarController.reset(); + }, + onPlacePicked: widget.onPlacePicked, + onCameraMoveStarted: widget.onCameraMoveStarted, + onCameraMove: widget.onCameraMove, + onCameraIdle: widget.onCameraIdle, + zoomGesturesEnabled: widget.zoomGesturesEnabled, + zoomControlsEnabled: widget.zoomControlsEnabled, + ); + } + + Widget _buildIntroModal(BuildContext context) { + return StatefulBuilder( + builder: (BuildContext context, StateSetter setState) { + return showIntroModal && widget.introModalWidgetBuilder != null + ? Stack(children: [ + Positioned( + top: 0, + right: 0, + bottom: 0, + left: 0, + child: Material( + type: MaterialType.canvas, + color: Color.fromARGB(128, 0, 0, 0), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.zero, + ), + child: ClipRect(), + ), + ), + widget.introModalWidgetBuilder!(context, () { + setState(() { + showIntroModal = false; + }); + }) + ]) + : Container(); + }); + } +} diff --git a/lib/keys.dart b/lib/keys.dart new file mode 100644 index 0000000..128da55 --- /dev/null +++ b/lib/keys.dart @@ -0,0 +1,6 @@ +class APIKeys { + APIKeys._(); + + static String androidApiKey = "AIzaSyDJpK9RVhlBejtJu9xSGfneuTN6HOfJgSM"; + static String iosApiKey = "YOUR IOS KEY HERE"; +} diff --git a/lib/login.dart b/lib/login.dart new file mode 100644 index 0000000..ad44be2 --- /dev/null +++ b/lib/login.dart @@ -0,0 +1,302 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:healthcare_user/dashboard.dart'; +import 'package:healthcare_user/settings.dart'; +import 'package:healthcare_user/signup.dart'; +import 'package:path/path.dart' as Path; + +class Login extends StatefulWidget { + const Login({super.key}); + + @override + State createState() => _LoginState(); +} + +class _LoginState extends State { + + bool isObscureText=true; + TextEditingController mobileNumberController = TextEditingController(); + TextEditingController passwordController = TextEditingController(); + + + @override + void initState() { + isObscureText=true; + super.initState(); + } + + Future onWillPop() async { + final shouldPop = await showDialog(context: context, builder: (context) { + return AlertDialog( + title: const Text('Do you want to exit app?', + style: TextStyle( + color: primaryColor, + fontSize: 20, + )), + actionsAlignment: MainAxisAlignment.spaceBetween, + actions: [ + TextButton( + onPressed: () { + SystemNavigator.pop(); + }, + child: const Text('Yes', + style: TextStyle( + color: primaryColor, + fontSize: 20, + )), + ), + TextButton( + onPressed: () { + Navigator.of(context).pop(false); + }, + child: const Text('No', + style: TextStyle( + color: primaryColor, + fontSize: 20, + )), + ), + ], + ); + }, + ); + return shouldPop!; + } + + @override + Widget build(BuildContext context) { + String lastInputValue=""; + + return WillPopScope( + onWillPop: () async => onWillPop(), + child: Scaffold( + + body: Stack( + children: [ + Container( + decoration: const BoxDecoration( + image: DecorationImage(image: AssetImage("images/background.png"), fit: BoxFit.cover,), + ), + ), + GestureDetector( + onTap: () { + FocusManager.instance.primaryFocus?.unfocus(); + }, + child: SafeArea( + child: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(10), + child: Column( + children: [ + const SizedBox( + height: 15, + ), + Container( + //width: double.infinity, + child: Image( + image: const AssetImage('images/logo.png'), + height: MediaQuery.of(context).size.height * .25, + )), + const SizedBox( + height: 15, + ), + Container( + padding: const EdgeInsets.all(10), + child: TextFormField( + cursorColor: greyColor, + controller: mobileNumberController, + keyboardType: TextInputType.number, + decoration: const InputDecoration( + prefixIcon: Icon( + Icons.phone, + color: greyColor, + ), + border: OutlineInputBorder( + borderSide: BorderSide(color: primaryColor)), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color:primaryColor), + ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide(color: primaryColor), + ), + labelText: 'Enter MobileNumber', + labelStyle: TextStyle( + color: greyColor, //<-- SEE HERE + ), + ), + ), + ), + const SizedBox( + height: 15, + ), + + Container( + padding: const EdgeInsets.fromLTRB(10, 10, 10, 0), + child: TextFormField( + cursorColor: greyColor, + obscureText: isObscureText, + controller: passwordController, + decoration: InputDecoration( + labelText: 'Password', + prefixIcon: const Icon(Icons.password, color: greyColor,), + labelStyle: const TextStyle( + color: greyColor, //<-- SEE HERE + ), + border: const OutlineInputBorder( + borderSide: BorderSide(color: primaryColor)), + focusedBorder: const OutlineInputBorder( + borderSide: BorderSide(color: primaryColor), + ), + enabledBorder: const OutlineInputBorder( + borderSide: BorderSide(color: primaryColor), + ), + suffixIcon: IconButton( + icon: Icon( + Icons.visibility_off_outlined, + color: isObscureText==true?greyColor:primaryColor, + ), + onPressed: () { + + print("show password"); + setState(() { + isObscureText = !isObscureText; + }); + }, + ), + + ), + + ), + ), + Padding(padding: const EdgeInsets.fromLTRB(220, 10, 0,10), + child: TextButton( + onPressed: () { + /*Navigator.push( + context, + MaterialPageRoute(builder: (context) => OtpScreen()), + );*/ + }, + child: const Text( + 'Forgot Password?', + style: TextStyle( + color: greyColor, + fontSize: 15, + decoration: TextDecoration.underline, + + ), + ), + ),), + Container( + width: 400, + height: 50, + padding: const EdgeInsets.fromLTRB(10, 0, 10, 0), + child: ElevatedButton( + style: ElevatedButton.styleFrom( + primary: primaryColor, // background + onPrimary: Colors.white, // foreground + ), + onPressed: () async{ + + if (mobileNumberController.text != '' || + passwordController.text != '') { + AppSettings.preLoaderDialog(context); + + bool isOnline = await AppSettings.internetConnectivity(); + + if(isOnline){ + var payload = new Map(); + payload["phone"] = mobileNumberController.text.toString(); + payload["password"] = passwordController.text.toString(); + + bool signinStatus = await AppSettings.login(payload); + + try{ + if (signinStatus) { + Navigator.of(context,rootNavigator: true).pop(); + + await Navigator.push( + context, + MaterialPageRoute( + builder: (context) => const Dashboard()), + ); + // AppSettings.longSuccessToast("Logged in Successfully"); + mobileNumberController.text=''; + passwordController.text=''; + + } else { + Navigator.of(context,rootNavigator: true).pop(); + //AppSettings.longFailedToast("Please enter valid details"); + } + } + catch(exception){ + Navigator.of(context,rootNavigator: true).pop(); + print(exception); + } + } + else{ + Navigator.of(context,rootNavigator: true).pop(); + // AppSettings.longFailedToast("Please Check internet"); + } + + + } + else{ + + //AppSettings.longFailedToast("Please enter valid details"); + } + + }, + child: const Text('Login'), + )), + Padding(padding: const EdgeInsets.fromLTRB(10, 10,10,10), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Text( + 'Not a Member Yet?', + style: TextStyle( + color: primaryColor, + ), + ), + TextButton( + child: const Text( + 'Sign Up', + style: TextStyle(fontSize: 15, + decoration: TextDecoration.underline,color: greyColor), + ), + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => const SignUp()), + ); + //signup screen + }, + ) + ], + ),) + ], + ), + ) + )), + ), + ], + ) + /*bottomNavigationBar: Container( + padding: EdgeInsets.only(bottom: 13), + height: 38, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + child: Image( + image: AssetImage('images/logo_btm.png'), + width: 90, + )), + ], + ), + ),*/ + ), + ); + } +} diff --git a/lib/main.dart b/lib/main.dart new file mode 100644 index 0000000..c13a338 --- /dev/null +++ b/lib/main.dart @@ -0,0 +1,23 @@ +import 'package:flutter/material.dart'; +import 'package:healthcare_user/splash_screen.dart'; +import 'package:sizer/sizer.dart'; +import 'package:flutter/services.dart'; + +void main () async { + // Set default home. + Widget _defaultHome = Splash(); + WidgetsFlutterBinding.ensureInitialized(); + SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]) + .then((_) { + runApp(Sizer( + builder: (context, orientation, deviceType) { + return MaterialApp( + title: 'Health Care', + theme: ThemeData.light(), + home:_defaultHome, + debugShowCheckedModeBanner: false, + ); + }, + )); + }); +} \ No newline at end of file diff --git a/lib/maps/app_colors.dart b/lib/maps/app_colors.dart new file mode 100644 index 0000000..a470502 --- /dev/null +++ b/lib/maps/app_colors.dart @@ -0,0 +1,32 @@ +import 'package:flutter/material.dart'; +import 'helper.dart'; + +class AppColors { + AppColors._(); + + static const Color primaryColor = Color(0xffed1846); + static const Color secondaryColor = Color(0xff5bcb84); + static const Color tColor = Color(0xfff087ca); + static const Color rColor = Color(0xfff08c87); + static const Color statusColorPending = Color(0xfff8c942); + static const Color statusColorInProgress = Color(0xff587add); + static const Color statusColorConfirm = Color(0xff30d300); + static const Color pageBgColor = Color(0xFFF6F6F6); + static const Color grey100Color = Color(0xFFEEEEEE); + static const Color grey200Color = Color(0xFFEEEEEE); + static const Color grey300Color = Color(0xFFE0E0E0); + static const Color grey400Color = Color(0xFFBDBDBD); + static const Color grey500Color = Color(0xFF9E9E9E); + static const Color grey600Color = Color(0xFF757575); + static const Color grey700Color = Color(0xFF616161); + static const Color grey800Color = Color(0xFF424242); + static const Color grey900Color = Color(0xFF212121); + static const Color errorColor = Color(0xFFD50000); + static const Color error100Color = Color(0xffFF5252); + static const Color mainBgColor = Color(0xfff7f7f7); + static const Color logoColor = Color(0xfff1ea0c); + + static MaterialColor primaryMaterialColor = getSwatch(primaryColor); + static MaterialColor errorMaterialColor = getSwatch(errorColor); + static MaterialColor tableRowMaterialColor = getSwatch(grey500Color); +} diff --git a/lib/maps/app_images.dart b/lib/maps/app_images.dart new file mode 100644 index 0000000..a1d2af5 --- /dev/null +++ b/lib/maps/app_images.dart @@ -0,0 +1,4 @@ +class AppImages { + static const String pickupMarker = "assets/images/pickup_marker.png"; + static const String dropMarker = "assets/images/drop_marker.png"; +} diff --git a/lib/maps/app_sizes.dart b/lib/maps/app_sizes.dart new file mode 100644 index 0000000..734f176 --- /dev/null +++ b/lib/maps/app_sizes.dart @@ -0,0 +1,25 @@ +import 'dart:ui'; + +import 'package:get/get.dart'; + + + +class AppSizes { + // get height and width from getX + static final double deviceHeight = Get.height; + static final double deviceWidth = Get.width; + + static const int height1060 = 1060; + static const int height880 = 880; + static const int height740 = 740; + static const int height490 = 490; + + static const int width1060 = 1060; + static const int width880 = 880; + static const int width740 = 740; + static const int width490 = 490; + + static const int screen720x1280 = 490; + + static final double mapPinSize = (deviceWidth * window.devicePixelRatio); +} diff --git a/lib/maps/helper.dart b/lib/maps/helper.dart new file mode 100644 index 0000000..635611e --- /dev/null +++ b/lib/maps/helper.dart @@ -0,0 +1,34 @@ +import 'package:flutter/material.dart'; + +MaterialColor getSwatch(Color color) { + final hslColor = HSLColor.fromColor(color); + final lightness = hslColor.lightness; + + /// if [500] is the default color, there are at LEAST five + /// steps below [500]. (i.e. 400, 300, 200, 100, 50.) A + /// divisor of 5 would mean [50] is a lightness of 1.0 or + /// a color of #ffffff. A value of six would be near white + /// but not quite. + const lowDivisor = 6; + + /// if [500] is the default color, there are at LEAST four + /// steps above [500]. A divisor of 4 would mean [900] is + /// a lightness of 0.0 or color of #000000 + const highDivisor = 5; + + final lowStep = (1.0 - lightness) / lowDivisor; + final highStep = lightness / highDivisor; + + return MaterialColor(color.value, { + 50: (hslColor.withLightness(lightness + (lowStep * 5))).toColor(), + 100: (hslColor.withLightness(lightness + (lowStep * 4))).toColor(), + 200: (hslColor.withLightness(lightness + (lowStep * 3))).toColor(), + 300: (hslColor.withLightness(lightness + (lowStep * 2))).toColor(), + 400: (hslColor.withLightness(lightness + lowStep)).toColor(), + 500: (hslColor.withLightness(lightness)).toColor(), + 600: (hslColor.withLightness(lightness - highStep)).toColor(), + 700: (hslColor.withLightness(lightness - (highStep * 2))).toColor(), + 800: (hslColor.withLightness(lightness - (highStep * 3))).toColor(), + 900: (hslColor.withLightness(lightness - (highStep * 4))).toColor(), + }); +} diff --git a/lib/maps/location_controller.dart b/lib/maps/location_controller.dart new file mode 100644 index 0000000..e3ccd5a --- /dev/null +++ b/lib/maps/location_controller.dart @@ -0,0 +1,120 @@ +import 'dart:developer'; +import 'dart:ui' as ui; + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:location/location.dart'; + +import 'app_images.dart'; +import 'app_sizes.dart'; +import 'permission_alert.dart'; + +class LocationController extends GetxController { + Location location = Location(); + + // final Rx locationPosition = const LatLng(0.0, 0.0).obs; + /*final Rx locationPosition = + const LatLng(12.90618717, 77.5844983).obs;*/ + final Rx locationPosition = + const LatLng(0, 0).obs; + + bool locationServiceActive = true; + + BitmapDescriptor? pickupMarker; + BitmapDescriptor? dropMarker; + + @override + void onInit() async { + + await _getBytesFromAsset(AppImages.pickupMarker, AppSizes.mapPinSize * 0.1); + await _getBytesFromAsset(AppImages.dropMarker, AppSizes.mapPinSize * 0.05); + + super.onInit(); + refreshToLiveLocation(); + } + + Future _getBytesFromAsset(String path, double size) async { + ByteData data = await rootBundle.load(path); + ui.Codec codec = await ui.instantiateImageCodec( + data.buffer.asUint8List(), + targetWidth: size.toInt(), + allowUpscaling: true, + ); + ui.FrameInfo fi = await codec.getNextFrame(); + if (path == AppImages.pickupMarker) { + pickupMarker = BitmapDescriptor.fromBytes( + (await fi.image.toByteData(format: ui.ImageByteFormat.png))! + .buffer + .asUint8List()); + } else if (path == AppImages.dropMarker) { + dropMarker = BitmapDescriptor.fromBytes( + (await fi.image.toByteData(format: ui.ImageByteFormat.png))! + .buffer + .asUint8List()); + } else {} + } + + refreshToLiveLocation() async { + log("initiating"); + bool serviceEnabled; + + PermissionStatus permissionGranted; + + serviceEnabled = await location.serviceEnabled(); + + if (!serviceEnabled) { + serviceEnabled = await location.requestService(); + locationPosition.value = null; + return; + } + log("permission check"); + permissionGranted = await location.hasPermission(); + + if (permissionGranted == PermissionStatus.denied) { + permissionGranted = await location.requestPermission(); + if (permissionGranted != PermissionStatus.granted) { + showPermissionAlertDialog( + requestMsg: + "Location access needed. Go to Android settings, tap App permissions and tap Allow.", + barrierDismissible: false, + ); + } else { + await location.changeSettings( + accuracy: LocationAccuracy.high, + interval: 2000, + distanceFilter: 2); + + location.onLocationChanged.listen((LocationData currentLocation) async { + var lat = currentLocation.latitude; + var long = currentLocation.longitude; + if (lat != null && long != null) { + locationPosition.value = LatLng( + lat, + long, + ); + log("live location ${locationPosition.value}"); + } + }); + } + } else { + await location.changeSettings( + accuracy: LocationAccuracy.high, + interval: 2000, + distanceFilter: 2); + + location.onLocationChanged.listen((LocationData currentLocation) async { + var lat = currentLocation.latitude; + var long = currentLocation.longitude; + if (lat != null && long != null) { + locationPosition.value = LatLng( + lat, + long, + ); + log("live location ${locationPosition.value}"); + } + }); + } + } +} diff --git a/lib/maps/order_tracking_page.dart b/lib/maps/order_tracking_page.dart new file mode 100644 index 0000000..7de249a --- /dev/null +++ b/lib/maps/order_tracking_page.dart @@ -0,0 +1,252 @@ +import 'dart:async'; +import 'dart:developer'; +import 'dart:math'; +import 'package:flutter/material.dart'; +import 'package:flutter_polyline_points/flutter_polyline_points.dart'; +import 'package:get/get.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:location/location.dart'; +import 'location_controller.dart'; + + +class OrderTrackingPage extends StatefulWidget { + var lat; + var lng; + var d_lat; + var d_lng; + var u_address; + + OrderTrackingPage({ + this.lat, + this.lng, + this.d_lat, + this.d_lng, + this.u_address + + }); + + @override + OrderTrackingPageState createState() => OrderTrackingPageState(); +} + +class OrderTrackingPageState extends State { + final Completer mapController = Completer(); + PolylinePoints polylinePoints = PolylinePoints(); + double latitude=0; + double longitude=0; + double d_latitude=0; + double d_longitude=0; + String u_address = ''; + LocationData? currentLocation; + + + String googleAPiKey ="AIzaSyDJpK9RVhlBejtJu9xSGfneuTN6HOfJgSM"; + + Set markers = {}; + Map polylines = {}; + + late LatLng startLocation ; + late LatLng user_location; + LocationController locationController = Get.put(LocationController()); + double distance = 0.0; + + + @override + void initState() { + super.initState(); + latitude=widget.lat; + longitude=widget.lng; + d_latitude=widget.d_lat; + d_longitude=widget.d_lng; + u_address=widget.u_address; + + + user_location = LatLng(widget.lat,widget.lng); + startLocation = LatLng(widget.d_lat,widget.d_lng); + + LatLng delivery_Location = LatLng(widget.d_lat,widget.d_lng); + + //LatLng endLocation = LatLng(17.4968,78.3614); + + ever(locationController.locationPosition, (value) { + if (value != null) { + // log("${value.latitude} ${value.longitude}"); + var latitude = value.latitude; + var longitude = value.longitude; + startLocation = LatLng(widget.d_lat, widget.d_lng); + getDirections(user_location); + } + }); + getDirections(user_location); //fetch direction polylines from Google API + } + + getDirections(user_location) async { + markers.clear(); + + markers.add(Marker( + markerId: MarkerId(startLocation.toString()), + position: startLocation, + infoWindow: const InfoWindow( + title: 'Starting Point', + snippet: 'Start Marker', + ), + icon: locationController.pickupMarker ?? BitmapDescriptor.defaultMarker, + )); + + markers.add(Marker( + markerId: MarkerId(user_location.toString()), + position: user_location, //position of marker + infoWindow: const InfoWindow( + title: 'Destination Point ', + snippet: 'Destination Marker', + ), + icon: locationController.dropMarker ?? BitmapDescriptor.defaultMarker, + )); + + List polylineCoordinates = []; + + PolylineResult result = await polylinePoints.getRouteBetweenCoordinates( + googleAPiKey, + PointLatLng(startLocation.latitude, startLocation.longitude), + PointLatLng(user_location.latitude, user_location.longitude), + travelMode: TravelMode.driving, + ); + + if (result.points.isNotEmpty) { + for (var point in result.points) { + polylineCoordinates.add(LatLng(point.latitude, point.longitude)); + } + } else { + // log(result.errorMessage ?? "Something went wrong"); + } + +//polulineCoordinates is the List of longitute and latidtude. + double totalDistance = 0; + for(var i = 0; i < polylineCoordinates.length-1; i++){ + totalDistance += calculateDistance( + polylineCoordinates[i].latitude, + polylineCoordinates[i].longitude, + polylineCoordinates[i+1].latitude, + polylineCoordinates[i+1].longitude); + } + print(totalDistance); + + setState(() { + distance = totalDistance; + }); + + addPolyLine(polylineCoordinates); + } + + addPolyLine(List polylineCoordinates) async { + PolylineId id = const PolylineId("poly"); + Polyline polyline = Polyline( + polylineId: id, + color: Colors.deepPurpleAccent, + points: polylineCoordinates, + width:8, + ); + polylines[id] =polyline; + + var position = CameraPosition( + target: LatLng(latitude,longitude), + zoom: 16); + + final GoogleMapController controller = await mapController.future; + controller.animateCamera(CameraUpdate.newCameraPosition(position)); + + setState(() {}); + } + + + double calculateDistance(lat1, lon1, lat2, lon2){ + var p = 0.017453292519943295; + var a = 0.5 - cos((lat2 - lat1) * p)/2 + + cos(lat1 * p) * cos(lat2 * p) * + (1 - cos((lon2 - lon1) * p))/2; + return 12742 * asin(sqrt(a)); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Stack( + children: [ + GoogleMap( + //Map widget from google_maps_flutter package + zoomGesturesEnabled: true, + //enable Zoom in, out on map + initialCameraPosition: CameraPosition( + //innital position in map + target: startLocation, //initial position + zoom: 8.0, //initial zoom level + ), + + markers: markers, + //markers to show on map + polylines: Set.of(polylines.values), + //polylines + mapType: MapType.normal, + //map type + onMapCreated: (controller) { + //method called when map is created + if (!mapController.isCompleted) { + mapController.complete(controller); + } + }, + ), + + const SizedBox( + height: 95, + ), + + Positioned( + bottom: 100, + left: 50, + child: Container( + child: Card( + child: Container( + padding: EdgeInsets.all(20), + child: Text("Total Distance: " + distance.toStringAsFixed(2) + " KM", + style: TextStyle(fontSize: 20, fontWeight:FontWeight.bold)) + ), + ) + )), + /* const SizedBox( + height: 30, + ), + Positioned( + bottom: 80, + left: 0, + child: Container( + child: Card( + child: Container( + padding: EdgeInsets.all(20), + + child: Text("User Address: " + u_address.toString() , + style: TextStyle(fontSize: 15, fontWeight:FontWeight.bold,overflow: TextOverflow.ellipsis)) + ), + ) + )), + const SizedBox( + height: 30, + ), + Positioned( + bottom: 10, + left: 50, + child: Container( + child: Card( + child: Container( + padding: EdgeInsets.all(20), + child: Text("Total DistanceD: " + distance.toStringAsFixed(2) + " KM", + style: TextStyle(fontSize: 20, fontWeight:FontWeight.bold)) + ), + ) + )),*/ + ], + ) + + ); + + } +} diff --git a/lib/maps/padding_type_enum.dart b/lib/maps/padding_type_enum.dart new file mode 100644 index 0000000..dd8ab72 --- /dev/null +++ b/lib/maps/padding_type_enum.dart @@ -0,0 +1 @@ +enum PaddingType { symmetric, only } diff --git a/lib/maps/permission_alert.dart b/lib/maps/permission_alert.dart new file mode 100644 index 0000000..7a1fb34 --- /dev/null +++ b/lib/maps/permission_alert.dart @@ -0,0 +1,53 @@ +import 'package:flutter/material.dart'; +import 'package:get/get_core/src/get_main.dart'; +import 'package:get/get_navigation/get_navigation.dart'; +import 'package:permission_handler/permission_handler.dart'; + +import 'app_colors.dart'; +import 'primary_button.dart'; +import 'primary_text.dart'; + +void showPermissionAlertDialog({ + String title = "Need Permission", + required String requestMsg, + bool barrierDismissible = true, +}) { + Get.defaultDialog( + title: title, + middleText: "", + backgroundColor: Colors.white, + contentPadding: const EdgeInsets.only(top: 30, bottom: 30.0), + radius: 10, + barrierDismissible: barrierDismissible, + titlePadding: const EdgeInsets.only(top: 15), + titleStyle: const TextStyle( + color: AppColors.grey900Color, + fontSize: 18, + fontWeight: FontWeight.w600, + ), + /*cancel: PrimaryButton( + title: "DISMISS", + onPressed: () {}, + textSize: AppSizes.font_13, + bgColor: AppColors.grey500Color, + ),*/ + confirm: PrimaryButton( + title: "GO TO SETTINGS", + onPressed: () { + openAppSettings(); + Get.back(); + }, + textSize: 13, + ), + content: Padding( + padding: const EdgeInsets.symmetric(horizontal: 8.0), + child: PrimaryText( + requestMsg, + textAlign: TextAlign.center, + fontColor: AppColors.grey800Color, + fontSize: 15, + fontWeight: FontWeight.w500, + ), + ), + ); +} diff --git a/lib/maps/primary_button.dart b/lib/maps/primary_button.dart new file mode 100644 index 0000000..cfe2beb --- /dev/null +++ b/lib/maps/primary_button.dart @@ -0,0 +1,65 @@ +import 'package:flutter/material.dart'; + +import 'app_colors.dart'; +import 'primary_text.dart'; + + +class PrimaryButton extends StatelessWidget { + final String title; + final VoidCallback onPressed; + final double verticalPadding; + final bool textAllCaps; + final double textSize; + final FontWeight textWeight; + final Color textColor; + final TextDecoration textDecoration; + final int letterSpacing; + final bool isResponsive; + final Color bgColor; + final double horizontalPadding; + + const PrimaryButton({ + Key? key, + required this.title, + required this.onPressed, + this.verticalPadding = 10.0, + this.textAllCaps = true, + this.textSize = 14, + this.textWeight = FontWeight.w500, + this.textColor = Colors.white, + this.textDecoration = TextDecoration.none, + this.letterSpacing = 1, + this.isResponsive = true, + this.bgColor = AppColors.primaryColor, + this.horizontalPadding = 25.0, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Card( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(40), + ), + color: bgColor, + child: InkWell( + onTap: onPressed, + child: Padding( + padding: EdgeInsets.symmetric( + vertical: verticalPadding, + horizontal: horizontalPadding, + ), + child: PrimaryText( + textAllCaps ? title.toUpperCase() : title, + // title.toUpperCase(), + textAlign: TextAlign.center, + fontSize: textSize, + fontWeight: textWeight, + fontColor: textColor, + textDecoration: textDecoration, + isResponsive: isResponsive, + ), + ), + ), + ); + } +} diff --git a/lib/maps/primary_text.dart b/lib/maps/primary_text.dart new file mode 100644 index 0000000..ec70048 --- /dev/null +++ b/lib/maps/primary_text.dart @@ -0,0 +1,88 @@ +import 'package:flutter/material.dart'; + +import 'app_sizes.dart'; +import 'padding_type_enum.dart'; + + +class PrimaryText extends StatelessWidget { + final String text; + final Color? fontColor; + final double fontSize; + final FontWeight fontWeight; + final double horizontalPadding; + final double verticalPadding; + final TextAlign textAlign; + final bool isResponsive; + final TextDecoration? textDecoration; + final PaddingType paddingType; + final double leftPadding; + final double rightPadding; + final double lineHeight; + final FontStyle fontStyle; + final TextOverflow textOverflow; + final bool textAllCaps; + final double letterSpacing; + + const PrimaryText( + this.text, { + Key? key, + this.fontColor = Colors.black, + this.fontSize = 16, + this.fontWeight = FontWeight.w600, + this.horizontalPadding = 0.0, + this.verticalPadding = 0.0, + this.textAlign = TextAlign.start, + this.isResponsive = true, + this.textDecoration, + this.paddingType = PaddingType.symmetric, + this.leftPadding = 0.0, + this.rightPadding = 0.0, + this.lineHeight = 1.5, + this.fontStyle = FontStyle.normal, + this.textOverflow = TextOverflow.visible, + this.textAllCaps = false, + this.letterSpacing = 0, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Padding( + padding: paddingType == PaddingType.symmetric + ? EdgeInsets.symmetric( + horizontal: horizontalPadding, + vertical: verticalPadding, + ) + : EdgeInsets.only( + left: leftPadding, + right: rightPadding, + ), + child: Text( + textAllCaps ? text.toUpperCase() : text, + style: TextStyle( + fontSize: responsiveTextSize(), + fontWeight: fontWeight, + color: fontColor, + decoration: textDecoration, + height: lineHeight, + fontStyle: fontStyle, + letterSpacing: letterSpacing, + ), + textScaleFactor: 1, + textAlign: textAlign, + ), + ); + } + + double responsiveTextSize() { + if (isResponsive) { + if (AppSizes.deviceHeight < AppSizes.height490) { + return fontSize - 3; + } else if (AppSizes.deviceHeight < AppSizes.height740) { + return fontSize - 2; + } else if (AppSizes.deviceHeight < AppSizes.height880) { + return fontSize - 1; + } + } + return fontSize; + } +} diff --git a/lib/preloader.dart b/lib/preloader.dart new file mode 100644 index 0000000..a0724f2 --- /dev/null +++ b/lib/preloader.dart @@ -0,0 +1,33 @@ +import 'package:flutter/material.dart'; +import 'package:healthcare_user/settings.dart'; + +class Dialogs { + static Future showLoadingDialog(BuildContext context, GlobalKey key) async { + return showDialog( + context: context, + barrierDismissible: false, + builder: (BuildContext context) { + return new WillPopScope( + onWillPop: () async => false, + child: SimpleDialog( + key: key, + backgroundColor: Colors.white, + children: [ + Center( + child: Column(children: [ + CircularProgressIndicator( + valueColor: new AlwaysStoppedAnimation(AppBarGradient_1), + ), + SizedBox( + height: 10, + ), + Text( + AppSettings.preloadText, + style: PreloaderText(), + ), + ]), + ) + ])); + }); + } +} \ No newline at end of file diff --git a/lib/settings.dart b/lib/settings.dart new file mode 100644 index 0000000..e8593bb --- /dev/null +++ b/lib/settings.dart @@ -0,0 +1,467 @@ +import 'dart:io'; +import 'dart:typed_data'; +import 'package:flutter/material.dart'; +import 'dart:convert'; +import 'package:flutter/services.dart'; +import 'package:healthcare_user/preloader.dart'; +import 'package:http/http.dart' as http; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:intl/intl.dart'; +import 'package:flutter_styled_toast/flutter_styled_toast.dart'; +import 'dart:async'; +import 'package:geolocator/geolocator.dart'; +import 'package:dio/dio.dart'; + +const Color primaryColor = Color(0XFF1786A3); +const Color greyColor = Color(0XFF8F8E8E); +const Color textFieldStartColor = Colors.grey; +const Color screenBackgroundColor = Color(0XFFEAF6FF); +const Color screenBackgroundColord = Colors.black12; +const Color dashboardbackground = Color(0XFFF5F5F5); + +Color AppBarGradient_1 = Color(0XFF1258F6); + +TextStyle PreloaderText() { + return TextStyle(color: Colors.blueAccent); +} + +TextStyle labelTextStyle() { + return TextStyle(color: primaryColor, fontSize: 12); +} + +TextStyle haveMotorTextStyle() { + return TextStyle(color: Colors.red, fontSize: 12,fontWeight: FontWeight.bold); +} + +TextStyle textButtonStyle() { + return TextStyle(color: primaryColor, fontSize: 15); +} + +TextStyle iconBelowTextStyle() { + return TextStyle(fontSize: 10, color: primaryColor); +} + +TextStyle valuesTextStyle() { + return TextStyle( + fontSize: 12, + fontWeight: FontWeight.bold, + ); +} + +TextStyle startAndStopHeading() { + return TextStyle( + fontSize: 14, + fontWeight: FontWeight.bold, + color: primaryColor, + ); +} +Text capacitySuffixText() { + return Text('in Ltrs.'); +} +Text dimensionSuffixText() { + return Text('in fts'); +} + +TextStyle dashboardTextStyle() { + return TextStyle( + color: primaryColor, + fontSize: 12, + fontWeight: FontWeight.bold, + ); +} + +TextStyle labelTextStyleBold() { + return TextStyle( + color: primaryColor, + fontWeight: FontWeight.bold, + ); +} + +TextStyle serverIssueTextStyle() { + return TextStyle(color: Colors.red, fontSize: 15); +} +TextStyle bottomSheetValuesTextStyle() { + return TextStyle(fontSize: 12,fontWeight: FontWeight.bold,overflow: TextOverflow.ellipsis,); +} +TextStyle wrapTextStyle() { + return TextStyle(color:primaryColor,fontSize: 12,fontWeight: FontWeight.bold,overflow: TextOverflow.ellipsis,); +} +TextStyle wrapTextStyleBlack() { + return TextStyle(color:Colors.black,fontSize: 12,fontWeight: FontWeight.bold,overflow: TextOverflow.ellipsis,); +} +TextStyle withoutWrapTextStyle() { + return TextStyle(color:primaryColor,fontSize: 12,fontWeight: FontWeight.bold,); +} + +final GlobalKey preloaderWindowKey = new GlobalKey(); +Future preloaderWindow(BuildContext context) async { + try { + Dialogs.showLoadingDialog(context, preloaderWindowKey); + } catch (error) {} +} + +class AppSettings { + static SharedPreferences sharedPreferences = + SharedPreferences.getInstance() as SharedPreferences; + static String userName = ''; + static String userAddress = ''; + static String email = ''; + static String phoneNumber = ''; + static String accessToken = ''; + static String customerId = ''; + static double userLatitude = 0; + static double userLongitude = 0; + static String customerIdsign = ''; + static String profileImage = ''; + static List storedPreferenceValidKeys = ['username', 'access_token']; + static String preloadText = 'Please wait'; + static String latitude = ''; + static String longitude = ''; + static bool servicestatus = false; + static bool haspermission = false; + static late LocationPermission permission; + static late Position position; + static String long = "", lat = ""; + late StreamSubscription positionStream; + static String fcmId=''; + static String serverToken='AAAAA66BLaA:APA91bHcmbyiNN8hCL-t-M9oH-u7ZMOl74fcImMM2DQZLgdyY98Wu9XxME-CTPcjpjU6Yy48ouxISrOMb9lpa3PJofh8qciUKMNxV2al-bDvGvPP_VVaH0mrTHzR56hdkGy1Zl-0frDO'; + + + //api urls + static String host = 'http://35.200.129.165:4000/api/'; + static String loginUrl = host + 'login'; + static String signUpUrl = host + 'users'; + static String verifyPhnUrl = host + 'phone'; + + + + + static File? updatedImage; + static String image = ''; + static var api = { + 'signIn': host + '/login', + }; + + /*Formatter*/ + static String formNum(String s) { + var comma = NumberFormat('#,##,###', 'en_IN'); + return comma.format( + int.parse(s), + ); + } + + static String formDouble(String s) { + var comma = NumberFormat('#,##,###.##', 'en_IN'); + return comma.format( + double.parse(s), + ); + } + + + + /* Preloader */ + static GlobalKey preLoaderKey = new GlobalKey(); + static Future preLoaderDialog(BuildContext context) async { + try { + preLoaderKey = new GlobalKey(); + Dialogs.showLoadingDialog(context, preLoaderKey); + } catch (error) {} + } + + ////request headers with content type + static Future> buildRequestHeaders() async { + Map _headers = new Map(); + _headers[HttpHeaders.contentTypeHeader] = 'application/json'; + _headers['Authorization'] = accessToken; + return _headers; + } + + //request headers without content type + static Future> buildPutRequestHeaders() async { + Map _headers = new Map(); + _headers['Authorization'] = accessToken; + return _headers; + } + + static Future> buildPutRequestHeadersForResetToken() async { + Map _headers = new Map(); + return _headers; + } + + // Shared preferences save,get and clear data + static saveData(String _key, _value, type) async { + sharedPreferences = await SharedPreferences.getInstance(); + + if (type == 'STRING') { + await sharedPreferences.setString(_key, _value.toString()); + } else if (type == 'INTEGER') { + await sharedPreferences.setInt(_key, _value); + } else if (type == 'BOOL') { + await sharedPreferences.setBool(_key, _value); + } else if (type == 'DOUBLE') { + await sharedPreferences.setDouble(_key, _value); + } + } + + static getData(String _key, type) async { + sharedPreferences = await SharedPreferences.getInstance(); + if (type == 'STRING') { + return sharedPreferences.getString(_key) ?? ''; + } else if (type == 'INTEGER') { + return sharedPreferences.getInt(_key) ?? -1; + } else if (type == 'BOOL') { + return sharedPreferences.getBool(_key) ?? -1; + } else if (type == 'DOUBLE') { + return sharedPreferences.getDouble(_key) ?? -1; + } + } + + static clearSharedPreferences() async { + sharedPreferences = await SharedPreferences.getInstance(); + await sharedPreferences.clear(); + } + + /*Sign in check*/ + static Future isSigIn() async { + bool isSignInCheck = true; + for (var eachKey in storedPreferenceValidKeys) { + if (await getData(eachKey, 'STRING') == '') { + isSignInCheck = false; + } + } + return isSignInCheck; + } + + static Future internetConnectivity() async { + try { + final result = await InternetAddress.lookup('google.com'); + if (result.isNotEmpty && result[0].rawAddress.isNotEmpty) { + return true; + } + } on SocketException catch (_) { + return false; + } + return false; + } + + /*Apis Starts here*/ + + static Future login(payload) async { + var response = await http.post(Uri.parse(loginUrl), + body: json.encode(payload), + headers: {'Content-type': 'application/json'}); + + if (response.statusCode == 200) { + try { + var _response = json.decode(response.body); + print(_response['simplydata']['error']); + + if (_response['simplydata']['error'] == false) { + await saveAvailableReportAndLocationsInMemory(_response); + //await saveProfilePic(_response); + return true; + } else { + return false; + } + } catch (e) { + // display error toast + return false; + } + } else { + return false; + } + } + + static Future signUp(payload) async { + var response = await http.post(Uri.parse(signUpUrl), + body: json.encode(payload), + headers: {'Content-type': 'application/json'}); + + if (response.statusCode == 200) { + try { + var _response = json.decode(response.body); + customerIdsign = _response['armintahealthdata']['customerId']; + print(_response); + return true; + } catch (e) { + // display error toast + return false; + } + } else { + return false; + } + } + + static Future verifyPhn(payload) async { + var response = await http.post(Uri.parse(verifyPhnUrl), + body: json.encode(payload), + headers: {'Content-type': 'application/json'}); + + if (response.statusCode == 200) { + try { + var _response = json.decode(response.body); + print(_response); + if (_response['armintahealthdata']['error'] == false) { + return true; + } else { + return false; + } + } catch (e) { + // display error toast + return false; + } + } else { + return false; + } + } + + /*Apis ends here*/ + + //save data local + static Future saveAvailableReportAndLocationsInMemory( + dynamic input) async { + // save login name information + await saveData('username', input['simplydata']['username'], 'STRING'); + await saveData( + 'access_token', input['simplydata']['access_token'], 'STRING'); + await saveData('phone', input['simplydata']['phone'], 'STRING'); + await saveData('email', input['simplydata']['email'][0]['email'], 'STRING'); + await saveData('customerId', input['simplydata']['customerId'], 'STRING'); + await saveData('profile', input['simplydata']['picture'], 'STRING'); + await saveData('user_address', input['simplydata']['address1'], 'STRING'); + await saveData('latitude', input['simplydata']['latitude'], 'DOUBLE'); + await saveData('longitude', input['simplydata']['longitude'], 'DOUBLE'); + await saveData('fcmId', input['simplydata']['fcmId'], 'STRING'); + //latitude,longitude + await loadDataFromMemory(); + } + + static Future saveProfile(dynamic image) async { + // save login name information + await saveData('profile', image.toString(), 'STRING'); + //await loadDataFromMemory(); + } + + static Uint8List convertBase64Image(String base64String) { + return Base64Decoder().convert(base64String.split(',').last); + } + + static Future loadDataFromMemory() async { + userName = await getData('username', 'STRING'); + accessToken = await getData('access_token', 'STRING'); + email = await getData('email', 'STRING'); + userAddress = await getData('user_address', 'STRING'); + phoneNumber = await getData('phone', 'STRING'); + customerId = await getData('customerId', 'STRING'); + userLatitude = await getData('latitude', 'DOUBLE'); + userLongitude =await getData('longitude', 'DOUBLE'); + fcmId =await getData('fcmId', 'STRING'); + } + + + static Widget noDataUI(String _tabName) { + _tabName = _tabName ?? ''; + return Container( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image( + image: AssetImage('images/no_data.png'), + width: 200, + ), + SizedBox( + height: 8, + ), + Text( + 'There is no data to show you right now.', + style: TextStyle( + fontSize: 12, + color: Colors.grey[600], + fontFamily: 'Swis2', + ), + ), + SizedBox( + height: 5, + ), + Text( + _tabName, + style: TextStyle(fontSize: 15, fontFamily: 'Swis1'), + ), + ], + ), + ); + } + + static appBar(String title) { + title = title ?? ''; + return AppBar( + backgroundColor: primaryColor, + title: Text(title), + ); + } + + /*location*/ + static checkGps() async { + servicestatus = await Geolocator.isLocationServiceEnabled(); + if (servicestatus) { + permission = await Geolocator.checkPermission(); + + if (permission == LocationPermission.denied) { + permission = await Geolocator.requestPermission(); + if (permission == LocationPermission.denied) { + print('Location permissions are denied'); + } else if (permission == LocationPermission.deniedForever) { + print("'Location permissions are permanently denied"); + } else { + haspermission = true; + } + } else { + haspermission = true; + } + + if (haspermission) { + /*setState(() { + //refresh the UI + });*/ + + await getLocation(); + } + } else { + print("GPS Service is not enabled, turn on GPS location"); + } + } + + static getLocation() async { + position = await Geolocator.getCurrentPosition( + desiredAccuracy: LocationAccuracy.high); + /*print(position.longitude); //Output: 80.24599079 + print(position.latitude);*/ //Output: 29.6593457 + + long = await position.longitude.toString(); + lat = await position.latitude.toString(); + + /*setState(() { + //refresh UI + });*/ + + LocationSettings locationSettings = LocationSettings( + accuracy: LocationAccuracy.high, //accuracy of the location data + distanceFilter: 100, //minimum distance (measured in meters) a + //device must move horizontally before an update event is generated; + ); + + StreamSubscription positionStream = + Geolocator.getPositionStream(locationSettings: locationSettings) + .listen((Position position) { + print(position.longitude); //Output: 80.24599079 + print(position.latitude); //Output: 29.6593457 + + long = position.longitude.toString(); + lat = position.latitude.toString(); + + /*setState(() { + //refresh UI on update + });*/ + }); + } +} diff --git a/lib/signup.dart b/lib/signup.dart new file mode 100644 index 0000000..84e9ea9 --- /dev/null +++ b/lib/signup.dart @@ -0,0 +1,774 @@ +import 'package:flutter/material.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:healthcare_user/google_maps_place_picker_mb/google_maps_place_picker.dart'; +import 'package:healthcare_user/keys.dart'; +import 'package:healthcare_user/settings.dart'; +import 'login.dart'; +import 'package:geolocator/geolocator.dart'; +import 'package:geocoding/geocoding.dart'; +import 'package:image_picker/image_picker.dart'; +import 'package:flutter/services.dart'; +import 'dart:io' show File, Platform; +import 'package:google_maps_flutter_android/google_maps_flutter_android.dart'; +import 'package:google_maps_flutter_platform_interface/google_maps_flutter_platform_interface.dart'; +import 'package:location/location.dart' as locationmap; +import 'google_maps_place_picker_mb/src/models/pick_result.dart'; +import 'google_maps_place_picker_mb/src/place_picker.dart'; + + + + +class SignUp extends StatefulWidget { + const SignUp({super.key}); + + @override + State createState() => _SignUpState(); +} + +class _SignUpState extends State { + bool isPwdObscureText=true; + bool isConfirmPwdObscureText = true; + TextEditingController nameController = TextEditingController(); + TextEditingController custmerid = TextEditingController(); + TextEditingController buildingNameController = TextEditingController(); + TextEditingController emailController = TextEditingController(); + TextEditingController mobileNumberController = TextEditingController(); + TextEditingController userAddressDescriptionController = TextEditingController(); + TextEditingController userAddressCapturingController = TextEditingController(); + TextEditingController passwordController = TextEditingController(); + TextEditingController confirmPasswordController = TextEditingController(); + + + String _currentAddress =''; + Position? _currentPosition; + String address1 = ''; + String address2 = ''; + String city = ''; + String state = ''; + String zip = ''; + String country = ''; + double lat=0; + double lng=0; + + + + + + @override + void initState() { + isPwdObscureText = true; + isConfirmPwdObscureText = true; + super.initState(); + } + + + + + + PickResult? selectedPlace; + + bool _mapsInitialized = false; + final String _mapsRenderer = "latest"; + + var kInitialPosition = const LatLng(15.462477, 78.717401); + + locationmap.Location location = locationmap.Location(); + + final GoogleMapsFlutterPlatform mapsImplementation = + GoogleMapsFlutterPlatform.instance; + + void initRenderer() { + if (_mapsInitialized) return; + if (mapsImplementation is GoogleMapsFlutterAndroid) { + switch (_mapsRenderer) { + case "legacy": + (mapsImplementation as GoogleMapsFlutterAndroid) + .initializeWithRenderer(AndroidMapRenderer.legacy); + break; + case "latest": + (mapsImplementation as GoogleMapsFlutterAndroid) + .initializeWithRenderer(AndroidMapRenderer.latest); + break; + } + } + setState(() { + _mapsInitialized = true; + }); + } + + + Future onWillPop() async { + final shouldPop = await showDialog(context: context, builder: (context) { + return AlertDialog( + title: const Text('Do you want to exit app?', + style: TextStyle( + color: primaryColor, + fontSize: 20, + )), + actionsAlignment: MainAxisAlignment.spaceBetween, + actions: [ + TextButton( + onPressed: () { + SystemNavigator.pop(); + }, + child: const Text('Yes', + style: TextStyle( + color: primaryColor, + fontSize: 20, + )), + ), + TextButton( + onPressed: () { + Navigator.of(context).pop(false); + }, + child: const Text('No', + style: TextStyle( + color: primaryColor, + fontSize: 20, + )), + ), + ], + ); + }, + ); + return shouldPop!; + } + + + + + @override + Widget build(BuildContext context) { + return WillPopScope( + onWillPop:()async=>onWillPop(), + child: Scaffold( + body: Stack(children: [ + Container( + decoration: const BoxDecoration( + image: DecorationImage(image: AssetImage("images/background.png"), fit: BoxFit.cover,), + ), + ), + GestureDetector( + onTap: () { + FocusManager.instance.primaryFocus?.unfocus(); + }, + child: SafeArea( + child: SingleChildScrollView( + child: Column( + children: [ + + SizedBox( + height: 20, + ), + Container( + //width: double.infinity, + child: Image( + image: const AssetImage('images/logo.png'), + height: MediaQuery.of(context).size.height * .18, + )), + + SizedBox( + height: 05, + ), + Container( + padding: const EdgeInsets.all(10), + child: TextFormField( + cursorColor: greyColor, + controller: nameController, + textCapitalization: TextCapitalization.sentences, + decoration: const InputDecoration( + prefixIcon: Icon( + Icons.person, + color: primaryColor, + ), + border: OutlineInputBorder( + borderSide: BorderSide(color: primaryColor)), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: primaryColor), + ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide(color: primaryColor), + ), + labelText: 'Name', + labelStyle: TextStyle( + color: greyColor, //<-- SEE HERE + ), + ), + ), + ), //name + + const SizedBox( + height: 5, + ), + Container( + padding: const EdgeInsets.all(10), + child: TextFormField( + cursorColor: greyColor, + controller: mobileNumberController, + keyboardType: TextInputType.phone, + maxLength: 10, + decoration: const InputDecoration( + prefixIcon: Icon( + Icons.phone_android, + color: primaryColor, + ), + border: OutlineInputBorder( + borderSide: BorderSide(color: primaryColor)), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: primaryColor), + ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide(color: primaryColor), + ), + labelText: 'Enter Mobile Number', + labelStyle: TextStyle( + color: greyColor, //<-- SEE HERE + ), + ), + ), + ), //mobile + + /* const SizedBox( + height: 5, + ), + Container( + padding: const EdgeInsets.all(10), + child: TextFormField( + cursorColor: greyColor, + controller: emailController, + keyboardType: TextInputType.emailAddress, + decoration: const InputDecoration( + prefixIcon: Icon( + Icons.email, + color: primaryColor, + ), + border: OutlineInputBorder( + borderSide: BorderSide(color: primaryColor)), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: primaryColor), + ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide(color: primaryColor), + ), + labelText: 'Enter your email', + labelStyle: TextStyle( + color: greyColor, //<-- SEE HERE + ), + ), + ), + ),*/ + const SizedBox( + height: 5, + ), + GestureDetector( + child: Container( + padding: const EdgeInsets.all(10), + child: TextFormField( + cursorColor: greyColor, + controller: userAddressCapturingController, + onTap:() + { + + //============================================================================================= + + location.serviceEnabled().then((value) { + if (value) { + initRenderer(); + Navigator.push( + context, + MaterialPageRoute( + builder: (context) { + return PlacePicker( + resizeToAvoidBottomInset: false, + hintText: "Find a place ...", + searchingText: "Please wait ...", + selectText: "Select place", + outsideOfPickAreaText: "Place not in area", + initialPosition: kInitialPosition, + useCurrentLocation: true, + selectInitialPosition: true, + usePinPointingSearch: true, + usePlaceDetailSearch: true, + zoomGesturesEnabled: true, + zoomControlsEnabled: true, + onMapCreated: (GoogleMapController controller) {}, + onPlacePicked: (PickResult result) { + setState(() { + selectedPlace = result; + lat=selectedPlace!.geometry!.location.lat; + lng=selectedPlace!.geometry!.location.lng; + if(selectedPlace!.types!.length==1){ + userAddressCapturingController.text = + selectedPlace!.formattedAddress!; + } + else{ + userAddressCapturingController.text =selectedPlace!.name!+', '+selectedPlace!.formattedAddress!; + } + Navigator.of(context).pop(); + }); + }, + onMapTypeChanged: (MapType mapType) {}, + apiKey: Platform.isAndroid + ? APIKeys.androidApiKey + : APIKeys.iosApiKey, + forceAndroidLocationManager: true, + ); + }, + ), + ); + } else { + showGeneralDialog( + context: context, + pageBuilder: (context, x, y) { + return Scaffold( + backgroundColor: Colors.grey.withOpacity(.5), + body: Center( + child: Container( + width: double.infinity, + height: 150, + padding: + const EdgeInsets.symmetric(horizontal: 20), + child: Card( + child: Padding( + padding: const EdgeInsets.all(10.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Text( + "Please enable the location", + style: TextStyle( + fontSize:18, + fontWeight: FontWeight.w500, + ), + ), + const SizedBox( + height: 20, + ), + ElevatedButton( + onPressed: () { + Navigator.pop(context); + }, + child: const Text("Cancel"), + ), + ], + ), + ), + ), + ), + ), + ); + }, + ); + } + }); + + + + //===================================================================================== + + // _getCurrentPosition(); + }, + keyboardType: TextInputType.streetAddress, + readOnly: true, + decoration: const InputDecoration( + prefixIcon: Icon( + Icons.location_on_rounded, + color: primaryColor, + ), + border: OutlineInputBorder( + borderSide: BorderSide(color: primaryColor)), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: primaryColor), + ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide(color: primaryColor), + ), + labelText: 'Click to select address(map)', + labelStyle: TextStyle( + color: greyColor, //<-- SEE HERE + ), + ), + + ), + ), + /* onTap: () + { + },*///address + ),//address capturing + const SizedBox( + height: 5, + ), + Container( + padding: const EdgeInsets.all(10), + child: TextFormField( + cursorColor: greyColor, + controller: userAddressDescriptionController, + keyboardType: TextInputType.emailAddress, + decoration: const InputDecoration( + prefixIcon: Icon( + Icons.plagiarism_outlined, + color: primaryColor, + ), + border: OutlineInputBorder( + borderSide: BorderSide(color: primaryColor)), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: primaryColor), + ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide(color: primaryColor), + ), + labelText: 'Address Description (Ex: Flat No)', + labelStyle: TextStyle( + color: greyColor, //<-- SEE HERE + ), + ), + ), + ),//address description + + + + const SizedBox( + height: 5, + ), + + Container( + padding: const EdgeInsets.all(10), + child: TextFormField( + cursorColor: greyColor, + obscureText: isPwdObscureText, + controller: passwordController, + decoration: InputDecoration( + labelText: 'Create Password', + prefixIcon: const Icon( + Icons.lock, + color: primaryColor, + ), + labelStyle: const TextStyle( + color: greyColor, //<-- SEE HERE + ), + border: const OutlineInputBorder( + borderSide: BorderSide(color: primaryColor)), + focusedBorder: const OutlineInputBorder( + borderSide: BorderSide(color: primaryColor), + ), + enabledBorder: const OutlineInputBorder( + borderSide: BorderSide(color: primaryColor), + ), + suffixIcon: IconButton( + icon: Icon( + Icons.visibility_off_outlined, + color: isPwdObscureText?greyColor:primaryColor, + ), + onPressed: () { + setState(() { + isPwdObscureText = !isPwdObscureText; + }); + }, + ), + ), + ), + ), //pwd + const SizedBox( + height: 5, + ), + Container( + width:MediaQuery.of(context).size.width * .99, + height: 55, + padding: const EdgeInsets.fromLTRB(3, 0, 3, 0), + child: ElevatedButton( + style: ElevatedButton.styleFrom( + primary: primaryColor, // background + onPrimary: Colors.white, // foreground + ), + onPressed: () async { + if (nameController.text != '' && + passwordController.text != '' && + mobileNumberController.text != '') { + AppSettings.preLoaderDialog(context); + + var payload = new Map(); + payload["username"] = nameController.text.toString(); + payload["password"] = + passwordController.text.toString(); + payload["phone"] = + mobileNumberController.text.toString(); + + payload["firstName"] = ''; payload["emails"] = [ + {"email": emailController.text.toString()} + ]; + payload["lastName"] = ''; + payload["address1"] = userAddressCapturingController.text; + payload["address2"] = address2; + payload["city"] = city; + payload["state"] = state; + payload["zip"] = zip; + payload["country"] = country; + payload["notes"] = ''; + payload["latitude"] = lat; + payload["longitude"] = lng; + payload["fcmId"] = AppSettings.fcmId; + + bool signUpStatus = await AppSettings.signUp(payload); + + try { + if (signUpStatus) { + var phoneVerifyPayload = new Map(); + + phoneVerifyPayload["phoneVerificationCode"] = + "11111"; + phoneVerifyPayload["phone"] = + mobileNumberController.text.toString(); + + bool verifyPhnStatus = + await AppSettings.verifyPhn(phoneVerifyPayload); + + + + if (verifyPhnStatus) { + Navigator.of(context, rootNavigator: true).pop(); + /*AppSettings.longSuccessToast( + "User SignUp Successfully");*/ + showUserSignUSuccessDialog(); + /* await Navigator.push( + context, + MaterialPageRoute( + builder: (context) => const Login()), + );*/ + + } else { + Navigator.of(context, rootNavigator: true).pop(); + /*AppSettings.longFailedToast( + "Phone verification failed");*/ + } + } + else { + Navigator.of(context, rootNavigator: true).pop(); + /*AppSettings.longFailedToast( + "Mobile number already exists");*/ + } + } catch (exception) { + print(exception); + Navigator.of(context, rootNavigator: true).pop(); + //AppSettings.longFailedToast("Please enter valid details"); + } + } else { + //.longFailedToast("details should not be empty"); + } + }, + child: Text('Sign Up'), + )),//login button + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Text( + 'Are you a Member?', + style: TextStyle( + color: primaryColor, + ), + ), + TextButton( + child: const Text( + 'Login?', + style: TextStyle( + fontSize: 20, + color: greyColor, + decoration: TextDecoration.underline, + ), + ), + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => const Login()), + ); + }, + ) + ], + ), + ], + ), + )), + ), + ])), ); + } + + + showUserSignUSuccessDialog() async { + + custmerid.text=AppSettings.customerIdsign; + + return showDialog( + context: context, + barrierDismissible: false, + useSafeArea: true, + builder: (BuildContext context) { + return StatefulBuilder( + builder: (BuildContext context, StateSetter setState) { + return AlertDialog( + title: const Text('User SignUp Successfully!!'), + content: SingleChildScrollView( + child: ListBody( + children: [ + Container( + padding: const EdgeInsets.fromLTRB(10, 10, 10, 0), + child: TextFormField( + cursorColor: greyColor, + readOnly: true, + controller: nameController, + decoration: const InputDecoration( + prefixIcon: Icon( + Icons.person, + color: greyColor, + ), + border: OutlineInputBorder( + borderSide: BorderSide(color: greyColor)), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: greyColor), + ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide(color: greyColor), + ), + labelText: 'User Name', + labelStyle: TextStyle( + color: greyColor, //<-- SEE HERE + ), + ), + ), + ), + + + Container( + padding: const EdgeInsets.fromLTRB(10, 10, 10, 0), + child: TextFormField( + cursorColor: greyColor, + readOnly: true, + controller:custmerid, + decoration: const InputDecoration( + prefixIcon: Icon( + Icons.person, + color: greyColor, + ), + border: OutlineInputBorder( + borderSide: BorderSide(color: greyColor)), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: greyColor), + ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide(color: greyColor), + ), + labelText: 'User Id', + labelStyle: TextStyle( + color: greyColor, //<-- SEE HERE + ), + ), + ), + ), + + // AppSettings.saveAvailableReportAndLocationsInMemorysignup('customerId'); + const SizedBox( + height:10, + ), + Container( + padding: const EdgeInsets.fromLTRB(10, 10, 10, 0), + child: TextFormField( + cursorColor: greyColor, + readOnly: true, + controller: buildingNameController, + decoration: const InputDecoration( + prefixIcon: Icon( + Icons.home_filled, + color: greyColor, + ), + border: OutlineInputBorder( + borderSide: BorderSide(color: greyColor)), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: greyColor), + ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide(color: greyColor), + ), + labelText: 'Building Name', + labelStyle: TextStyle( + color: greyColor, //<-- SEE HERE + ), + ), + ), + ), + const SizedBox( + height:10, + ), + Container( + padding: const EdgeInsets.fromLTRB(10, 10, 10, 0), + child: TextFormField( + cursorColor: greyColor, + readOnly: true, + controller: emailController, + decoration: const InputDecoration( + prefixIcon: Icon( + Icons.email, + color: greyColor, + ), + border: OutlineInputBorder( + borderSide: BorderSide(color: greyColor)), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: greyColor), + ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide(color: greyColor), + ), + labelText: 'Email', + labelStyle: TextStyle( + color: greyColor, //<-- SEE HERE + ), + ), + ), + ), + ], + ), + ), + actions: [ + + Container( + width: 400, + height: 50, + padding: const EdgeInsets.fromLTRB(10, 0, 10, 0), + child: ElevatedButton( + style: ElevatedButton.styleFrom( + primary: primaryColor, // background + onPrimary: Colors.white, // foreground + ), + onPressed: () async{ + await Navigator.push( + context, + MaterialPageRoute( + builder: (context) => const Login()), + ); + + }, + child: const Text('OK'), + )), + + + /* Padding( + // padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 16 ), + padding: EdgeInsets.only(left:75, bottom: 20, right: 70, top:10), + child: TextFormField( + cursorColor: greyColor, + controller: nameController, + decoration: const InputDecoration( + border: UnderlineInputBorder(), + labelText: 'Enter your username', + ), + ), + ),*/ + + + ], + ); + }); + }, + ); + } + + +} diff --git a/lib/splash_screen.dart b/lib/splash_screen.dart new file mode 100644 index 0000000..ca7ee45 --- /dev/null +++ b/lib/splash_screen.dart @@ -0,0 +1,88 @@ +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:healthcare_user/settings.dart'; +import 'package:healthcare_user/signup.dart'; + +import 'dashboard.dart'; + +void main() async{ + SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); + //FirebaseMessaging.onBackgroundMessage(_messageHandler); + runApp(new Splash()); +} + + + class Splash extends StatelessWidget { + + + // This widget is the root of your application. + @override + Widget build(BuildContext context) { + return MaterialApp( + debugShowCheckedModeBanner: false, + title: 'Water Management', + theme: new ThemeData( + primarySwatch: Colors.blue, + ), + home: new SplashScreen(), + ); + } +} + +class SplashScreen extends StatefulWidget { + const SplashScreen({ super.key }); + + @override + State createState() => _SplashScreenState(); +} +class _SplashScreenState extends State { + + + Widget _defaultHome = new SignUp(); + + + void loginCheck()async{ + + bool _result = await AppSettings.isSigIn(); + + if (_result) { + await AppSettings.loadDataFromMemory(); + AppSettings.fcmId=await AppSettings.getData('FCM_TOKEN', 'STRING'); + // await AppSettings.getProfile(); + _defaultHome = new Dashboard(); + } + } + + + + @override + void initState() { + + loginCheck(); + super.initState(); + Future.delayed( + const Duration(seconds: 3), + () => Navigator.push( + context, + MaterialPageRoute(builder: (context) => _defaultHome), + )); + } + @override + Widget build(BuildContext context) { + return Scaffold( + body: Stack( + children: [ + Container( + decoration: const BoxDecoration( + image: DecorationImage(image: AssetImage("images/splashscreen.png"), fit: BoxFit.cover,), + ), + ), + + ], + ) + ); + } + +} \ No newline at end of file diff --git a/linux/.gitignore b/linux/.gitignore new file mode 100644 index 0000000..d3896c9 --- /dev/null +++ b/linux/.gitignore @@ -0,0 +1 @@ +flutter/ephemeral diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt new file mode 100644 index 0000000..71fc25a --- /dev/null +++ b/linux/CMakeLists.txt @@ -0,0 +1,138 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.10) +project(runner LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "healthcare_user") +# The unique GTK application identifier for this application. See: +# https://wiki.gnome.org/HowDoI/ChooseApplicationID +set(APPLICATION_ID "com.arminta.healthcare_user") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(SET CMP0063 NEW) + +# Load bundled libraries from the lib/ directory relative to the binary. +set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") + +# Root filesystem for cross-building. +if(FLUTTER_TARGET_PLATFORM_SYSROOT) + set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +endif() + +# Define build configuration options. +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") +endif() + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_14) + target_compile_options(${TARGET} PRIVATE -Wall -Werror) + target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") + target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) + +add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") + +# Define the application target. To change its name, change BINARY_NAME above, +# not the value here, or `flutter run` will no longer work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} + "main.cc" + "my_application.cc" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add dependency libraries. Add any application-specific dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter) +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) + +# Only the install-generated bundle's copy of the executable will launch +# correctly, since the resources must in the right relative locations. To avoid +# people trying to run the unbundled copy, put it in a subdirectory instead of +# the default top-level location. +set_target_properties(${BINARY_NAME} + PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" +) + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# By default, "installing" just makes a relocatable bundle in the build +# directory. +set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +# Start with a clean build bundle directory every time. +install(CODE " + file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") + " COMPONENT Runtime) + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) + install(FILES "${bundled_library}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endforeach(bundled_library) + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") + install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() diff --git a/linux/flutter/CMakeLists.txt b/linux/flutter/CMakeLists.txt new file mode 100644 index 0000000..d5bd016 --- /dev/null +++ b/linux/flutter/CMakeLists.txt @@ -0,0 +1,88 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.10) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. + +# Serves the same purpose as list(TRANSFORM ... PREPEND ...), +# which isn't available in 3.10. +function(list_prepend LIST_NAME PREFIX) + set(NEW_LIST "") + foreach(element ${${LIST_NAME}}) + list(APPEND NEW_LIST "${PREFIX}${element}") + endforeach(element) + set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) +endfunction() + +# === Flutter Library === +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) +pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) +pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) + +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "fl_basic_message_channel.h" + "fl_binary_codec.h" + "fl_binary_messenger.h" + "fl_dart_project.h" + "fl_engine.h" + "fl_json_message_codec.h" + "fl_json_method_codec.h" + "fl_message_codec.h" + "fl_method_call.h" + "fl_method_channel.h" + "fl_method_codec.h" + "fl_method_response.h" + "fl_plugin_registrar.h" + "fl_plugin_registry.h" + "fl_standard_message_codec.h" + "fl_standard_method_codec.h" + "fl_string_codec.h" + "fl_value.h" + "fl_view.h" + "flutter_linux.h" +) +list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") +target_link_libraries(flutter INTERFACE + PkgConfig::GTK + PkgConfig::GLIB + PkgConfig::GIO +) +add_dependencies(flutter flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CMAKE_CURRENT_BINARY_DIR}/_phony_ + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" + ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} +) diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc new file mode 100644 index 0000000..f6f23bf --- /dev/null +++ b/linux/flutter/generated_plugin_registrant.cc @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include + +void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); + url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); +} diff --git a/linux/flutter/generated_plugin_registrant.h b/linux/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..e0f0a47 --- /dev/null +++ b/linux/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void fl_register_plugins(FlPluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake new file mode 100644 index 0000000..f16b4c3 --- /dev/null +++ b/linux/flutter/generated_plugins.cmake @@ -0,0 +1,24 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + url_launcher_linux +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/linux/main.cc b/linux/main.cc new file mode 100644 index 0000000..e7c5c54 --- /dev/null +++ b/linux/main.cc @@ -0,0 +1,6 @@ +#include "my_application.h" + +int main(int argc, char** argv) { + g_autoptr(MyApplication) app = my_application_new(); + return g_application_run(G_APPLICATION(app), argc, argv); +} diff --git a/linux/my_application.cc b/linux/my_application.cc new file mode 100644 index 0000000..b258da3 --- /dev/null +++ b/linux/my_application.cc @@ -0,0 +1,104 @@ +#include "my_application.h" + +#include +#ifdef GDK_WINDOWING_X11 +#include +#endif + +#include "flutter/generated_plugin_registrant.h" + +struct _MyApplication { + GtkApplication parent_instance; + char** dart_entrypoint_arguments; +}; + +G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) + +// Implements GApplication::activate. +static void my_application_activate(GApplication* application) { + MyApplication* self = MY_APPLICATION(application); + GtkWindow* window = + GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); + + // Use a header bar when running in GNOME as this is the common style used + // by applications and is the setup most users will be using (e.g. Ubuntu + // desktop). + // If running on X and not using GNOME then just use a traditional title bar + // in case the window manager does more exotic layout, e.g. tiling. + // If running on Wayland assume the header bar will work (may need changing + // if future cases occur). + gboolean use_header_bar = TRUE; +#ifdef GDK_WINDOWING_X11 + GdkScreen* screen = gtk_window_get_screen(window); + if (GDK_IS_X11_SCREEN(screen)) { + const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); + if (g_strcmp0(wm_name, "GNOME Shell") != 0) { + use_header_bar = FALSE; + } + } +#endif + if (use_header_bar) { + GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); + gtk_widget_show(GTK_WIDGET(header_bar)); + gtk_header_bar_set_title(header_bar, "healthcare_user"); + gtk_header_bar_set_show_close_button(header_bar, TRUE); + gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); + } else { + gtk_window_set_title(window, "healthcare_user"); + } + + gtk_window_set_default_size(window, 1280, 720); + gtk_widget_show(GTK_WIDGET(window)); + + g_autoptr(FlDartProject) project = fl_dart_project_new(); + fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); + + FlView* view = fl_view_new(project); + gtk_widget_show(GTK_WIDGET(view)); + gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); + + gtk_widget_grab_focus(GTK_WIDGET(view)); +} + +// Implements GApplication::local_command_line. +static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { + MyApplication* self = MY_APPLICATION(application); + // Strip out the first argument as it is the binary name. + self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); + + g_autoptr(GError) error = nullptr; + if (!g_application_register(application, nullptr, &error)) { + g_warning("Failed to register: %s", error->message); + *exit_status = 1; + return TRUE; + } + + g_application_activate(application); + *exit_status = 0; + + return TRUE; +} + +// Implements GObject::dispose. +static void my_application_dispose(GObject* object) { + MyApplication* self = MY_APPLICATION(object); + g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); + G_OBJECT_CLASS(my_application_parent_class)->dispose(object); +} + +static void my_application_class_init(MyApplicationClass* klass) { + G_APPLICATION_CLASS(klass)->activate = my_application_activate; + G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; + G_OBJECT_CLASS(klass)->dispose = my_application_dispose; +} + +static void my_application_init(MyApplication* self) {} + +MyApplication* my_application_new() { + return MY_APPLICATION(g_object_new(my_application_get_type(), + "application-id", APPLICATION_ID, + "flags", G_APPLICATION_NON_UNIQUE, + nullptr)); +} diff --git a/linux/my_application.h b/linux/my_application.h new file mode 100644 index 0000000..72271d5 --- /dev/null +++ b/linux/my_application.h @@ -0,0 +1,18 @@ +#ifndef FLUTTER_MY_APPLICATION_H_ +#define FLUTTER_MY_APPLICATION_H_ + +#include + +G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, + GtkApplication) + +/** + * my_application_new: + * + * Creates a new Flutter-based application. + * + * Returns: a new #MyApplication. + */ +MyApplication* my_application_new(); + +#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/macos/.gitignore b/macos/.gitignore new file mode 100644 index 0000000..746adbb --- /dev/null +++ b/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/macos/Flutter/Flutter-Debug.xcconfig b/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 0000000..c2efd0b --- /dev/null +++ b/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/Flutter-Release.xcconfig b/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 0000000..c2efd0b --- /dev/null +++ b/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 0000000..1952d66 --- /dev/null +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,30 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + +import cloud_firestore +import device_info_plus_macos +import firebase_core +import firebase_messaging +import flutter_local_notifications +import geolocator_apple +import location +import package_info_plus_macos +import shared_preferences_foundation +import url_launcher_macos + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + FLTFirebaseFirestorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseFirestorePlugin")) + DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) + FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) + FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin")) + FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin")) + GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin")) + LocationPlugin.register(with: registry.registrar(forPlugin: "LocationPlugin")) + FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin")) + SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) + UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) +} diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..7ad7fd1 --- /dev/null +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,572 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 51; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* healthcare_user.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "healthcare_user.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* healthcare_user.app */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* healthcare_user.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..b7fbb66 --- /dev/null +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner.xcworkspace/contents.xcworkspacedata b/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macos/Runner/AppDelegate.swift b/macos/Runner/AppDelegate.swift new file mode 100644 index 0000000..d53ef64 --- /dev/null +++ b/macos/Runner/AppDelegate.swift @@ -0,0 +1,9 @@ +import Cocoa +import FlutterMacOS + +@NSApplicationMain +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } +} diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..a2ec33f --- /dev/null +++ b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_1024.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..82b6f9d9a33e198f5747104729e1fcef999772a5 GIT binary patch literal 102994 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ⅅ8MglG&ER{i5lN315cO?EdHNLrg? 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 z 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 Pe7HEdAEg|=c=LY&YVNkY literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 0000000000000000000000000000000000000000..13b35eba55c6dabc3aac36f33d859266c18fa0d0 GIT binary patch literal 5680 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 literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3f5fa40fb3d1e0710331a48de5d256da3f275d GIT binary patch literal 520 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 literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1632cfddf3d9dade342351e627a0a75609fb46 GIT binary patch literal 2218 zcmV;b2vzrqP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuE6iGxuRCodHTWf3-RTMruyW6Fu zQYeUM04eX6D5c0FCjKKPrco1(K`<0SL=crI{PC3-^hZU0kQie$gh-5!7z6SH6Q0J% zqot*`H1q{R5fHFYS}dje@;kG=v$L0(yY0?wY2%*c?A&{2?!D*x?m71{of2gv!$5|C z3>qG_BW}7K_yUcT3A5C6QD<+{aq?x;MAUyAiJn#Jv8_zZtQ{P zTRzbL3U9!qVuZzS$xKU10KiW~Bgdcv1-!uAhQxf3a7q+dU6lj?yoO4Lq4TUN4}h{N z*fIM=SS8|C2$(T>w$`t@3Tka!(r!7W`x z-isCVgQD^mG-MJ;XtJuK3V{Vy72GQ83KRWsHU?e*wrhKk=ApIYeDqLi;JI1e zuvv}5^Dc=k7F7?nm3nIw$NVmU-+R>> zyqOR$-2SDpJ}Pt;^RkJytDVXNTsu|mI1`~G7yw`EJR?VkGfNdqK9^^8P`JdtTV&tX4CNcV4 z&N06nZa??Fw1AgQOUSE2AmPE@WO(Fvo`%m`cDgiv(fAeRA%3AGXUbsGw{7Q`cY;1BI#ac3iN$$Hw z0LT0;xc%=q)me?Y*$xI@GRAw?+}>=9D+KTk??-HJ4=A>`V&vKFS75@MKdSF1JTq{S zc1!^8?YA|t+uKigaq!sT;Z!&0F2=k7F0PIU;F$leJLaw2UI6FL^w}OG&!;+b%ya1c z1n+6-inU<0VM-Y_s5iTElq)ThyF?StVcebpGI znw#+zLx2@ah{$_2jn+@}(zJZ{+}_N9BM;z)0yr|gF-4=Iyu@hI*Lk=-A8f#bAzc9f z`Kd6K--x@t04swJVC3JK1cHY-Hq+=|PN-VO;?^_C#;coU6TDP7Bt`;{JTG;!+jj(` zw5cLQ-(Cz-Tlb`A^w7|R56Ce;Wmr0)$KWOUZ6ai0PhzPeHwdl0H(etP zUV`va_i0s-4#DkNM8lUlqI7>YQLf)(lz9Q3Uw`)nc(z3{m5ZE77Ul$V%m)E}3&8L0 z-XaU|eB~Is08eORPk;=<>!1w)Kf}FOVS2l&9~A+@R#koFJ$Czd%Y(ENTV&A~U(IPI z;UY+gf+&6ioZ=roly<0Yst8ck>(M=S?B-ys3mLdM&)ex!hbt+ol|T6CTS+Sc0jv(& z7ijdvFwBq;0a{%3GGwkDKTeG`b+lyj0jjS1OMkYnepCdoosNY`*zmBIo*981BU%%U z@~$z0V`OVtIbEx5pa|Tct|Lg#ZQf5OYMUMRD>Wdxm5SAqV2}3!ceE-M2 z@O~lQ0OiKQp}o9I;?uxCgYVV?FH|?Riri*U$Zi_`V2eiA>l zdSm6;SEm6#T+SpcE8Ro_f2AwxzI z44hfe^WE3!h@W3RDyA_H440cpmYkv*)6m1XazTqw%=E5Xv7^@^^T7Q2wxr+Z2kVYr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner/Configs/AppInfo.xcconfig b/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 0000000..8479f2b --- /dev/null +++ b/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = healthcare_user + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = com.arminta.healthcareUser + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2023 com.arminta. All rights reserved. diff --git a/macos/Runner/Configs/Debug.xcconfig b/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 0000000..36b0fd9 --- /dev/null +++ b/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Release.xcconfig b/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 0000000..dff4f49 --- /dev/null +++ b/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Warnings.xcconfig b/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 0000000..42bcbf4 --- /dev/null +++ b/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/macos/Runner/DebugProfile.entitlements b/macos/Runner/DebugProfile.entitlements new file mode 100644 index 0000000..dddb8a3 --- /dev/null +++ b/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.server + + + diff --git a/macos/Runner/Info.plist b/macos/Runner/Info.plist new file mode 100644 index 0000000..4789daa --- /dev/null +++ b/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/macos/Runner/MainFlutterWindow.swift b/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 0000000..2722837 --- /dev/null +++ b/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController.init() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/macos/Runner/Release.entitlements b/macos/Runner/Release.entitlements new file mode 100644 index 0000000..852fa1a --- /dev/null +++ b/macos/Runner/Release.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.app-sandbox + + + diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 0000000..ccc3789 --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,1095 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _flutterfire_internals: + dependency: transitive + description: + name: _flutterfire_internals + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.2" + archive: + dependency: transitive + description: + name: archive + url: "https://pub.dartlang.org" + source: hosted + version: "3.3.7" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.1" + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.9.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + card_swiper: + dependency: "direct dev" + description: + name: card_swiper + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.4" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" + cli_util: + dependency: transitive + description: + name: cli_util + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.5" + clock: + dependency: transitive + description: + name: clock + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + cloud_firestore: + dependency: "direct dev" + description: + name: cloud_firestore + url: "https://pub.dartlang.org" + source: hosted + version: "4.8.0" + cloud_firestore_platform_interface: + dependency: transitive + description: + name: cloud_firestore_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "5.15.0" + cloud_firestore_web: + dependency: transitive + description: + name: cloud_firestore_web + url: "https://pub.dartlang.org" + source: hosted + version: "3.6.0" + cloudinary_public: + dependency: "direct dev" + description: + name: cloudinary_public + url: "https://pub.dartlang.org" + source: hosted + version: "0.21.0" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.16.0" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.1" + cross_file: + dependency: transitive + description: + name: cross_file + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.3+4" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.2" + csslib: + dependency: transitive + description: + name: csslib + url: "https://pub.dartlang.org" + source: hosted + version: "0.17.2" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.5" + date_time_picker: + dependency: "direct dev" + description: + name: date_time_picker + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + dbus: + dependency: transitive + description: + name: dbus + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.3" + device_info_plus: + dependency: "direct dev" + description: + name: device_info_plus + url: "https://pub.dartlang.org" + source: hosted + version: "3.2.4" + device_info_plus_linux: + dependency: transitive + description: + name: device_info_plus_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + device_info_plus_macos: + dependency: transitive + description: + name: device_info_plus_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.3" + device_info_plus_platform_interface: + dependency: transitive + description: + name: device_info_plus_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.6.1" + device_info_plus_web: + dependency: transitive + description: + name: device_info_plus_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + device_info_plus_windows: + dependency: transitive + description: + name: device_info_plus_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + device_information: + dependency: "direct dev" + description: + name: device_information + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.4" + dio: + dependency: "direct dev" + description: + name: dio + url: "https://pub.dartlang.org" + source: hosted + version: "5.2.0+1" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" + file: + dependency: transitive + description: + name: file + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.4" + firebase_core: + dependency: transitive + description: + name: firebase_core + url: "https://pub.dartlang.org" + source: hosted + version: "2.13.1" + firebase_core_platform_interface: + dependency: transitive + description: + name: firebase_core_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "4.8.0" + firebase_core_web: + dependency: transitive + description: + name: firebase_core_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.5.0" + firebase_messaging: + dependency: "direct dev" + description: + name: firebase_messaging + url: "https://pub.dartlang.org" + source: hosted + version: "14.6.2" + firebase_messaging_platform_interface: + dependency: transitive + description: + name: firebase_messaging_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "4.5.2" + firebase_messaging_web: + dependency: transitive + description: + name: firebase_messaging_web + url: "https://pub.dartlang.org" + source: hosted + version: "3.5.2" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_cupertino_datetime_picker: + dependency: "direct dev" + description: + name: flutter_cupertino_datetime_picker + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.0" + flutter_datetime_picker: + dependency: "direct dev" + description: + name: flutter_datetime_picker + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.1" + flutter_device_type: + dependency: "direct dev" + description: + name: flutter_device_type + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.0" + flutter_launcher_icons: + dependency: "direct dev" + description: + name: flutter_launcher_icons + url: "https://pub.dartlang.org" + source: hosted + version: "0.11.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + flutter_local_notifications: + dependency: "direct dev" + description: + name: flutter_local_notifications + url: "https://pub.dartlang.org" + source: hosted + version: "9.9.1" + flutter_local_notifications_linux: + dependency: transitive + description: + name: flutter_local_notifications_linux + url: "https://pub.dartlang.org" + source: hosted + version: "0.5.1" + flutter_local_notifications_platform_interface: + dependency: transitive + description: + name: flutter_local_notifications_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "5.0.0" + flutter_localizations: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.15" + flutter_polyline_points: + dependency: "direct dev" + description: + name: flutter_polyline_points + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + flutter_styled_toast: + dependency: "direct dev" + description: + name: flutter_styled_toast + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" + flutter_svg: + dependency: "direct main" + description: + name: flutter_svg + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.3" + flutter_svg_provider: + dependency: "direct main" + description: + name: flutter_svg_provider + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.3" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + geocoding: + dependency: "direct dev" + description: + name: geocoding + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + geocoding_android: + dependency: transitive + description: + name: geocoding_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + geocoding_ios: + dependency: transitive + description: + name: geocoding_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + geocoding_platform_interface: + dependency: transitive + description: + name: geocoding_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + geolocator: + dependency: "direct main" + description: + name: geolocator + url: "https://pub.dartlang.org" + source: hosted + version: "9.0.2" + geolocator_android: + dependency: transitive + description: + name: geolocator_android + url: "https://pub.dartlang.org" + source: hosted + version: "4.1.8" + geolocator_apple: + dependency: transitive + description: + name: geolocator_apple + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.6" + geolocator_platform_interface: + dependency: transitive + description: + name: geolocator_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.7" + geolocator_web: + dependency: transitive + description: + name: geolocator_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.6" + geolocator_windows: + dependency: transitive + description: + name: geolocator_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.1" + get: + dependency: "direct dev" + description: + name: get + url: "https://pub.dartlang.org" + source: hosted + version: "4.6.5" + google_api_headers: + dependency: "direct main" + description: + name: google_api_headers + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.0" + google_maps: + dependency: transitive + description: + name: google_maps + url: "https://pub.dartlang.org" + source: hosted + version: "6.3.0" + google_maps_flutter: + dependency: "direct main" + description: + name: google_maps_flutter + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.0" + google_maps_flutter_android: + dependency: transitive + description: + name: google_maps_flutter_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.15" + google_maps_flutter_ios: + dependency: transitive + description: + name: google_maps_flutter_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.3" + google_maps_flutter_platform_interface: + dependency: transitive + description: + name: google_maps_flutter_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.7" + google_maps_flutter_web: + dependency: transitive + description: + name: google_maps_flutter_web + url: "https://pub.dartlang.org" + source: hosted + version: "0.5.0+1" + google_maps_place_picker_mb: + dependency: "direct dev" + description: + name: google_maps_place_picker_mb + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0-mb.22" + google_maps_webservice: + dependency: "direct main" + description: + name: google_maps_webservice + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.20-nullsafety.5" + html: + dependency: transitive + description: + name: html + url: "https://pub.dartlang.org" + source: hosted + version: "0.15.3" + http: + dependency: "direct main" + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.13.5" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.2" + image: + dependency: transitive + description: + name: image + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.3" + image_picker: + dependency: "direct dev" + description: + name: image_picker + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.7+5" + image_picker_android: + dependency: transitive + description: + name: image_picker_android + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.6+19" + image_picker_for_web: + dependency: transitive + description: + name: image_picker_for_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.12" + image_picker_ios: + dependency: transitive + description: + name: image_picker_ios + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.7+4" + image_picker_platform_interface: + dependency: transitive + description: + name: image_picker_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.6.4" + imei_plugin: + dependency: "direct dev" + description: + name: imei_plugin + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + intl: + dependency: "direct dev" + description: + name: intl + url: "https://pub.dartlang.org" + source: hosted + version: "0.17.0" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.4" + js_wrapping: + dependency: transitive + description: + name: js_wrapping + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.4" + json_annotation: + dependency: transitive + description: + name: json_annotation + url: "https://pub.dartlang.org" + source: hosted + version: "4.8.0" + lints: + dependency: transitive + description: + name: lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + location: + dependency: "direct main" + description: + name: location + url: "https://pub.dartlang.org" + source: hosted + version: "4.4.0" + location_platform_interface: + dependency: transitive + description: + name: location_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.0" + location_web: + dependency: transitive + description: + name: location_web + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.1" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.12" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.5" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0" + nested: + dependency: transitive + description: + name: nested + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + overlay_support: + dependency: "direct dev" + description: + name: overlay_support + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + package_info_plus: + dependency: transitive + description: + name: package_info_plus + url: "https://pub.dartlang.org" + source: hosted + version: "1.4.2" + package_info_plus_linux: + dependency: transitive + description: + name: package_info_plus_linux + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.5" + package_info_plus_macos: + dependency: transitive + description: + name: package_info_plus_macos + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.0" + package_info_plus_platform_interface: + dependency: transitive + description: + name: package_info_plus_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + package_info_plus_web: + dependency: transitive + description: + name: package_info_plus_web + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.6" + package_info_plus_windows: + dependency: transitive + description: + name: package_info_plus_windows + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.5" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.2" + path_drawing: + dependency: transitive + description: + name: path_drawing + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + path_parsing: + dependency: transitive + description: + name: path_parsing + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.11" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.6" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.7" + permission_handler: + dependency: "direct dev" + description: + name: permission_handler + url: "https://pub.dartlang.org" + source: hosted + version: "10.3.0" + permission_handler_android: + dependency: transitive + description: + name: permission_handler_android + url: "https://pub.dartlang.org" + source: hosted + version: "10.2.3" + permission_handler_apple: + dependency: transitive + description: + name: permission_handler_apple + url: "https://pub.dartlang.org" + source: hosted + version: "9.1.0" + permission_handler_platform_interface: + dependency: transitive + description: + name: permission_handler_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "3.10.0" + permission_handler_windows: + dependency: transitive + description: + name: permission_handler_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.2" + petitparser: + dependency: transitive + description: + name: petitparser + url: "https://pub.dartlang.org" + source: hosted + version: "5.1.0" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.4" + pointycastle: + dependency: transitive + description: + name: pointycastle + url: "https://pub.dartlang.org" + source: hosted + version: "3.7.3" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.4" + provider: + dependency: "direct main" + description: + name: provider + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.5" + sanitize_html: + dependency: transitive + description: + name: sanitize_html + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + shared_preferences: + dependency: "direct dev" + description: + name: shared_preferences + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.2" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.4" + shared_preferences_foundation: + dependency: transitive + description: + name: shared_preferences_foundation + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.2" + shared_preferences_linux: + dependency: transitive + description: + name: shared_preferences_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" + shared_preferences_platform_interface: + dependency: transitive + description: + name: shared_preferences_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" + shared_preferences_web: + dependency: transitive + description: + name: shared_preferences_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" + sizer: + dependency: "direct dev" + description: + name: sizer + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.15" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.9.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + stream_transform: + dependency: transitive + description: + name: stream_transform + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.12" + timezone: + dependency: transitive + description: + name: timezone + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.0" + tuple: + dependency: "direct main" + description: + name: tuple + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.2" + universal_io: + dependency: transitive + description: + name: universal_io + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" + url_launcher: + dependency: "direct dev" + description: + name: url_launcher + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.11" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.35" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.4" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.5" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.5" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.2" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.17" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.6" + uuid: + dependency: "direct main" + description: + name: uuid + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.7" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.2" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "2.6.1" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0+3" + xml: + dependency: transitive + description: + name: xml + url: "https://pub.dartlang.org" + source: hosted + version: "5.4.1" + yaml: + dependency: transitive + description: + name: yaml + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.1" +sdks: + dart: ">=2.18.5 <3.0.0" + flutter: ">=3.3.0" diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100644 index 0000000..ebd5493 --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,81 @@ +name: healthcare_user +description: A new Flutter project. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev +version: 1.0.0+1 + +environment: + sdk: '>=2.18.5 <3.0.0' + +dependencies: + flutter: + sdk: flutter + + cupertino_icons: ^1.0.2 + + location: ^4.4.0 + geolocator: ^9.0.2 + google_api_headers: ^1.2.0 + google_maps_flutter: ^2.2.3 + google_maps_webservice: ^0.0.20-nullsafety.5 + http: ^0.13.5 + provider: ^6.0.5 + tuple: ^2.0.1 + uuid: ^3.0.7 + flutter_svg_provider: ^1.0.3 + flutter_svg: ^1.0.1 +dev_dependencies: + flutter_test: + sdk: flutter + + flutter_lints: ^2.0.0 + http: ^0.13.5 + shared_preferences: ^2.0.15 + sizer: ^2.0.11 + geolocator: ^9.0.2 + geocoding: ^2.0.4 + image_picker: ^0.8.6+1 + flutter_launcher_icons: ^0.11.0 + url_launcher: ^6.1.9 + intl: ^0.17.0 + flutter_svg: ^1.0.1 + flutter_styled_toast: ^2.1.3 + google_maps_place_picker_mb: ^2.0.0-mb.22 + flutter_datetime_picker: ^1.5.1 + date_time_picker: ^2.1.0 + flutter_cupertino_datetime_picker: ^3.0.0 + card_swiper: ^2.0.4 + firebase_messaging: ^14.4.1 + flutter_local_notifications: ^9.0.2 + cloud_firestore: ^4.5.2 + flutter_device_type: ^0.4.0 + imei_plugin: ^1.2.0 + device_information: ^0.0.4 + device_info_plus: ^3.2.4 + overlay_support: ^2.1.0 + dio: ^5.1.1 + google_maps_flutter: ^2.2.5 + flutter_polyline_points: ^1.0.0 + get: ^4.6.5 + location: ^4.4.0 + permission_handler: ^10.2.0 + cloudinary_public: ^0.21.0 + + +flutter_icons: + image_path_ios: 'images/logo.png' + image_path_android: 'images/logo.png' + android: true + ios: true + remove_alpha_ios: true + +flutter_launcher_name: + name: "HealthCare" + + +flutter: + + uses-material-design: true + assets: + - images/ + - json/ + - assets/images/ diff --git a/test/widget_test.dart b/test/widget_test.dart new file mode 100644 index 0000000..a60db62 --- /dev/null +++ b/test/widget_test.dart @@ -0,0 +1,31 @@ +// This is a basic Flutter widget test. +// +// To perform an interaction with a widget in your test, use the WidgetTester +// utility in the flutter_test package. For example, you can send tap and scroll +// gestures. You can also use WidgetTester to find child widgets in the widget +// tree, read text, and verify that the values of widget properties are correct. + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:healthcare_user/main.dart'; +import 'package:healthcare_user/splash_screen.dart'; + +void main() { + testWidgets('Counter increments smoke test', (WidgetTester tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget(Splash()); + + // Verify that our counter starts at 0. + expect(find.text('0'), findsOneWidget); + expect(find.text('1'), findsNothing); + + // Tap the '+' icon and trigger a frame. + await tester.tap(find.byIcon(Icons.add)); + await tester.pump(); + + // Verify that our counter has incremented. + expect(find.text('0'), findsNothing); + expect(find.text('1'), findsOneWidget); + }); +} diff --git a/web/favicon.png b/web/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..8aaa46ac1ae21512746f852a42ba87e4165dfdd1 GIT binary patch literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0X7 zltGxWVyS%@P(fs7NJL45ua8x7ey(0(N`6wRUPW#JP&EUCO@$SZnVVXYs8ErclUHn2 zVXFjIVFhG^g!Ppaz)DK8ZIvQ?0~DO|i&7O#^-S~(l1AfjnEK zjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7USFmqf|i<65o z3raHc^AtelCMM;Vme?vOfh>Xph&xL%(-1c06+^uR^q@XSM&D4+Kp$>4P^%3{)XKjo zGZknv$b36P8?Z_gF{nK@`XI}Z90TzwSQO}0J1!f2c(B=V`5aP@1P1a|PZ!4!3&Gl8 zTYqUsf!gYFyJnXpu0!n&N*SYAX-%d(5gVjrHJWqXQshj@!Zm{!01WsQrH~9=kTxW#6SvuapgMqt>$=j#%eyGrQzr zP{L-3gsMA^$I1&gsBAEL+vxi1*Igl=8#8`5?A-T5=z-sk46WA1IUT)AIZHx1rdUrf zVJrJn<74DDw`j)Ki#gt}mIT-Q`XRa2-jQXQoI%w`nb|XblvzK${ZzlV)m-XcwC(od z71_OEC5Bt9GEXosOXaPTYOia#R4ID2TiU~`zVMl08TV_C%DnU4^+HE>9(CE4D6?Fz oujB08i7adh9xk7*FX66dWH6F5TM;?E2b5PlUHx3vIVCg!0Dx9vYXATM literal 0 HcmV?d00001 diff --git a/web/icons/Icon-192.png b/web/icons/Icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..b749bfef07473333cf1dd31e9eed89862a5d52aa GIT binary patch literal 5292 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 literal 0 HcmV?d00001 diff --git a/web/icons/Icon-512.png b/web/icons/Icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..88cfd48dff1169879ba46840804b412fe02fefd6 GIT binary patch literal 8252 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 literal 0 HcmV?d00001 diff --git a/web/icons/Icon-maskable-192.png b/web/icons/Icon-maskable-192.png new file mode 100644 index 0000000000000000000000000000000000000000..eb9b4d76e525556d5d89141648c724331630325d GIT binary patch literal 5594 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 X>c!)3PgKfL&lX^$Z>Cpu&6)6jvi^Z! literal 0 HcmV?d00001 diff --git a/web/icons/Icon-maskable-512.png b/web/icons/Icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..d69c56691fbdb0b7efa65097c7cc1edac12a6d3e GIT binary patch literal 20998 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 MPgg&ebxsLQ025IeI{*Lx literal 0 HcmV?d00001 diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..90f8239 --- /dev/null +++ b/web/index.html @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + healthcare_user + + + + + + + + + + diff --git a/web/manifest.json b/web/manifest.json new file mode 100644 index 0000000..249d14e --- /dev/null +++ b/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "healthcare_user", + "short_name": "healthcare_user", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "A new Flutter project.", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +} diff --git a/windows/.gitignore b/windows/.gitignore new file mode 100644 index 0000000..d492d0d --- /dev/null +++ b/windows/.gitignore @@ -0,0 +1,17 @@ +flutter/ephemeral/ + +# Visual Studio user-specific files. +*.suo +*.user +*.userosscache +*.sln.docstates + +# Visual Studio build-related files. +x64/ +x86/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ diff --git a/windows/CMakeLists.txt b/windows/CMakeLists.txt new file mode 100644 index 0000000..c8e29e2 --- /dev/null +++ b/windows/CMakeLists.txt @@ -0,0 +1,101 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.14) +project(healthcare_user LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "healthcare_user") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(SET CMP0063 NEW) + +# Define build configuration option. +get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(IS_MULTICONFIG) + set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" + CACHE STRING "" FORCE) +else() + if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") + endif() +endif() +# Define settings for the Profile build mode. +set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") +set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") +set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") +set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") + +# Use Unicode for all projects. +add_definitions(-DUNICODE -D_UNICODE) + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_17) + target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") + target_compile_options(${TARGET} PRIVATE /EHsc) + target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") + target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# Support files are copied into place next to the executable, so that it can +# run in place. This is done instead of making a separate bundle (as on Linux) +# so that building and running from within Visual Studio will work. +set(BUILD_BUNDLE_DIR "$") +# Make the "install" step default, as it's required to run. +set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +if(PLUGIN_BUNDLED_LIBRARIES) + install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + CONFIGURATIONS Profile;Release + COMPONENT Runtime) diff --git a/windows/flutter/CMakeLists.txt b/windows/flutter/CMakeLists.txt new file mode 100644 index 0000000..930d207 --- /dev/null +++ b/windows/flutter/CMakeLists.txt @@ -0,0 +1,104 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.14) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. +set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") + +# === Flutter Library === +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "flutter_export.h" + "flutter_windows.h" + "flutter_messenger.h" + "flutter_plugin_registrar.h" + "flutter_texture_registrar.h" +) +list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") +add_dependencies(flutter flutter_assemble) + +# === Wrapper === +list(APPEND CPP_WRAPPER_SOURCES_CORE + "core_implementations.cc" + "standard_codec.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_PLUGIN + "plugin_registrar.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_APP + "flutter_engine.cc" + "flutter_view_controller.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") + +# Wrapper sources needed for a plugin. +add_library(flutter_wrapper_plugin STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} +) +apply_standard_settings(flutter_wrapper_plugin) +set_target_properties(flutter_wrapper_plugin PROPERTIES + POSITION_INDEPENDENT_CODE ON) +set_target_properties(flutter_wrapper_plugin PROPERTIES + CXX_VISIBILITY_PRESET hidden) +target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) +target_include_directories(flutter_wrapper_plugin PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_plugin flutter_assemble) + +# Wrapper sources needed for the runner. +add_library(flutter_wrapper_app STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_APP} +) +apply_standard_settings(flutter_wrapper_app) +target_link_libraries(flutter_wrapper_app PUBLIC flutter) +target_include_directories(flutter_wrapper_app PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_app flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") +set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} + ${PHONY_OUTPUT} + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" + windows-x64 $ + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} +) diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc new file mode 100644 index 0000000..2cd4f25 --- /dev/null +++ b/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,23 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include +#include +#include +#include + +void RegisterPlugins(flutter::PluginRegistry* registry) { + FirebaseCorePluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FirebaseCorePluginCApi")); + GeolocatorWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("GeolocatorWindows")); + PermissionHandlerWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin")); + UrlLauncherWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("UrlLauncherWindows")); +} diff --git a/windows/flutter/generated_plugin_registrant.h b/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..dc139d8 --- /dev/null +++ b/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void RegisterPlugins(flutter::PluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake new file mode 100644 index 0000000..8ae151b --- /dev/null +++ b/windows/flutter/generated_plugins.cmake @@ -0,0 +1,27 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + firebase_core + geolocator_windows + permission_handler_windows + url_launcher_windows +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/windows/runner/CMakeLists.txt b/windows/runner/CMakeLists.txt new file mode 100644 index 0000000..17411a8 --- /dev/null +++ b/windows/runner/CMakeLists.txt @@ -0,0 +1,39 @@ +cmake_minimum_required(VERSION 3.14) +project(runner LANGUAGES CXX) + +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} WIN32 + "flutter_window.cpp" + "main.cpp" + "utils.cpp" + "win32_window.cpp" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" + "Runner.rc" + "runner.exe.manifest" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add preprocessor definitions for the build version. +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") + +# Disable Windows macros that collide with C++ standard library functions. +target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") + +# Add dependency libraries and include directories. Add any application-specific +# dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/windows/runner/Runner.rc b/windows/runner/Runner.rc new file mode 100644 index 0000000..9241438 --- /dev/null +++ b/windows/runner/Runner.rc @@ -0,0 +1,121 @@ +// Microsoft Visual C++ generated resource script. +// +#pragma code_page(65001) +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_APP_ICON ICON "resources\\app_icon.ico" + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) +#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD +#else +#define VERSION_AS_NUMBER 1,0,0,0 +#endif + +#if defined(FLUTTER_VERSION) +#define VERSION_AS_STRING FLUTTER_VERSION +#else +#define VERSION_AS_STRING "1.0.0" +#endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION VERSION_AS_NUMBER + PRODUCTVERSION VERSION_AS_NUMBER + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "CompanyName", "com.arminta" "\0" + VALUE "FileDescription", "healthcare_user" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "healthcare_user" "\0" + VALUE "LegalCopyright", "Copyright (C) 2023 com.arminta. All rights reserved." "\0" + VALUE "OriginalFilename", "healthcare_user.exe" "\0" + VALUE "ProductName", "healthcare_user" "\0" + VALUE "ProductVersion", VERSION_AS_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/windows/runner/flutter_window.cpp b/windows/runner/flutter_window.cpp new file mode 100644 index 0000000..b43b909 --- /dev/null +++ b/windows/runner/flutter_window.cpp @@ -0,0 +1,61 @@ +#include "flutter_window.h" + +#include + +#include "flutter/generated_plugin_registrant.h" + +FlutterWindow::FlutterWindow(const flutter::DartProject& project) + : project_(project) {} + +FlutterWindow::~FlutterWindow() {} + +bool FlutterWindow::OnCreate() { + if (!Win32Window::OnCreate()) { + return false; + } + + RECT frame = GetClientArea(); + + // The size here must match the window dimensions to avoid unnecessary surface + // creation / destruction in the startup path. + flutter_controller_ = std::make_unique( + frame.right - frame.left, frame.bottom - frame.top, project_); + // Ensure that basic setup of the controller was successful. + if (!flutter_controller_->engine() || !flutter_controller_->view()) { + return false; + } + RegisterPlugins(flutter_controller_->engine()); + SetChildContent(flutter_controller_->view()->GetNativeWindow()); + return true; +} + +void FlutterWindow::OnDestroy() { + if (flutter_controller_) { + flutter_controller_ = nullptr; + } + + Win32Window::OnDestroy(); +} + +LRESULT +FlutterWindow::MessageHandler(HWND hwnd, UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + // Give Flutter, including plugins, an opportunity to handle window messages. + if (flutter_controller_) { + std::optional result = + flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, + lparam); + if (result) { + return *result; + } + } + + switch (message) { + case WM_FONTCHANGE: + flutter_controller_->engine()->ReloadSystemFonts(); + break; + } + + return Win32Window::MessageHandler(hwnd, message, wparam, lparam); +} diff --git a/windows/runner/flutter_window.h b/windows/runner/flutter_window.h new file mode 100644 index 0000000..6da0652 --- /dev/null +++ b/windows/runner/flutter_window.h @@ -0,0 +1,33 @@ +#ifndef RUNNER_FLUTTER_WINDOW_H_ +#define RUNNER_FLUTTER_WINDOW_H_ + +#include +#include + +#include + +#include "win32_window.h" + +// A window that does nothing but host a Flutter view. +class FlutterWindow : public Win32Window { + public: + // Creates a new FlutterWindow hosting a Flutter view running |project|. + explicit FlutterWindow(const flutter::DartProject& project); + virtual ~FlutterWindow(); + + protected: + // Win32Window: + bool OnCreate() override; + void OnDestroy() override; + LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, + LPARAM const lparam) noexcept override; + + private: + // The project to run. + flutter::DartProject project_; + + // The Flutter instance hosted by this window. + std::unique_ptr flutter_controller_; +}; + +#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/windows/runner/main.cpp b/windows/runner/main.cpp new file mode 100644 index 0000000..59a9a57 --- /dev/null +++ b/windows/runner/main.cpp @@ -0,0 +1,43 @@ +#include +#include +#include + +#include "flutter_window.h" +#include "utils.h" + +int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, + _In_ wchar_t *command_line, _In_ int show_command) { + // Attach to console when present (e.g., 'flutter run') or create a + // new console when running with a debugger. + if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { + CreateAndAttachConsole(); + } + + // Initialize COM, so that it is available for use in the library and/or + // plugins. + ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); + + flutter::DartProject project(L"data"); + + std::vector command_line_arguments = + GetCommandLineArguments(); + + project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); + + FlutterWindow window(project); + Win32Window::Point origin(10, 10); + Win32Window::Size size(1280, 720); + if (!window.CreateAndShow(L"healthcare_user", origin, size)) { + return EXIT_FAILURE; + } + window.SetQuitOnClose(true); + + ::MSG msg; + while (::GetMessage(&msg, nullptr, 0, 0)) { + ::TranslateMessage(&msg); + ::DispatchMessage(&msg); + } + + ::CoUninitialize(); + return EXIT_SUCCESS; +} diff --git a/windows/runner/resource.h b/windows/runner/resource.h new file mode 100644 index 0000000..66a65d1 --- /dev/null +++ b/windows/runner/resource.h @@ -0,0 +1,16 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Runner.rc +// +#define IDI_APP_ICON 101 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/windows/runner/resources/app_icon.ico b/windows/runner/resources/app_icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c04e20caf6370ebb9253ad831cc31de4a9c965f6 GIT binary patch literal 33772 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 literal 0 HcmV?d00001 diff --git a/windows/runner/runner.exe.manifest b/windows/runner/runner.exe.manifest new file mode 100644 index 0000000..a42ea76 --- /dev/null +++ b/windows/runner/runner.exe.manifest @@ -0,0 +1,20 @@ + + + + + PerMonitorV2 + + + + + + + + + + + + + + + diff --git a/windows/runner/utils.cpp b/windows/runner/utils.cpp new file mode 100644 index 0000000..f5bf9fa --- /dev/null +++ b/windows/runner/utils.cpp @@ -0,0 +1,64 @@ +#include "utils.h" + +#include +#include +#include +#include + +#include + +void CreateAndAttachConsole() { + if (::AllocConsole()) { + FILE *unused; + if (freopen_s(&unused, "CONOUT$", "w", stdout)) { + _dup2(_fileno(stdout), 1); + } + if (freopen_s(&unused, "CONOUT$", "w", stderr)) { + _dup2(_fileno(stdout), 2); + } + std::ios::sync_with_stdio(); + FlutterDesktopResyncOutputStreams(); + } +} + +std::vector GetCommandLineArguments() { + // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. + int argc; + wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); + if (argv == nullptr) { + return std::vector(); + } + + std::vector command_line_arguments; + + // Skip the first argument as it's the binary name. + for (int i = 1; i < argc; i++) { + command_line_arguments.push_back(Utf8FromUtf16(argv[i])); + } + + ::LocalFree(argv); + + return command_line_arguments; +} + +std::string Utf8FromUtf16(const wchar_t* utf16_string) { + if (utf16_string == nullptr) { + return std::string(); + } + int target_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, nullptr, 0, nullptr, nullptr); + std::string utf8_string; + if (target_length == 0 || target_length > utf8_string.max_size()) { + return utf8_string; + } + utf8_string.resize(target_length); + int converted_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, utf8_string.data(), + target_length, nullptr, nullptr); + if (converted_length == 0) { + return std::string(); + } + return utf8_string; +} diff --git a/windows/runner/utils.h b/windows/runner/utils.h new file mode 100644 index 0000000..3879d54 --- /dev/null +++ b/windows/runner/utils.h @@ -0,0 +1,19 @@ +#ifndef RUNNER_UTILS_H_ +#define RUNNER_UTILS_H_ + +#include +#include + +// Creates a console for the process, and redirects stdout and stderr to +// it for both the runner and the Flutter library. +void CreateAndAttachConsole(); + +// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string +// encoded in UTF-8. Returns an empty std::string on failure. +std::string Utf8FromUtf16(const wchar_t* utf16_string); + +// Gets the command line arguments passed in as a std::vector, +// encoded in UTF-8. Returns an empty std::vector on failure. +std::vector GetCommandLineArguments(); + +#endif // RUNNER_UTILS_H_ diff --git a/windows/runner/win32_window.cpp b/windows/runner/win32_window.cpp new file mode 100644 index 0000000..c10f08d --- /dev/null +++ b/windows/runner/win32_window.cpp @@ -0,0 +1,245 @@ +#include "win32_window.h" + +#include + +#include "resource.h" + +namespace { + +constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; + +// The number of Win32Window objects that currently exist. +static int g_active_window_count = 0; + +using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); + +// Scale helper to convert logical scaler values to physical using passed in +// scale factor +int Scale(int source, double scale_factor) { + return static_cast(source * scale_factor); +} + +// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. +// This API is only needed for PerMonitor V1 awareness mode. +void EnableFullDpiSupportIfAvailable(HWND hwnd) { + HMODULE user32_module = LoadLibraryA("User32.dll"); + if (!user32_module) { + return; + } + auto enable_non_client_dpi_scaling = + reinterpret_cast( + GetProcAddress(user32_module, "EnableNonClientDpiScaling")); + if (enable_non_client_dpi_scaling != nullptr) { + enable_non_client_dpi_scaling(hwnd); + FreeLibrary(user32_module); + } +} + +} // namespace + +// Manages the Win32Window's window class registration. +class WindowClassRegistrar { + public: + ~WindowClassRegistrar() = default; + + // Returns the singleton registar instance. + static WindowClassRegistrar* GetInstance() { + if (!instance_) { + instance_ = new WindowClassRegistrar(); + } + return instance_; + } + + // Returns the name of the window class, registering the class if it hasn't + // previously been registered. + const wchar_t* GetWindowClass(); + + // Unregisters the window class. Should only be called if there are no + // instances of the window. + void UnregisterWindowClass(); + + private: + WindowClassRegistrar() = default; + + static WindowClassRegistrar* instance_; + + bool class_registered_ = false; +}; + +WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; + +const wchar_t* WindowClassRegistrar::GetWindowClass() { + if (!class_registered_) { + WNDCLASS window_class{}; + window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); + window_class.lpszClassName = kWindowClassName; + window_class.style = CS_HREDRAW | CS_VREDRAW; + window_class.cbClsExtra = 0; + window_class.cbWndExtra = 0; + window_class.hInstance = GetModuleHandle(nullptr); + window_class.hIcon = + LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); + window_class.hbrBackground = 0; + window_class.lpszMenuName = nullptr; + window_class.lpfnWndProc = Win32Window::WndProc; + RegisterClass(&window_class); + class_registered_ = true; + } + return kWindowClassName; +} + +void WindowClassRegistrar::UnregisterWindowClass() { + UnregisterClass(kWindowClassName, nullptr); + class_registered_ = false; +} + +Win32Window::Win32Window() { + ++g_active_window_count; +} + +Win32Window::~Win32Window() { + --g_active_window_count; + Destroy(); +} + +bool Win32Window::CreateAndShow(const std::wstring& title, + const Point& origin, + const Size& size) { + Destroy(); + + const wchar_t* window_class = + WindowClassRegistrar::GetInstance()->GetWindowClass(); + + const POINT target_point = {static_cast(origin.x), + static_cast(origin.y)}; + HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); + UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); + double scale_factor = dpi / 96.0; + + HWND window = CreateWindow( + window_class, title.c_str(), WS_OVERLAPPEDWINDOW | WS_VISIBLE, + Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), + Scale(size.width, scale_factor), Scale(size.height, scale_factor), + nullptr, nullptr, GetModuleHandle(nullptr), this); + + if (!window) { + return false; + } + + return OnCreate(); +} + +// static +LRESULT CALLBACK Win32Window::WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + if (message == WM_NCCREATE) { + auto window_struct = reinterpret_cast(lparam); + SetWindowLongPtr(window, GWLP_USERDATA, + reinterpret_cast(window_struct->lpCreateParams)); + + auto that = static_cast(window_struct->lpCreateParams); + EnableFullDpiSupportIfAvailable(window); + that->window_handle_ = window; + } else if (Win32Window* that = GetThisFromHandle(window)) { + return that->MessageHandler(window, message, wparam, lparam); + } + + return DefWindowProc(window, message, wparam, lparam); +} + +LRESULT +Win32Window::MessageHandler(HWND hwnd, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + switch (message) { + case WM_DESTROY: + window_handle_ = nullptr; + Destroy(); + if (quit_on_close_) { + PostQuitMessage(0); + } + return 0; + + case WM_DPICHANGED: { + auto newRectSize = reinterpret_cast(lparam); + LONG newWidth = newRectSize->right - newRectSize->left; + LONG newHeight = newRectSize->bottom - newRectSize->top; + + SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, + newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + return 0; + } + case WM_SIZE: { + RECT rect = GetClientArea(); + if (child_content_ != nullptr) { + // Size and position the child window. + MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, + rect.bottom - rect.top, TRUE); + } + return 0; + } + + case WM_ACTIVATE: + if (child_content_ != nullptr) { + SetFocus(child_content_); + } + return 0; + } + + return DefWindowProc(window_handle_, message, wparam, lparam); +} + +void Win32Window::Destroy() { + OnDestroy(); + + if (window_handle_) { + DestroyWindow(window_handle_); + window_handle_ = nullptr; + } + if (g_active_window_count == 0) { + WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); + } +} + +Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { + return reinterpret_cast( + GetWindowLongPtr(window, GWLP_USERDATA)); +} + +void Win32Window::SetChildContent(HWND content) { + child_content_ = content; + SetParent(content, window_handle_); + RECT frame = GetClientArea(); + + MoveWindow(content, frame.left, frame.top, frame.right - frame.left, + frame.bottom - frame.top, true); + + SetFocus(child_content_); +} + +RECT Win32Window::GetClientArea() { + RECT frame; + GetClientRect(window_handle_, &frame); + return frame; +} + +HWND Win32Window::GetHandle() { + return window_handle_; +} + +void Win32Window::SetQuitOnClose(bool quit_on_close) { + quit_on_close_ = quit_on_close; +} + +bool Win32Window::OnCreate() { + // No-op; provided for subclasses. + return true; +} + +void Win32Window::OnDestroy() { + // No-op; provided for subclasses. +} diff --git a/windows/runner/win32_window.h b/windows/runner/win32_window.h new file mode 100644 index 0000000..17ba431 --- /dev/null +++ b/windows/runner/win32_window.h @@ -0,0 +1,98 @@ +#ifndef RUNNER_WIN32_WINDOW_H_ +#define RUNNER_WIN32_WINDOW_H_ + +#include + +#include +#include +#include + +// A class abstraction for a high DPI-aware Win32 Window. Intended to be +// inherited from by classes that wish to specialize with custom +// rendering and input handling +class Win32Window { + public: + struct Point { + unsigned int x; + unsigned int y; + Point(unsigned int x, unsigned int y) : x(x), y(y) {} + }; + + struct Size { + unsigned int width; + unsigned int height; + Size(unsigned int width, unsigned int height) + : width(width), height(height) {} + }; + + Win32Window(); + virtual ~Win32Window(); + + // Creates and shows a win32 window with |title| and position and size using + // |origin| and |size|. New windows are created on the default monitor. Window + // sizes are specified to the OS in physical pixels, hence to ensure a + // consistent size to will treat the width height passed in to this function + // as logical pixels and scale to appropriate for the default monitor. Returns + // true if the window was created successfully. + bool CreateAndShow(const std::wstring& title, + const Point& origin, + const Size& size); + + // Release OS resources associated with window. + void Destroy(); + + // Inserts |content| into the window tree. + void SetChildContent(HWND content); + + // Returns the backing Window handle to enable clients to set icon and other + // window properties. Returns nullptr if the window has been destroyed. + HWND GetHandle(); + + // If true, closing this window will quit the application. + void SetQuitOnClose(bool quit_on_close); + + // Return a RECT representing the bounds of the current client area. + RECT GetClientArea(); + + protected: + // Processes and route salient window messages for mouse handling, + // size change and DPI. Delegates handling of these to member overloads that + // inheriting classes can handle. + virtual LRESULT MessageHandler(HWND window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Called when CreateAndShow is called, allowing subclass window-related + // setup. Subclasses should return false if setup fails. + virtual bool OnCreate(); + + // Called when Destroy is called. + virtual void OnDestroy(); + + private: + friend class WindowClassRegistrar; + + // OS callback called by message pump. Handles the WM_NCCREATE message which + // is passed when the non-client area is being created and enables automatic + // non-client DPI scaling so that the non-client area automatically + // responsponds to changes in DPI. All other messages are handled by + // MessageHandler. + static LRESULT CALLBACK WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Retrieves a class instance pointer for |window| + static Win32Window* GetThisFromHandle(HWND const window) noexcept; + + bool quit_on_close_ = false; + + // window handle for top level window. + HWND window_handle_ = nullptr; + + // window handle for hosted content. + HWND child_content_ = nullptr; +}; + +#endif // RUNNER_WIN32_WINDOW_H_