From 1f9a482d561ccec3a22bd86dc8b73dd1ec64b6e7 Mon Sep 17 00:00:00 2001 From: Darshan Date: Fri, 7 Feb 2025 17:53:36 +0530 Subject: [PATCH] feat: starter kit. --- .gitignore | 45 + .metadata | 45 + README.md | 52 +- analysis_options.yaml | 28 + android/.gitignore | 13 + android/app/build.gradle | 40 + android/app/src/main/AndroidManifest.xml | 42 + .../io/appwrite/flutter/MainActivity.kt | 5 + .../src/main/res/drawable-hdpi/branding.png | Bin 0 -> 7768 bytes .../app/src/main/res/drawable-hdpi/splash.png | Bin 0 -> 5100 bytes .../src/main/res/drawable-mdpi/branding.png | Bin 0 -> 5370 bytes .../app/src/main/res/drawable-mdpi/splash.png | Bin 0 -> 3457 bytes .../main/res/drawable-night-hdpi/branding.png | Bin 0 -> 7945 bytes .../main/res/drawable-night-mdpi/branding.png | Bin 0 -> 5612 bytes .../res/drawable-night-v21/background.png | Bin 0 -> 69 bytes .../drawable-night-v21/launch_background.xml | 12 + .../res/drawable-night-xhdpi/branding.png | Bin 0 -> 8856 bytes .../res/drawable-night-xxhdpi/branding.png | Bin 0 -> 12767 bytes .../res/drawable-night-xxxhdpi/branding.png | Bin 0 -> 12931 bytes .../main/res/drawable-night/background.png | Bin 0 -> 69 bytes .../res/drawable-night/launch_background.xml | 12 + .../src/main/res/drawable-v21/background.png | Bin 0 -> 69 bytes .../res/drawable-v21/launch_background.xml | 12 + .../src/main/res/drawable-xhdpi/branding.png | Bin 0 -> 9093 bytes .../src/main/res/drawable-xhdpi/splash.png | Bin 0 -> 5891 bytes .../src/main/res/drawable-xxhdpi/branding.png | Bin 0 -> 13059 bytes .../src/main/res/drawable-xxhdpi/splash.png | Bin 0 -> 8700 bytes .../main/res/drawable-xxxhdpi/branding.png | Bin 0 -> 13483 bytes .../src/main/res/drawable-xxxhdpi/splash.png | Bin 0 -> 8700 bytes .../app/src/main/res/drawable/background.png | Bin 0 -> 69 bytes .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2188 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1518 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 2885 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 4284 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 5964 bytes .../src/main/res/values-night-v31/styles.xml | 21 + .../app/src/main/res/values-night/styles.xml | 22 + .../app/src/main/res/values-v31/styles.xml | 21 + android/app/src/main/res/values/styles.xml | 16 + android/build.gradle | 18 + android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 5 + android/settings.gradle | 25 + assets/app-icon-mac.png | Bin 0 -> 15718 bytes assets/app-icon.png | Bin 0 -> 5964 bytes assets/branding-dark.png | Bin 0 -> 11868 bytes assets/branding-light.png | Bin 0 -> 12402 bytes assets/splash-logo.png | Bin 0 -> 7307 bytes flutter_launcher_icons.yaml | 15 + flutter_native_splash.yaml | 23 + ios/.gitignore | 34 + ios/Flutter/AppFrameworkInfo.plist | 26 + ios/Flutter/Debug.xcconfig | 2 + ios/Flutter/Release.xcconfig | 2 + ios/Podfile | 44 + ios/Podfile.lock | 53 ++ ios/Runner.xcodeproj/project.pbxproj | 739 ++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 98 +++ .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 1 + .../Icon-App-1024x1024@1x.png | Bin 0 -> 62590 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 479 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 861 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 1306 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 655 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 1280 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 1965 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 861 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 1852 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 2976 bytes .../AppIcon.appiconset/Icon-App-50x50@1x.png | Bin 0 -> 1087 bytes .../AppIcon.appiconset/Icon-App-50x50@2x.png | Bin 0 -> 2380 bytes .../AppIcon.appiconset/Icon-App-57x57@1x.png | Bin 0 -> 1248 bytes .../AppIcon.appiconset/Icon-App-57x57@2x.png | Bin 0 -> 2804 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 2976 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 5059 bytes .../AppIcon.appiconset/Icon-App-72x72@1x.png | Bin 0 -> 1593 bytes .../AppIcon.appiconset/Icon-App-72x72@2x.png | Bin 0 -> 3845 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 1732 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 4053 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 4636 bytes .../BrandingImage.imageset/BrandingImage.png | Bin 0 -> 5370 bytes .../BrandingImage@2x.png | Bin 0 -> 9093 bytes .../BrandingImage@3x.png | Bin 0 -> 13059 bytes .../BrandingImageDark.png | Bin 0 -> 5612 bytes .../BrandingImageDark@2x.png | Bin 0 -> 8856 bytes .../BrandingImageDark@3x.png | Bin 0 -> 12767 bytes .../BrandingImage.imageset/Contents.json | 56 ++ .../LaunchBackground.imageset/Contents.json | 22 + .../LaunchBackground.imageset/background.png | Bin 0 -> 69 bytes .../darkbackground.png | Bin 0 -> 69 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 3457 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 5891 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 8700 bytes .../LaunchImage.imageset/README.md | 5 + ios/Runner/Base.lproj/LaunchScreen.storyboard | 48 ++ ios/Runner/Base.lproj/Main.storyboard | 26 + ios/Runner/Info.plist | 53 ++ ios/Runner/Runner-Bridging-Header.h | 1 + ios/RunnerTests/RunnerTests.swift | 12 + lib/data/models/log.dart | 16 + lib/data/models/project_info.dart | 14 + lib/data/models/status.dart | 2 + lib/data/repository/appwrite_repository.dart | 73 ++ lib/main.dart | 98 +++ lib/ui/components/checkered_background.dart | 92 ++ .../components/collapsible_bottomsheet.dart | 517 +++++++++++ lib/ui/components/connection_line.dart | 109 +++ lib/ui/components/connection_status_view.dart | 175 ++++ lib/ui/components/getting_started_cards.dart | 155 ++++ lib/ui/components/responsive_layout.dart | 38 + lib/ui/components/single_wrap.dart | 14 + lib/ui/components/top_platform_view.dart | 90 ++ lib/ui/icons/appwrite.dart | 178 ++++ lib/utils/app_initializer.dart | 54 ++ lib/utils/extensions/build_context.dart | 24 + lib/utils/extensions/colors.dart | 12 + linux/.gitignore | 1 + linux/CMakeLists.txt | 128 +++ linux/flutter/CMakeLists.txt | 88 ++ linux/flutter/generated_plugin_registrant.cc | 31 + linux/flutter/generated_plugin_registrant.h | 15 + linux/flutter/generated_plugins.cmake | 28 + linux/runner/CMakeLists.txt | 26 + linux/runner/main.cc | 6 + linux/runner/my_application.cc | 130 +++ linux/runner/my_application.h | 18 + macos/.gitignore | 7 + macos/Flutter/Flutter-Debug.xcconfig | 2 + macos/Flutter/Flutter-Release.xcconfig | 2 + macos/Flutter/GeneratedPluginRegistrant.swift | 28 + macos/Podfile | 43 + macos/Podfile.lock | 71 ++ macos/Runner.xcodeproj/project.pbxproj | 803 ++++++++++++++++++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 98 +++ .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + macos/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 68 ++ .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 96949 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 5868 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 530 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 14543 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1110 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 37825 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 2454 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 | 14 + macos/Runner/Info.plist | 32 + macos/Runner/MainFlutterWindow.swift | 15 + macos/Runner/Release.entitlements | 10 + macos/RunnerTests/RunnerTests.swift | 12 + pubspec.lock | 629 ++++++++++++++ pubspec.yaml | 29 + web/favicon.png | Bin 0 -> 399 bytes web/icons/Icon-192.png | Bin 0 -> 5523 bytes web/icons/Icon-512.png | Bin 0 -> 23501 bytes web/icons/Icon-maskable-192.png | Bin 0 -> 5523 bytes web/icons/Icon-maskable-512.png | Bin 0 -> 23501 bytes web/index.html | 147 ++++ web/manifest.json | 35 + web/splash/img/branding-1x.png | Bin 0 -> 5370 bytes web/splash/img/branding-2x.png | Bin 0 -> 9093 bytes web/splash/img/branding-3x.png | Bin 0 -> 13059 bytes web/splash/img/branding-4x.png | Bin 0 -> 13483 bytes web/splash/img/branding-dark-1x.png | Bin 0 -> 5612 bytes web/splash/img/branding-dark-2x.png | Bin 0 -> 8856 bytes web/splash/img/branding-dark-3x.png | Bin 0 -> 12767 bytes web/splash/img/branding-dark-4x.png | Bin 0 -> 12931 bytes web/splash/img/dark-1x.png | Bin 0 -> 3457 bytes web/splash/img/dark-2x.png | Bin 0 -> 5891 bytes web/splash/img/dark-3x.png | Bin 0 -> 8700 bytes web/splash/img/dark-4x.png | Bin 0 -> 8700 bytes web/splash/img/light-1x.png | Bin 0 -> 3457 bytes web/splash/img/light-2x.png | Bin 0 -> 5891 bytes web/splash/img/light-3x.png | Bin 0 -> 8700 bytes web/splash/img/light-4x.png | Bin 0 -> 8700 bytes windows/.gitignore | 17 + windows/CMakeLists.txt | 108 +++ windows/flutter/CMakeLists.txt | 109 +++ .../flutter/generated_plugin_registrant.cc | 26 + windows/flutter/generated_plugin_registrant.h | 15 + windows/flutter/generated_plugins.cmake | 28 + windows/runner/CMakeLists.txt | 40 + windows/runner/Runner.rc | 121 +++ windows/runner/flutter_window.cpp | 71 ++ windows/runner/flutter_window.h | 33 + windows/runner/main.cpp | 43 + windows/runner/resource.h | 16 + windows/runner/resources/app_icon.ico | Bin 0 -> 1073 bytes windows/runner/runner.exe.manifest | 14 + windows/runner/utils.cpp | 65 ++ windows/runner/utils.h | 19 + windows/runner/win32_window.cpp | 288 +++++++ windows/runner/win32_window.h | 102 +++ 208 files changed, 7497 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 .metadata create mode 100644 analysis_options.yaml create mode 100644 android/.gitignore create mode 100644 android/app/build.gradle create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/kotlin/io/appwrite/flutter/MainActivity.kt create mode 100644 android/app/src/main/res/drawable-hdpi/branding.png create mode 100644 android/app/src/main/res/drawable-hdpi/splash.png create mode 100644 android/app/src/main/res/drawable-mdpi/branding.png create mode 100644 android/app/src/main/res/drawable-mdpi/splash.png create mode 100644 android/app/src/main/res/drawable-night-hdpi/branding.png create mode 100644 android/app/src/main/res/drawable-night-mdpi/branding.png create mode 100644 android/app/src/main/res/drawable-night-v21/background.png create mode 100644 android/app/src/main/res/drawable-night-v21/launch_background.xml create mode 100644 android/app/src/main/res/drawable-night-xhdpi/branding.png create mode 100644 android/app/src/main/res/drawable-night-xxhdpi/branding.png create mode 100644 android/app/src/main/res/drawable-night-xxxhdpi/branding.png create mode 100644 android/app/src/main/res/drawable-night/background.png create mode 100644 android/app/src/main/res/drawable-night/launch_background.xml create mode 100644 android/app/src/main/res/drawable-v21/background.png create mode 100644 android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 android/app/src/main/res/drawable-xhdpi/branding.png create mode 100644 android/app/src/main/res/drawable-xhdpi/splash.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/branding.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/splash.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/branding.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/splash.png create mode 100644 android/app/src/main/res/drawable/background.png 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-v31/styles.xml create mode 100644 android/app/src/main/res/values-night/styles.xml create mode 100644 android/app/src/main/res/values-v31/styles.xml create mode 100644 android/app/src/main/res/values/styles.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/app-icon-mac.png create mode 100644 assets/app-icon.png create mode 100644 assets/branding-dark.png create mode 100644 assets/branding-light.png create mode 100644 assets/splash-logo.png create mode 100644 flutter_launcher_icons.yaml create mode 100644 flutter_native_splash.yaml 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/Podfile create mode 100644 ios/Podfile.lock 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-50x50@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.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-72x72@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.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/BrandingImage.imageset/BrandingImage.png create mode 100644 ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImage@2x.png create mode 100644 ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImage@3x.png create mode 100644 ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImageDark.png create mode 100644 ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImageDark@2x.png create mode 100644 ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImageDark@3x.png create mode 100644 ios/Runner/Assets.xcassets/BrandingImage.imageset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png create mode 100644 ios/Runner/Assets.xcassets/LaunchBackground.imageset/darkbackground.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 ios/RunnerTests/RunnerTests.swift create mode 100644 lib/data/models/log.dart create mode 100644 lib/data/models/project_info.dart create mode 100644 lib/data/models/status.dart create mode 100644 lib/data/repository/appwrite_repository.dart create mode 100644 lib/main.dart create mode 100644 lib/ui/components/checkered_background.dart create mode 100644 lib/ui/components/collapsible_bottomsheet.dart create mode 100644 lib/ui/components/connection_line.dart create mode 100644 lib/ui/components/connection_status_view.dart create mode 100644 lib/ui/components/getting_started_cards.dart create mode 100644 lib/ui/components/responsive_layout.dart create mode 100644 lib/ui/components/single_wrap.dart create mode 100644 lib/ui/components/top_platform_view.dart create mode 100644 lib/ui/icons/appwrite.dart create mode 100644 lib/utils/app_initializer.dart create mode 100644 lib/utils/extensions/build_context.dart create mode 100644 lib/utils/extensions/colors.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/runner/CMakeLists.txt create mode 100644 linux/runner/main.cc create mode 100644 linux/runner/my_application.cc create mode 100644 linux/runner/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/Podfile create mode 100644 macos/Podfile.lock 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 macos/RunnerTests/RunnerTests.swift create mode 100644 pubspec.lock create mode 100644 pubspec.yaml 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 web/splash/img/branding-1x.png create mode 100644 web/splash/img/branding-2x.png create mode 100644 web/splash/img/branding-3x.png create mode 100644 web/splash/img/branding-4x.png create mode 100644 web/splash/img/branding-dark-1x.png create mode 100644 web/splash/img/branding-dark-2x.png create mode 100644 web/splash/img/branding-dark-3x.png create mode 100644 web/splash/img/branding-dark-4x.png create mode 100644 web/splash/img/dark-1x.png create mode 100644 web/splash/img/dark-2x.png create mode 100644 web/splash/img/dark-3x.png create mode 100644 web/splash/img/dark-4x.png create mode 100644 web/splash/img/light-1x.png create mode 100644 web/splash/img/light-2x.png create mode 100644 web/splash/img/light-3x.png create mode 100644 web/splash/img/light-4x.png 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..3c88cc5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,45 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.build/ +.buildlog/ +.history +.svn/ +.swiftpm/ +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 +.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..b02a7e4 --- /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 and should not be manually edited. + +version: + revision: "17025dd88227cd9532c33fa78f5250d548d87e9a" + channel: "stable" + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + - platform: android + create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + - platform: ios + create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + - platform: linux + create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + - platform: macos + create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + - platform: web + create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + - platform: windows + create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + + # 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 index 09a565d..6c2f186 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,50 @@ -# starter-for-flutter -Appwrite's starter kit for Flutter 💙 +# Flutter Starter Kit with Appwrite + +Kickstart your Flutter development with this ready-to-use starter project integrated +with [Appwrite](https://appwrite.io). + +This guide will help you quickly set up, customize, and build your Flutter app. + +--- + +## 🚀 Getting Started + +### Clone the Project + +Clone this repository to your local machine using Git or directly from `Android Studio`: + +```bash +git clone https://github.com/appwrite/starter-for-flutter +``` + +Alternatively, open the repository URL in `Android Studio` to clone it directly. + +--- + +## 🛠️ Development Guide + +1. **Configure Appwrite** + Navigate to `lib/data/repository/appwrite_repository.dart` and update the values to match your + Appwrite project credentials. + +2. **Customize as Needed** + Modify the starter kit to suit your app's requirements. Adjust UI, features, or backend + integrations as per your needs. + +3. **Run the App** + Select a target device (emulator or a connected physical device) in `Android Studio`, and + click **Run** to start the app. + +--- + +## 📦 Building for Production + +Follow the official Flutter guide on deploying an app to +production : https://docs.flutter.dev/deployment + +--- + +## 💡 Additional Notes + +- This starter project is designed to streamline your Android development with Appwrite. +- Refer to the [Appwrite Documentation](https://appwrite.io/docs) for detailed integration guidance. \ No newline at end of file diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 0000000..0d29021 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,28 @@ +# 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.dev/lints. + # + # 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..55afd91 --- /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/to/reference-keystore +key.properties +**/*.keystore +**/*.jks diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 0000000..e2e27e1 --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,40 @@ +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +} + +android { + ndkVersion = "25.1.8937393" + namespace = "io.appwrite.flutter" + compileSdk = flutter.compileSdkVersion + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_17 + } + + defaultConfig { + applicationId = "io.appwrite.flutter" + + minSdk = flutter.minSdkVersion + targetSdk = flutter.targetSdkVersion + + versionCode = flutter.versionCode + versionName = flutter.versionName + } + + buildTypes { + release { + signingConfig = signingConfigs.debug + } + } +} + +flutter { + source = "../.." +} diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..a4b8532 --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/kotlin/io/appwrite/flutter/MainActivity.kt b/android/app/src/main/kotlin/io/appwrite/flutter/MainActivity.kt new file mode 100644 index 0000000..b143697 --- /dev/null +++ b/android/app/src/main/kotlin/io/appwrite/flutter/MainActivity.kt @@ -0,0 +1,5 @@ +package io.appwrite.flutter + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() diff --git a/android/app/src/main/res/drawable-hdpi/branding.png b/android/app/src/main/res/drawable-hdpi/branding.png new file mode 100644 index 0000000000000000000000000000000000000000..ff7d8e95df05173432514a263ac2b94b57f40a47 GIT binary patch literal 7768 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 O0000* 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-night-hdpi/branding.png b/android/app/src/main/res/drawable-night-hdpi/branding.png new file mode 100644 index 0000000000000000000000000000000000000000..91b37048bae1063eac713048ead669fd5003bfba GIT binary patch literal 7945 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Ù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 + + + + + + + + + + + diff --git a/android/app/src/main/res/drawable-night-xhdpi/branding.png b/android/app/src/main/res/drawable-night-xhdpi/branding.png new file mode 100644 index 0000000000000000000000000000000000000000..46edab6fdc34f6ded4a34f81d58448f1765eb766 GIT binary patch literal 8856 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≶k-yzzZ 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 RLRFlgDJy8mSA#4*{~!BWCg=bF literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-night-xxhdpi/branding.png b/android/app/src/main/res/drawable-night-xxhdpi/branding.png new file mode 100644 index 0000000000000000000000000000000000000000..93b39191633d9a1bfaf82b162b975dbf3d69d44d GIT binary patch literal 12767 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 + + + + + + + + + + + diff --git a/android/app/src/main/res/drawable-v21/background.png b/android/app/src/main/res/drawable-v21/background.png new file mode 100644 index 0000000000000000000000000000000000000000..c1c0040f3cf2ae3638ef71d13ed39f8b3f95da30 GIT binary patch literal 69 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1SBVv2j2ryJf1F&Ar*6yD}R4uW?)^)bY6ds RyaG_1!PC{xWt~$(69C0L532wG literal 0 HcmV?d00001 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..4a7ac36 --- /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-xhdpi/branding.png b/android/app/src/main/res/drawable-xhdpi/branding.png new file mode 100644 index 0000000000000000000000000000000000000000..69e9460c5f001ff4a17bcd08e5f1f9d5e0ceea15 GIT binary patch literal 9093 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xhdpi/splash.png b/android/app/src/main/res/drawable-xhdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..f871fccc9fea9fe724efda3456aff79021671fdc GIT binary patch literal 5891 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 Z{}1;t7eNIRJC^_e002ovPDHLkV1g!!o^k*H literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/branding.png b/android/app/src/main/res/drawable-xxhdpi/branding.png new file mode 100644 index 0000000000000000000000000000000000000000..6c2b46e3eceea99b6b8a97dbd75f2f2e4a38a2a5 GIT binary patch literal 13059 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/splash.png b/android/app/src/main/res/drawable-xxhdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..1e370712671af3d717b12443ed757514c0c68f9f GIT binary patch literal 8700 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxxhdpi/splash.png b/android/app/src/main/res/drawable-xxxhdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..97212b43290ac1dae69d67ca4125fe0f1cfedd7b GIT binary patch literal 8700 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 T?icu02cV~ItW^cEfAxO=(mb{M literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable/background.png b/android/app/src/main/res/drawable/background.png new file mode 100644 index 0000000000000000000000000000000000000000..c1c0040f3cf2ae3638ef71d13ed39f8b3f95da30 GIT binary patch literal 69 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1SBVv2j2ryJf1F&Ar*6yD}R4uW?)^)bY6ds RyaG_1!PC{xWt~$(69C0L532wG literal 0 HcmV?d00001 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..4a7ac36 --- /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..af0f5234b756cbb61eb43463bfb2d5c819d31530 GIT binary patch literal 2188 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 Up2;Z!fdBvi07*qoM6N<$f_*5`XaE2J 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..2700fd7a0d5bdfd3db790c18228c90ad8bef8015 GIT binary patch literal 2885 zcmb`J`9IT-1IPECVa&0)kIa1~M^QpTIX26gqC`s~qR73Em^0*|A_?(9EkNEJ>N zU3NaOJd^k_5dy~fa;el!jW`k5Sd!dJ0dwCG5uh4n2)~&}AA3{6XRZ=W6HApz*Cw(q z?gSmNcC3Pj!}o*Rp0LP=+0!rk6egxa4kA_~+v<}8`VlS+I2HjgNcH-u(7|Vsrg)D7 zd9WNfP`GgMvH~>WK)BTW-jAT<2+BDtS(QLd-kw1l5MVAEb+T&Kld6^q2urhB z*hCeSapo}aJJzz|;-_VFVPZu7;2}TeFf3{y1wRusjWtU*mKol6XI&^At>KQ3P`1O>mEuSB<2~rydRu^h*IV&uXY4TG2TA_>0}zYk|U6@ty&or*zyuy-RjBq7ISmr=EN^1Qt_eClD=fym*l0 zogE?yGrFj(7MeL5?_~dk82e3n3wKLm)J_Y6s=nyL8PFw9SN5p*;)u4SFl6wYq^)u3p|JMCUbV4a=E?hMztCzmX* zrR#%>7gZom49Bw(IV@3kg&4b!=Ia{r>X zUesvxZ?FqX^*j)iY2S+%$-a6$DKO@Wnz95>n2fqFrS|Tf=Nh0hJ)6~^5);3qgcJmZ zne!a9Nk+u$9Hs@h-|BMof{zaDm`-_J-%=)_)l zKYFrIMJ*eZIOPJI(Em!6^0<`5F&}Mp;FcqH2TjSDr(kY##LqQfHL77O=1`NAqCOWC zyG|V{(FOMTlYC+#xk$?1{VuQ;7vTGx!V8c@IDb7)-unF9Yxkdy+gqi?R|X0#WrlT3wf78Xft8j=81rUsehnDbbJWcQP?E5Q z3#+mzjza_&r}loH)m(bK>O~*YQah5RtB;pufy*L9GNX_0)wBE?Wpy0{WR#nh3z$Zc zAIU{;7@D+TO-bPHCjkUkhI>O|v0#)!cg-qv?_Uc;_sfE3eP;NDfiqJ6TQw+)(8gl* zhFxc@QO+rQaRmcQ@EN-T@ zC@Z+=utZMby#4ou;!jCdD>OLS24Z`rvK!(Yl%*1jn*6rylz!{5bg?5*@_}r_DGQuz zPP~;OhT*pQ{^7szpi%=%FE7S4v+mS_LeU$T&zEKF?vzGdDn_ma`M2#Iiwgq8rCD#N zAMUc^Bz1fh6fYV&NmMa;-~&`5+0L=9lX5HTTt?kXMUQqz5i%o#wN_fCm5-&LZ+9l} z1YnwNrLxi>&Fh(ELm zAcvO=U1ooIq%@xlQ!yE*sZUwzX1w?-%6%y08_}+#6uC}O0Ds0{o9o2I7m|kQ}09(#S&*2v!jFev8M&5a~ zgwVzlg;j1tWgnONzQAWJy_EMCBr@^4zG@X*g}v~~{=>pjZ))$wmL^9b+nDhB3ncIdlW|3`?JO_D}%xQV1h4sw>K~n$vFemGSo7yEu zf}K^YPuj4UDMdMj$@|$@?MaPhHuzbosvlo)`?U{=P&1RRk)NEQ^!)|EUXOd2Tplmt zVBr0}sN6!e?M3dA?stc@?uq>I$6l|hV{`E`01tW+0puhmKog*Y$@m{D@?8Hf7`#F` Z1_czE8ZgK|+5Y@u5ZcVzwDJ-*`afxwT|NK+ 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..20d38d433ac9da20904854198ef49b6dd7f1301a GIT binary patch literal 4284 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 IbsmTP4>IKf=Kufz literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/values-night-v31/styles.xml b/android/app/src/main/res/values-night-v31/styles.xml new file mode 100644 index 0000000..ce5c8b0 --- /dev/null +++ b/android/app/src/main/res/values-night-v31/styles.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..3c4a1fe --- /dev/null +++ b/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/android/app/src/main/res/values-v31/styles.xml b/android/app/src/main/res/values-v31/styles.xml new file mode 100644 index 0000000..644a372 --- /dev/null +++ b/android/app/src/main/res/values-v31/styles.xml @@ -0,0 +1,21 @@ + + + + + + + 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..2c18945 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..d2ffbff --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,18 @@ +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = "../build" +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(":app") +} + +tasks.register("clean", Delete) { + delete rootProject.buildDir +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..2597170 --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError +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..5e6b542 --- /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-8.4-all.zip diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 0000000..a00f9ea --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,25 @@ +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + }() + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "8.3.1" apply false + id "org.jetbrains.kotlin.android" version "1.8.22" apply false +} + +include ":app" diff --git a/assets/app-icon-mac.png b/assets/app-icon-mac.png new file mode 100644 index 0000000000000000000000000000000000000000..4abe852fa516b3c504968561e518d4f08d0f793c GIT binary patch literal 15718 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 literal 0 HcmV?d00001 diff --git a/assets/app-icon.png b/assets/app-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..374c756964de0a5b615642c02dce6e20a8f053db GIT binary patch literal 5964 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 IbsmTP4>IKf=Kufz literal 0 HcmV?d00001 diff --git a/assets/branding-dark.png b/assets/branding-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..aedb30e80fa1dec54fddefb27e47c6ac03780a23 GIT binary patch literal 11868 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 hZ!f9z0DzPIP!u56w;kKIbt(GX{vRpYfZ6~6 literal 0 HcmV?d00001 diff --git a/assets/branding-light.png b/assets/branding-light.png new file mode 100644 index 0000000000000000000000000000000000000000..16d5fe3551b194dc03a47239759f243b29e2d0bd GIT binary patch literal 12402 zcmb_?^+S{2`}gQjT2Q)6N!t`ocOD_#-Gic%QpMCbqj07FJvLKOf&pm-@Kpd!C~3t+C%zWks$N$a=*0L*f) zAGl(nl=7EGI9F9EaX|GX$-kEhqNSLE7ywWg_vXPE2>|$nA|oND?g@9iF6X}XwVCw~ zDO}gdzcoQ2AqHZipnpx(<~0W&NP>!S(uhPO=20bL0%d#v1z#z=5oJAWMyh}O#rd!p zbzq=bcpy!K<9ww^QBE_6f{O!yPk(M9h)Rs4OCKH=J(7}O$WXm%k4bwA`T!h!_mAy1 z*E^D-Ic4kNja}S3nD8^32LFSR;-#LTQJW$#P{}Eh8EJsX< zLi%3SMv4iRgpdFS_d0a^*Ea<0a(8W8@-r#%Im%t|x#vl)2o(FZuO}Lv6_DQ7vt6am zbO4;~&J%j`+H9fl32yi;BAI1A75rfss|(4> zH7!<_{dfV30!^;Y3R^4R`I#S=OPu8_UP`4%hFnAEk^m&12?B?8}RV5WuYD;=|Vy>E1hg7|{}Q)aTeU4;OeI9P3QyhhC{(uK!H z6OOK%s{37tJSrURe@}R9_kvSiZnAZ*Qoo|VWnbC|=#&M}TA#}kWK!RhC1~hfO@>Il zPNtl&m_F4i(Fdm>4xshI5d9%wkRW!d!uh2!g5tHmLd|1@8Z;4ysGQgW*rB;mo~JG& z4SqexG7~Q^zPd&4?3%Od3!>?s?-#g%!x>nJ+!z3_7mv~WaV%j$`G-Cgr+%T|1SPR1cilJi9TVx?3wJ#_Fnb2sknzwe6D*WFPDA2C0T3= zYUP1%hpDS81Ze{k=`clq911fV_qyg)HOX8Zzg(%8h4qAacAchms4%LqXyB)*;-OI7 z7PzA7b}O9B<#Sb-jB!?VuUPU6& zpn6@Oz%rUw>YpFQm2M^!8x#M1`?g?ub^e7)blY$2{n=;VJ=V+D18;`@r$~t_LVSO>eHG${ zcQFH(ZjB4Tsk=RWE3~uCbhZ4m$6h8Yr*iQZK-r;;+t&x@dx7uP|D3Iev z5E$xz65c2vGZ+N#elsy7TXfv;4f5lUe!ON3@*Dr$$6@HN_I>#QI@Pxf2%vwdx3^Xv zvwkbP*PBY!Ag{^$emRP-u{R#l^taw#N8#Z~+L@pWH+^S6RtEC%+t!~sKd?VEJ1c}C zx^x+Cyj$WzDjWN|hJiNCc9)^!gGB-0Gh!d|H~P**yCcS)8o#s0rh6#14mV;6H+;rJ zY%7~i|Bj;a__6i92viy6EdrlyZup1LVS>TCmSc_Jue<4gj->p7HC|~+*>cF(PmN>g z+hB7}Fpq<8U4O_@+)iLf?!Dti*KbM`NXHJ$@+*0MBS zrE~q8A&9!e8X8|bFk$TBNx?wvX=!)Enm8HfFTV`7?}OFJxzApBB3gX<>I@p(Fg-?0 z-L`61i^ycXl``1#etCkwz2V97H#}|%D-t<1B?@J|e@QhcaVD`69~FMz#f2ZJ-~EK76@Rq%S$|IOP4+si)a>5r$@<|}2$F1K2y}}{J>=tp z#(PNhpz}L(G`>F(YNIuAa0Yj-DL@8QcD}UBm9-8p+ldc}>^%7+`h4kEushIJ{h>1K zHc3<4Hd#*Z9&RI-EYVV-i+m;HOLV1ahfouSV;#&vKIosxDW#dSpwXPhmv{Qu1t2p6 zD^X=)LZ_xlva_DLuPlGiu(dcFLLJ@X3_?PzDMD_*ap~$FrZ(DV`c><{oNY@dB7Zu1 zX+YCz%9D@m3xy5l*tj=3ePC&V2{K3lQ=o#l6|^|GmQ3Gj&;;3;Te2Rf{2r-&+7z_B-#eHbu0 zKQs;DS2Wxf+}yRTuo?N4IvCVfqCRzFksVL}Ak=v&+-`A7Uy55HGbdnrK6Rf%BGb-} zBuba48uQlpZSd(xX9gI;(xoM>B`OZbcw!vjk~rkmP&~JKx>8G4rqW1y7kt4%gUYVE zQCNE!`)f<`kA|?5^lH>G&vL8_KH+EH`)5^$(9fncH(R(*bYUSz@7?7L=?(mZclJIk z+3ItIP5G_8b3J%}9>{qZgJh{1bFR|VnsygSG|(Gz(WIyS6M3Ga+22j^OVkK%X9yxov;eX(p;v})C_d#y;U3>w?8^HuLQDG-UpF%># zSqoa!k&xb9>eGW(Tgs(yPu9~4}$h&4sc+O?_Bsnr-jT57c?2o@o0R{R;eiDFPf1;S-5 zBf8Q2>#3a54?RL4<5NqA*e%~)ul;&g#RcIUM6BTulUc*cE%qVxb_;?6*V9ekiIkMG zWQUNgR@8H5E>yX?v4#1@zY5-1#K;use3&H)y&s9~kg>n%ckTO^I(|k=^#frzUAI^8 zmfbZJnjhu+Vtmm)*7j0zv21Ad4H2nsq?5qhpklK-236}?Dy;Y0LX%G4$z!ZkoQ#HY z6k$kH$j=e@M$6-dzD2+`cN3@lb0C%4vKF>X84}LE%(-UOBhtR>DyO4d&o?lTTwLJB zMC;Lnff8{Sf?ssCI>ABWCC~80`9Mtr3}=+8oc?3s8``ZV06+^B2{U)=YLP z49Ym2__xgLkgi`CW0OqFwt99IX=81#9%9Q&%)2_!YBE1`hvn7n-g<{Vksfm!vfgGB z4)(?PY41>T{wDtpjx@otHF(1Stqr8rLasnGf2)gP5-n3kcTQw|PBsZV$_OD{ zXoZnK767RnVPdZniRuoQB&2hhJ&tSis^;ufm+~C&yyM*Wje6u~E8aTG2 zQ*8(QMo?5JavHc^c^%(!k=2MPRP-+)=hjDlVlz*%*`j1tuVYNi{edK&sakn{(cHk?3a( zK7iZ3RP$3@0o!9I#;$iayuv;d-o(+WN@x^Lk{cEXB9@=imP9-=!h%UmA0mQF`qSLl+Nx`C}-Y@%&T>+&9|{?sKeEv%o#`Q!biY1cZ7J5}p2S>H(09f3-YwzE z!yJ~ocZYnqzkIys3E_BFn1dv3^v8L^cj`S^fSyikAMNac?qqC4BK?P_PQNe*?)jsb z=R6ET7%_*D5wSmj8l(hE26smO^=v0!{5n5bxAhW%j^0!z`EPOJe4i1rn;hj1n{QsW z@8-XApq?4}oT%XlpZerb$tWbDO2?{>S8NsDFc3$IsZeOr$MeUopKc!);u(m3A|K(j zbo}C9%(?v`>)!JXS+2646;xU5k|go`8_rr|Jk!G!gM~GL9Ppd@VsJ6Tz@Lq;Woe$v zdVfQqB5%H^pg^r(-0^U&VzJl8Sod?RL^mg>j#ySEM6H6l*!*B5rR3POen~oO1 zc26s^$K~SM1M$cd)YC7Ty~Zp*cY&G4JZx6fcRfEnRwfBD4Q;HF{Iv7V`a)CRu)Tb} zm!)|yR)SK~P{qNi$B}(6>SGZ^;RMqVQ6I(2y1&2QtsgXhhu5Rv-w%B!1Vt00?EY=u zaAA%Q@jYH?(hKpOzFPgNj@T{mE{_V&qo&%{dwU3EV7rhqWjlJ^;Z`l3WTT_4o3Xkb zxZC6Aq6seYd+`oO>TSAHnZNETIX8hdRwvWZS_zf^M1K2H5!%hlBH7+mX)<`dT7+iM z?Jo!axB?$vCu?bad#DFW$PDp-8rrKynT`3Mhl0fw)fb;VJq0&*dLqDv7i&`AybbXs z!l!x2{#g~g-~FuO^N5iC4hInwdw>FdRC@m&2I-=Apymi#eQ|p~vKS!JK%4n%T0CFe zqu3_zrXSbenZ-UKNfl>BRKhZ3Z3Fe^O!|)GpxaUnntN}|#Zzm*F1rDEr^bon9YG~gD zmC|hO;i@d&O}94bCsT@q(A)bejBH!bS_Ch$vh4?X<~A~ExIKo;?q;0d7o6K(_M>#8 zFt;J9QNz_dFD3VU88Sg6Z5V|7TL1oH(`<*Twp~sJr7~7f(9-~{o8SxLA5(=yRD-{r z0k)b@I%9%prpBjiunVp-(67GkSe}LUdn^iL?uUL)=Ek3n*|r%b^0IAEVKT2NZ5kT8 z`0Fz}8Aq8fdk*X~Z&$34X55C=sbiHWl7zNC^$YIEUJ4Bcareu4k!c ze3@c4;M0uiX0Ci){pbz@H9pbmafnP*dK@=mF7V3teyf6I{&t9sqps}fm#-s>K35t) zjy`=Djo;Pv#ub`HBKzouaNtLr>Az#;5ta6>oq^!s9*!!p=b*w1w7> z>_x4!-Kt=t!v6DUHab4S1&>Ai{m80*^wj8_>}qMD9Jx;>L>-=da&6;cE>&;@u@_wa zSD5~I0qcmk#+SFs@vQl=M(-2XR1OUPodSjmxRnY&?Vn>WOFW3He+Zx`fnjJ0+PZ+~b@JUkm!dKljV-zZW( zss|q(XS>3*@nhFKr~!OdbbihML4;PPeAE`(2bVYg{bXtG*bR|9lEiQNGT-rL1|o;{ zV;gK$Y=IT3?6rYH?y4&UY-~m`r}MWzU@jpO^bW>m?B@o4R-+z6i3FsbUxMOCQ@it~ zota3-K%MhzXRO{M0dhwuPo0)EDah%}cDO9pIsx%8QfnzTPs>GisqZ z^2)C1ahY9?c+i;&lFH~?us$LM9PjM010rDmBB}QS`tgsX783<1GB#y0NYe0@qpN}< z=RHR%o+>s=S zcUNJ2)}a=p3a|D7~md&d#|byu4ufvJQ)K%65ouG{=C54F9HeV z6YQ1_X5EdBq1EBEt$hoBvB8m_Eop_kh#ubxL6;df4z(NaSYqd zTN!p4Ecf`zNKRNUY$8_MwnN?Gp{XnB$xGlJgXy08u*!0vga2NllC9;d7^-;qy#6~2)9QY2Xql6>E!kp+eRnuGjA2nq$ zQT&rJ{+gXnPHp7ax)coGX`x%tc;4RBy@aep0#BLIs&0IQ^UfV_UBg;B& z!HgLjpq9wLn#kdPAT^M?WapwEPHCRod5hYvh<|2A$@<*Xk5)5R)Q(EQghatQf|K(B zWAfg^%fAxEd6(eKh>8;B!56XqH&dglbRLFea1S_(KmVJT%%p$ut=cM2O3q7^wS=&Q zIkxKRtu^&}GWab@m+F=VJTb za0{~Ysfn$9sOd8mrT3rW5a*9RqS7yx8Hr0HG8Q!DPXjDZ?iu^G5_S)sU6+@1CD zPtWx%BzsION>@uLej28%KrB7jKs-WMMh+ieZ>Lm=y}~A#-7+mn$64L^2bv1 zDmgSl%9TWTl3?WP(%f)}MWuX)399#7g*qTa2Cjx)NTZr8iU=WraP$0|fkwet)r`?b zH_9?RK{SV>>z$E@z$}F>V7lCxYHJg2GLLiG&2^g>r=jyY2J6d=q_W&%k0!w!-u#ii zZ;MVE%XRyXt6$=Ar+G0*e}f`Na4h#NY{cK<$&?fGUl6&20#7?@FU_=@)vla=?hj}n zRClPaJ6Fu>5MmP3T+-yF{q4>>C~e*E(|MjrHp3H@ZuFi}VvNp|-(`8%{&DnZTxd^+ zLoyjD%^=$gqg_+9-md=m@9lo8qQ4LD#B4|=rUH1S8Wh%4a&F3jM~8D;$7{bqJe#sg z#*+d_BP;|?tJxSirmWQd(8F4dzxG1b8e%BDf=@Hd5`vD}QkTR!b(ZMErGE-^7P+R3 z9EAdO)IXS1>^xkEOeT_cRcN}8lI`(c8S!d}R_o5e1B}NIu!)C=`RcE5CQv7vX|1}^ zb!B63enbNhCwEuwa{{m$Z(>|KO9bhZz6%++$J|{C%_C|A9AG!Wv8hgPW1X z(z{^TXRjRgx2OPq+Yf=-=%!F#!XAr!bQ53TX^nNpBY1cvE{#H4ui76YJhMMw)Ee){poR{m?AAIJpXo5@ZcTLbdTT(khj>vb_1TqOu|P7J zK`_U=**mO2=bRz)WzDtLKB6{bK*7}=%5paBb7%^MoICCP6_j|!QRLbhePjj8bev9X zS`dQ@?@FR&(0%8cnYN^dQ@LvqnGla_KA3A<6Ger#`)7Dw^;TQ>rrA0zAiuwVv*>Yl zpi!@JXTtylWt4Jx;xCiGJAK@8OR|J-flZqo`5^Dl z`b9!vyp?1U#c0(@iS0{T?F!lYSO{-qlKa;)QY-^HrOV-V>64G0`N*kDRV%*v3!m3w z?i_GeQAwAFZfu0ebaj;t6{$yb)hkqez{7Lt>Gha~V;^T#5-6A$xSIh21|&}290(pL zY)h>F_Bypn%rUZxtFgxy@y*MlcVwk!3b#7X_RIix7tUQ3QcpBxlw<0v9eOHMf=Zn; ztK#(i{0xFM%dMtEd9BKSvBwy+e*BlHRjFSlRP`LFOiDggydxIA_*=srH*mcBFBU_d z(1v*dE1r7>ZvP@vfkLq2X|l1}!3`@?G$&Z>*&n#&O#K(UZFx* z=(9bqC3TE|d|61LZPMDM@k!+((4sYno_PsmZeT26p{B%5Fru?7@CiM=C)PG9mR~yd zz{ zsIg-#_B|bPr1AXRTA{euP<2Pp@*?M^)dd7Fc|<{+=%*~swxV};;|I)mhr^q`g<(B6 z&n(l6H?K{EU}fFTa0w&hpnHllA8UOM(@BZ1R20ndLYJmLJoMOwURQ^?VjEm#MPH~} zJM$mbk9<871{EC``#GScjp>c*L$Zt?Q9_mY)YYS)(?RYgTBY#u(<`;;oqv}Ep(fZ= zz2T2o!Ex1FNBOA;{K=!icC?@AE)V224#3!YKO%uuc;}+FLU|UnlvgzSEcT6GW9bCw zw;Kxvtwj}C4T=BG*1wZv1;R#?v)@1$&dHoAHDAR|fw^b$Tk!5bc}#ZOUr1Tum8f9X zx1GlMm)4WNKD(9HJ(QnCyTbh`zD`;LZp-czuG^POjp2eUWM^1WklYu}3`v z5k@o33$-LR#dR_1pa}yU?9?a2(hRLGe&BcoT&$H{@5QV_uXF$fSZ*84Y1o|2xS<{6 zFWJHV>MWcBWWSNZ<;X6YydV(TUg!KN&6%T7K z3FUub!uMD%493%rE|twC)*j5LT4!I+oBpuB7)4PS=sgpeEsHmEjj0~Hf11BFpYOrl z6MFR_Jh3(nd?1zoGsz zz1Ma`n0~u!dg8>>=)P5e&yyf>aqs0>f)%F{_mYL4yk2{r3WB&kEhSEfRo|_{yq?n- zVQKJm?WX1)WDk6xaC~uIUSP|Y-%CO9tUQ*J{mfu zl$3%+cx-fr1xV>AzSy%*7zUZV96i6IH}xbayAQl1U~s;C(O<%4K1rzcm>UqwyhPSO*T>ge;EEd74%^MceU?9xRc7e{TFMT)rir(10aw2>E zydp5y_Q166?~;e>xTn8=-fDPCv1` z%bV^yhh~@sJWlzKwCA)`@Wz8*3_x%U1*bvb>1{}0 zNeH%AKa(4?y(s%c%3^SrFNEpPtuuptMhzX%{Uf&tXKCc(Z$tLPKJ5EO`q72j0I62qIz|6wmqY(ei5`-12a!XAMKJOF2#MWS+CCQXo7>yzUCi8gu5|dHsRwis?xzc z&{%J=1#59814)>Wv*n9F7g6Z&)a}jLO{*D|6*m{zo?Q+;924doel(9e2vzY=(K4K>(`;4kGoRiluZ5QU8&m8}mAf4sH&d zNqT!uV&CY`E}dbG1|z|O8z6_SdTTNn?DP5vF3Q(fy(!N0;Es#}WUd^;_5oWVHHFsS z5P2ua?4uXFhVxd9BIeJeBNijaRCcRC7|se*x=!%kikysDYD6^Iz^1lInCSZ zl$1u+&-vgmB9UfMb9_M6f5;MIO}c=6n^TYQ6WUz4_Af|)*}bybmfxGymD>;OC|Wwp zPjE4olC-lk&$yMWb@&~Nml;Og0CLk>AE+6>IG5PH}(A+IJYOpCPMn z5TxtfZQL?2sYw!4KPuJdoD-MD8YG{%xIeK5Jd=V7OIgG3ciw!Tz|yZyuKI4OlY8NQ zikAGg#J3Yj%+s~BDSxI00VbQr3k!Ze6s)kDZ|V{0IRG;bav1<2wd^ydMv%s8NZlIh z;c%H=r3dNM5}^;d%tHNWKB2!y)a=R$e#=C}*+uGU>H5Rx>jRX)Z;xQRMCVZYo}G#b z*IzrGp2sU7uxvt&{U+4^Ar0izXSv{()fxR=>7Cv(cqeSUNeTMa-5fxr5nt#?W_Pi+ z4q@yHs$&n5n)5jjP^#i?;ug8#O*<9jh}ez{OVUvzt3rNI>K^X8PF0{YD{%LfXCl!K zVABvW6&8`pBecmz8Cb_wvhNffhu8ug8{Wzyok4=|SL`XsB$5 z|5Re8;Unbof;gXTFqE1|6N>q zO5#0@Hm+jaiygHfOC?nS5oDD<=b#iRD!x%NLd#X#@JxFcDe^Ii5lk$aTHd%A1(@AP zN_o#QuaMse3?P0gJRcc+&k?w=9!~h4c8V(}RM~%}Ou=jGGj{@zLVCp5haE|LF=O~& zjcj)HM^@&);gr{oaY+8>5I77EY}Ekgy=&2OhKX*vs2COBiR07<2tHY!)>k~URABbl zqrZ1Dzr_PgFALT8ge!R}%OJJ65FfLRHm~wALzb(2a@@F!v<8$_yG_$q*x!EuqVHNQ zAq}a3dTq6gl z#qed$!@)V^UgL(;&>u356AjP09{~w-GjUKmL3OiE`vBBw$@}}7J73O}-$$WDiAvw6 zSgEj@XOptBt$c4paU0#t;S+YqQ_h=#XXDUPu!hGp`xR%)>MtGdl<6?YCD5YU`f-6K zHKn-EAl0@Pj~TiUd;k>XL+Aks%|T)frxgaojw*wM)uwPNa%}ZRxrjBsvDm~O`a?N^gHoJi;z1^c+M9k{iFhNWq zMDvXp{)W*hiZ7eHaB~(D+bS3TBrH-HsoOL`M9iuf;`5BbK0LQYw^QGh3Nxg@;5T{*q{x zNb~F+->%;(NqS%2|BJ+@<}l8fMCswgL+DeI{NvNpsxZdHmo2Ai3tF3X}2050p z2Gw3@B|!!M9Oqf+0l|Biq8ywP3r*|iV=>e?$?Iy_0tJ%5pSK$UE9ynHY&_!~kB>aW zf)N3-*=A&2KG)u<^v7zKhOx+A-2+nQ0IFItL<%tQrs+gs^5}|T?Dwo$ zxu(MP@*Va|eqAxx{y<$$p3Jv#W;CTm=d&Su8El_$?#4CXH*z0(O86Cyh^KohBT7NlGbgx`TX1kUP6CSi)aVj-Ra7NexN>)Kqmx%pHy^@$T1R_wLluJ(Ly76}O>3uRn{AQfb zj1p(ziHgV74N6%| zEH!7??$|*2Z@`hC#l?3_$O?M%t{zP_ATw4N39laqV^ zoO;fb1)|jp_-TgBvx8uA zA>owsXPQp1LS6H3H$qd9@)QKrsl-=VEZK$d1_{tV499tMjZxe5w@VdK13JnOzNx9q}*4kFG3gRIP41|X)Q7!1{}vQ4&o zXQC}l>{p*<$a13{6TewsuPCjRdyu`x$Z2lK_A!q9l2+vS1kqah7bXRL~nH4 z-C1HI>O<*^M9w$x&Xwx%;#wtyC{QG)>+k+uH!%sm^&5F!EJR~r2}_MOiWI2CXX6 zb&zQXj4TjUC(Yr7#>OQv_3{t$RYjx{_)NllG19q+`?IX(W}-_RC`Wrg5;8#UqFV)x zI9Y-UBuC0mQp9e@^!GDwifq8n^riQFRz8xN$5fX;+`c$M9=EzKfXeO~Zw2dLq?PjC z?OqCpxwVy@bTx0fyJ(lnU4yj_gCak54h`ir%`8!G^L3+W*+~CrEbw%+8xAk!8;~9) zCvkea%7>E0yILvWtSJYeGK(@q6K9?QK1c!p+e0Aa;)wH_v8yNi{*ES@;3J!*E=)>@B7Q$b4h*7Qzr{~t%=9nBij0s_ zwnimM_Jd0M*lfKd@rMtTG6Mg`6|Tfy$o!(~!aKjkUr8P@Rt4a_0eH zzsxBUEFl6mKjeIMule(LKN<205+PF7`9d!Z;GL)oS+1&P;70RBVD=UfCuGwM;)H-a zZEIX%6c)*?o=$r#ePigP_-~Jg)Z3VB2%|EZ}ez*m>+S#6Woj*V^F9*Ceeh=un z;>p?Af=(MX>EzGXN@FBrT#GjtOW7Zq*J7If1lEoh>T%W&?TEd9vhneL^rrLqoS2=8 zWme6&@vQN+ZSmL+XU2!3OODzPMsRa;cSL%eF1| zkAS9locf>B0aA`8_G{mu2^IRk=J~y<<)?#{ns6)Gm4_F@! zll$0K&r*H&Kn1}l_=ePX)Ty&7QLipN!ZX8&ZCYOVpal~)V~6FrNL8e4N)p0K-#=Po zag`fCOlHoO2HDvYLf1=YY_f|sDUMsK$u-6gsm$5i2{rn?0_wqL39WCxp-9nkJXGTD zBlqG@TBbc`ogR3+Qvx?hW}bG4uuRu*x;NLyd-1{MjS%BD2oq$5o!m8c{kdAbW)dOp0U^{mf4FEeMPHDtcGx*5cEGUe zxG->?XhdntaGc!i7cY}F*7aU+^_X;`GvzoEoS(}i|F;8pr<~@Cq{t#=Dv`?p3(Ch* z*9C109Cp#|YmStTGYmbI(WPBq^uqJYQ7kOGkBSwc5ed<{C|uPpLOAA9>E=^GTon%b zd7^alhz71o&RtW>mVyo2U7J*n^1c#ZoXB`(xlMtiNPSGoAM==1F?}^%q0C|7)(5d& zbB8J67>}3TJcndBJt^)YGUU%uZ-*L|pfrz*uGRV2Qu(9azV<8;9fA3hG*B5UJzNE! zd+^B_%v;J>m2W=Vm{p&*79@vU)JLC``kYT==%Grqu35V^psB--bIVisKuu9FB<3daNn_4I4i>b!nR@eI{Me-(-=K(L|~!z*uo ze_BMEVt`*jxSkDH6I-TME73(MZB)j760#Q$tRUSN8Zz{xlx#| zv~trPwrR2XD6A9{N$G5tHn*f4da{xUJx{w>6ZO{R_1{^%oo9XhFQUlpTBI*Y=9Y@P zAN($xW}PJE#|tEIO9~|+bZ7|DzLxCU)_-Hu6u4dG^wEErSyn>|>s;A{_6jtGJo#C; zks-4LYDo@8b;TP7!X}R;>FX^8%MmibA6bZ>T+tJ%_!s|CJy zwb19xb>vfs{s)2JKTGv{jS9JYPhGwJwsLrYqj(7xcT(?=WW(x4y^O@EBx2-X>gGBe z1WzS}O@k8y;rOI<3ijsJ~>$YcKClPVmeZ?A;v*^VJC_L0ySU4X$fnKd}fm4MxTFoE(k?{21WkoLFXM$6!`~Unc$17oOqWt zWhzdd)FUp8i2a%U<_BYX<}GTgcC2|t-h!r)ZPc?aA?m`OU#-_`=VGEDpGx`K)WT$M zQhBU0U~0`RYRlheUXn&(K3WYGk4FV+7V!F_ttg)*XL$kHpA;*ZUwPkDh)k~#UnoWc z_ED`@;*~CYzm%-5DME}OZa;o)U&beurU3(mB{14d+qz()<|M#iepTHG>gNGLGEwRa z#2rt(P5syJxt4zL<}$B^JHK!F^!V1F&e8b-&OF89cZI+yd}_TGF{QNwuE_A1`l7!+}F`$ij)M>skGz;urm2xq)ix5X1MF zD0%YyrCM#+=!K3U!%8J*C;54+Bzr&;=C4!rF}*LCWPi6Af5}T(Uo9qY$~RWOy6o3w zyQsIhkr~szij%wF8L;HXkj@*y_7AtthKQGM((T1PN=7VRipMT??zf+&^A;vKEg*Y} z*DTV>Wbz-h1B3dPUjOp_-C){N}~ zk)n2f#opQGe#C7GtjD{=iEw4yHSzYVrGQ4Yl-~}GhcvUR9>0{l@cfo%kZtF$FB0Tm zncc?wh%ND{H9FDL=L@SYs5)gHFnWqo>)lFtA|~yslcqB+K<8_Nr)p5q>r=g9EjVAK z;X;2KoQw{AG$3iN!L{TKo5Iw+c=;Wdu8i{L9Udws z#|V_P#|oU%<)G9Y`$+W};_6v?9I?pSD<5u_&4`MXzdq0z z=rw-)ZA9Q$vd`Mu&+zzqf)tq$sf+XU^+i2P8#vusDe^5(hx;Ys!8wanQ)!z13` zYYOlEYvAljZ+9f3L|9jeL;k}aKk1VLXXfVfEABwiW(%1Xm$qeMPS`K}(C9frqO2nN zhNqSFK8N&>ia91PfxgcAo0-A(b>7B}MB_uOAK`DMe-M~R@iWi$`aWe6gOi>vFk;o% z235osy&aJ*Fl;3Po zO7zf_afH5ByF(?zXAE|aO>-nARC^5j(}#S<15QO0$TpC)3`!k>+UoHdPYyrL?#I6U zl^?ROdr!-6_sRJU&yAI-ysC^{%hy`}J! z5je)QUFG~fAu~5B6rn57(tn^w@7BXLwJ*aD>jne}5f0oHJprRhS%%2- z>fCH~bfontozFe}jHxT%owlA~xp^z6T%U6}UfKH@Q3NyN8UISv(|3Ev^Hew_e?{dB zQWdw%x#;H_3=7IWJ6|}L{}4OkoEMTPRndJc^IH34Zz(pyWs(@kd*}1IC@bpkU>|rp zS=>@Hp<_c4CmMUWeWoMRR=SuE>T(K}+PI}anj*Dd9G(ARI_&@9d*l1l4=K`4shn6a zVo`jiL(*2}))Xtc?{>B76#xOg1hwBR3cqD>>%U2yFJ<)gpY6R872TnGSt=;qcD&@; z$Mu)h3J2Z*iOHLh%=g$GwFK7c`vnR1R&w+qp#j%G0a${eH4Z#DN8(_>kRCzxdLe98Pb_$IpWd zgYP!0XLy2DzTY3nHGctB{}S|I?#zv^UT_jr`M0c%K3_U7OCAfxLM7TQrv16jn{wRq z*%9QpNI}8U)X#7@xHnjxSuiNHhc53uX98<(y%iX!KRf?ChObrqOUKs?Z>aFUuckjT zD;BHSc2NS&@lAY&l~QSWGg?rYAB}>no|W-;sc?`tVoz_6A-0t+1GmGjh0{4_r%h9p zQ6MYiAm_6GF{Kz8&P9{V-Qe^Ir)igiOBW~47a}31IWGN?a@*m#$%=rRhoE2`y=x^i z>+$S}RYD}Nxh79BC>Yt3`K#Lwe>R7M(l#tR zvXhtbo(dEFx);#&3snrO@L0k=H&~qS0cwH1qRyoZmoD9pTycESQXXTQ)i0@%4vG^w z04Uog4ezX8;=&%wn^u7Vf^XHQOINgvvOVNLoJA(R{a>#OmXjhCR-km4Sp3)e@^?^) zC)C)Zk4DOKWcK8EpkZXWuD#!0&m{tF+t21I6k{lWLn-?>a+-}ElKQx;l8djznhZ7m zVinqnCdDi5Wkn9cIX6Xk~sFUT49}xk+LzOXB2nM2bS#fuq zq97R*6Ah9LN;RCv-~cG1QEU?M-^wFtn>LoQ6*o{0o(t_QnQ8wPr&n4Q3kEMN)u=tv9^8RFW=+ zY=7a5VUuZIRHEwD$QrKtk;zVJUsJYetDn(c8jJAbKG0Uiop}_Gc)18YWIGuh=LF?{ zJWm*H3sb~Mand`V!{_AfRU5{nG@@*DSlv5&+uYn{<(nppUKs7@@?C4EfVwNbn&`H% zgeOR*Z9sUq5~lk?@I4c@X*{nrM?52!6t5Lxi`{D(>JnFQuCI{0)bZ@}{JCk ziFx4Bws^&tT@{y+7mtoEU^zl~RZ?n3tnTNuQw6M9DAxvs$_B?D5j!Vdsn+^zofwT$DD6{X{o6bQCy6c*#lO}_>Wb5en_FCHDL>5Cel>9m^)6_|DzYqj}q^n1nr2a*xYvb>(qsXcu!ow7)LGaOK^1 zoChhmsFUPhBv6Pyvpcp~-wum3{E-(!X zwaywW0cslt@6TBW%@72|G77~>*zCLgb2o{&&cb$-^oK86| zlu(7!==6|F7KI2N!%}>L5aY~?ceYtyCLq!mYD)K!YpNLTAHlER-y#1fUAry3wk()& z34f-`io2Juj~KI>{SWx(k_M_;?>I-d|8(56;ljTrU9AUl36aU&)%5myqVTR|F=?gb zY>mMs2unNhGrWt)TQt>Y#$P96W^f8tt$&nbxosk7nB*iVzc^n9gdpHqx(XW0+2@PB zJlAmm+Hk(6(8U(U2z@CsG47=bwHa|)iT!l3dJW9OA3m>r#`XG7zoC_G6!0-MA@Wce zopp?I_#}=L@_o{(l8o~s`N{E+zZ&0m9oR|`yQ1G1(r^Fb9U3OFSN-nVuF$rA4rkK;MaOGrgzCg=y1&A%Zew> zBAe_Bs=z8=l~zH<^}BgP!~B*7$UDOC-i24)2;j5H2+BD&%X_l>0^K}K%S!p}FR9;@ zQfy>SZA3}pKY8`IbW!hTyWERzjp8%ccH0xhM#}fy!(Ey33*1$!YpZ=MP~#rkM5J|= z6bQ?25qapdz-^YHEt!!o+Dj z9ZBh_SE@;-&P~V zvEdW)FGepnDxTrGU1Xumi1V$=E`|8T&zOVt$DP85UyE{tbn3xLoF`q(W_}gwMC@xD zc#T1I`M;Kn=$aMRK=FfCOswN%LJo0W34n)edIjxm;-v)(8x7M6!B~}04u?*Fm z`gIfZRD5M3ud0uTpUAX=DGPq5l?daO>>d9(oGBA$`bCQT-->(I=?Kz%6}7@l1ye7d zUicHLGVuJuU4La9XfHGTZ()AFMXhs_ED-pK#u^%RU%jK7EJRa4Y2j%p^OU27g_|gKl0x zvQwdpJ(<(}o(JO0>O{$N3ovm1s}q~2Ru2ZOe6>07zn+p>De`}SkKz9SMH3-1%-bzd0h*A_g`deSqM$iaL4*uTPy=x*78;!A z?OKn>F8eOSfT~hG6WJl@oHvoe58@IJij%P~tKa5Llxu?KA9n;8Zk~QyHy(EYumTBR z@j>UsA49argVJQIgXfWdSWxuC`a)#vTJKFruLVFC>y6WRqRBRASTDhV^`{(Y@X-*} zDlTxVANnV??s2Ve{Of6ALSYd`pgCAyoD6H(4K~hs<27V90Jt8e&w@oT<~1Z`;+Rc8N52TkXxvSQ^% zfFzzt>~0nDqR-g&r9hc&Ufh3s$nSxG_AC3SzI}Xv7EB-uY#tl)k^2bE2cI%SbPhUl z5umL*8Zh&0riI9A7nwZZKAuwJS-8uE6bZ*@m2%|V`_1r+^QJ#*w4vj}tu-&|y=Cq= zvLIPVehbi?@}^DaKBp##MK))80UH5j1~+x3$z@R|HBf1t8w9D>>Y&lB8tXeTKd-OV z03eEEE6mWAZMSo@jKMt=J^SUeWwfLBC=cj?t}76q3qX)Qt}5XwBu>}JZKWFj2!laa zUL5^7CbLsuEZ_`~;cPa4HBZ=*uAgr7m$1)+v5(@ayp4!b6?&`k<;Eb|guUvpFDlr} zIAm=%O#@-L|A`@UhnpEjmAa*rJ=~q1#}=@Y2B8A<>*&N4|}unbWJshLwKpX z+J_kDbVxu&&H=h_8X68GJ@cCB*Xmu=Lvu4laj1%Kuf)xguE!s-y#7g)$3_K*>P2vA zzWTG*J0YtovezAfKPvuI9Y#~8O5L$p;P=u*TvICHI=lTmVrm=a z2ToA*ST?;ON)Z0ZPbjPCkMqvv&SLD2P9pQ*k!wv#M#zO7<3i8wuR6!}3qf~>;FPJg KNhQuL{{H}BS&|h1 literal 0 HcmV?d00001 diff --git a/flutter_launcher_icons.yaml b/flutter_launcher_icons.yaml new file mode 100644 index 0000000..24a1561 --- /dev/null +++ b/flutter_launcher_icons.yaml @@ -0,0 +1,15 @@ +# flutter pub run flutter_launcher_icons +flutter_launcher_icons: + ios: true + android: false + min_sdk_android: 21 + image_path: "assets/app-icon.png" + web: + generate: true + image_path: "assets/app-icon.png" + windows: + generate: true + image_path: "assets/app-icon.png" + macos: + generate: true + image_path: "assets/app-icon-mac.png" diff --git a/flutter_native_splash.yaml b/flutter_native_splash.yaml new file mode 100644 index 0000000..961d04c --- /dev/null +++ b/flutter_native_splash.yaml @@ -0,0 +1,23 @@ +flutter_native_splash: + color: "#EDEDF0" + color_dark: "#19191D" + image: assets/splash-logo.png + + # branding + branding: assets/branding-light.png + branding_dark: assets/branding-dark.png + branding_bottom_padding: 24 # doesn't work on web atm. + + android_12: + color: "#EDEDF0" + color_dark: "#19191D" + icon_background_color: "#EDEDF0" + icon_background_color_dark: "#19191D" + + # branding + branding_bottom_padding: 24 + + web: false + ios: true + android: true + fullscreen: true diff --git a/ios/.gitignore b/ios/.gitignore new file mode 100644 index 0000000..7a7f987 --- /dev/null +++ b/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 0000000..7c56964 --- /dev/null +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 12.0 + + diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..ec97fc6 --- /dev/null +++ b/ios/Flutter/Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..c4855bf --- /dev/null +++ b/ios/Flutter/Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "Generated.xcconfig" diff --git a/ios/Podfile b/ios/Podfile new file mode 100644 index 0000000..d97f17e --- /dev/null +++ b/ios/Podfile @@ -0,0 +1,44 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '12.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/ios/Podfile.lock b/ios/Podfile.lock new file mode 100644 index 0000000..7dd2d4c --- /dev/null +++ b/ios/Podfile.lock @@ -0,0 +1,53 @@ +PODS: + - device_info_plus (0.0.1): + - Flutter + - Flutter (1.0.0) + - flutter_native_splash (2.4.3): + - Flutter + - flutter_web_auth_2 (3.0.0): + - Flutter + - package_info_plus (0.4.5): + - Flutter + - path_provider_foundation (0.0.1): + - Flutter + - FlutterMacOS + - url_launcher_ios (0.0.1): + - Flutter + +DEPENDENCIES: + - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) + - Flutter (from `Flutter`) + - flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`) + - flutter_web_auth_2 (from `.symlinks/plugins/flutter_web_auth_2/ios`) + - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) + - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) + - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) + +EXTERNAL SOURCES: + device_info_plus: + :path: ".symlinks/plugins/device_info_plus/ios" + Flutter: + :path: Flutter + flutter_native_splash: + :path: ".symlinks/plugins/flutter_native_splash/ios" + flutter_web_auth_2: + :path: ".symlinks/plugins/flutter_web_auth_2/ios" + package_info_plus: + :path: ".symlinks/plugins/package_info_plus/ios" + path_provider_foundation: + :path: ".symlinks/plugins/path_provider_foundation/darwin" + url_launcher_ios: + :path: ".symlinks/plugins/url_launcher_ios/ios" + +SPEC CHECKSUMS: + device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d + Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 + flutter_native_splash: f71420956eb811e6d310720fee915f1d42852e7a + flutter_web_auth_2: 06d500582775790a0d4c323222fcb6d7990f9603 + package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4 + path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 + url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe + +PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796 + +COCOAPODS: 1.16.2 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..00a1da9 --- /dev/null +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,739 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 32341968FC43002146B5EFB7 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7AC5B6F247DD4A00FE8AC3FA /* Pods_Runner.framework */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 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 */; }; + B475FA9048B2F46A23848882 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6C8B5BF592804A9B53F95032 /* Pods_RunnerTests.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy 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 = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 653322E98AFB8CF8519B3600 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + 66E3B2871E6E32F6DD1D07EA /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 6C8B5BF592804A9B53F95032 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6CF6DACC519FF36038FF3CFC /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; 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 = ""; }; + 7AC5B6F247DD4A00FE8AC3FA /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 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 = ""; }; + 9AAEF3FADF29177722D56E5C /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + A105BA14828154CC4F55EB64 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + DE05709A17D3E9DC4C000700 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4B37EFDF736A84238B27502E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B475FA9048B2F46A23848882 /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 32341968FC43002146B5EFB7 /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 776D579E274E308D28F4B11A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7AC5B6F247DD4A00FE8AC3FA /* Pods_Runner.framework */, + 6C8B5BF592804A9B53F95032 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 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 */, + 331C8082294A63A400263BE5 /* RunnerTests */, + D9814442004DD580B88852F3 /* Pods */, + 776D579E274E308D28F4B11A /* Frameworks */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + ); + 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 = ""; + }; + D9814442004DD580B88852F3 /* Pods */ = { + isa = PBXGroup; + children = ( + 66E3B2871E6E32F6DD1D07EA /* Pods-Runner.debug.xcconfig */, + 6CF6DACC519FF36038FF3CFC /* Pods-Runner.release.xcconfig */, + 9AAEF3FADF29177722D56E5C /* Pods-Runner.profile.xcconfig */, + DE05709A17D3E9DC4C000700 /* Pods-RunnerTests.debug.xcconfig */, + 653322E98AFB8CF8519B3600 /* Pods-RunnerTests.release.xcconfig */, + A105BA14828154CC4F55EB64 /* Pods-RunnerTests.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 50D533354C9AC859A94F0DAE /* [CP] Check Pods Manifest.lock */, + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + 4B37EFDF736A84238B27502E /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 297ECD07854AB6D59A365BAE /* [CP] Check Pods Manifest.lock */, + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + B56078BFB4E09CB35D42866F /* [CP] Embed Pods Frameworks */, + ); + 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 = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 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 */, + 331C8080294A63A400263BE5 /* RunnerTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 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 */ + 297ECD07854AB6D59A365BAE /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 50D533354C9AC859A94F0DAE /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + 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"; + }; + B56078BFB4E09CB35D42866F /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency 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; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + 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 = 12.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; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = Y9G8UWM9SH; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.appwrite.flutter; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DE05709A17D3E9DC4C000700 /* Pods-RunnerTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.appwrite.flutter.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 653322E98AFB8CF8519B3600 /* Pods-RunnerTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.appwrite.flutter.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A105BA14828154CC4F55EB64 /* Pods-RunnerTests.profile.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.appwrite.flutter.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + 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 = 12.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; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + 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 = 12.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; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = Y9G8UWM9SH; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.appwrite.flutter; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + 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; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = Y9G8UWM9SH; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.appwrite.flutter; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + 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 */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 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..8e3ca5d --- /dev/null +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..21a3cc1 --- /dev/null +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + 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..6266644 --- /dev/null +++ b/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Flutter +import UIKit + +@main +@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..d0d98aa --- /dev/null +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1 @@ +{"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":"57x57","idiom":"iphone","filename":"Icon-App-57x57@1x.png","scale":"1x"},{"size":"57x57","idiom":"iphone","filename":"Icon-App-57x57@2x.png","scale":"2x"},{"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":"50x50","idiom":"ipad","filename":"Icon-App-50x50@1x.png","scale":"1x"},{"size":"50x50","idiom":"ipad","filename":"Icon-App-50x50@2x.png","scale":"2x"},{"size":"72x72","idiom":"ipad","filename":"Icon-App-72x72@1x.png","scale":"1x"},{"size":"72x72","idiom":"ipad","filename":"Icon-App-72x72@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"}} \ No newline at end of file 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..61606b5f137b6b893f64b628fdfc7775e42cf761 GIT binary patch literal 62590 zcmeFYX*^W_`v-hxY$24ALQ$5YLb7BX+GH=36h@>%_ATp-w5lvwMz&ExA|(4Zqm7JR zjD4mUW1q=3!z|}MzP~5;!~6OD_hinCanAW%%lmp?@6Yvle%aboL`X^q000rQOXqC? zfET*t1$OX5AE<-J;{agog4uZ!`v=*J6VF4Z&Q#{zLcgXco-S#ib+QnowWW_8mb9U> zoq~V~zscp-jK^S@`Gp&=tIt%c!(;Ipk9NsGHv#}=e>#ox-xYvgkca(uh2NR zU;5vLI*-EtE;3-^|GVe}1pjw&2fh7b(9daO_H=oMjZu!3d#R>+>ocj zf5B+wMwdCZsFHGS7*uMuE0XMat)%GK*`dkr4$3!CuW(m47myS`J^;|${wvK}B_sNI z@{-1r!TL3KQK_m7ykoINKt@oSHPR^84Y-7gGJAckc)$7R?3LS_%|8sh=zW!oh- z!GZs43Ng~nRli|V^4WfD(4LLW(IR$fvfnDY$?TYc5;^7-ZZHV^-FmQF=+#HV+;A)a zkgxpruXg+oBHax|?sEnnHYM)bKT0j>(Mpv7+LYibyBpQS6>W07!DQ~WNKmHL;2H^> zG=0DZfKJ}+HQlOqW%jODpWuAXACrA0!YzqiJ{3ZuCKL%b1zBJX8AD5&fSnD_I z1H^X%!1-;{o2r<85_7Ub&Bm1R{*$^~`xbO$jA<{mVV7F!J6%u}w4c=azee6>k2QM5 zJT&lJgXBveIEO{~W(HlGLJxkSEr!pqe~R_^d5tOgEQMPII4*?|SS6e>*(hh`^Hmst z_ugJq5M6v?q>%}>^P}?Dr+t93SRDVxokrpArO_sw1uMb}dRi{WdBls1wAgFEhyU$s znKKoBd!*Xf|1QQhN(-<XQ}>0V`qpknPQI(NM3I);e6ED#H75G7 zA9Sv}cojgF+?5Of=yKn^=SR9%BZlN3*4_;nRD=J!;i_f=)`a*rF4$1Qw^qw8iQn(? zsaCq;`kMFc$r9oC_pSCGXHUjnvDV7iavyvM-sr`t_4;N0xzsG!5q+RE48}RaY3gJN ze^DEwxYZ%*Tv{x17tZGTrC{ysXm<2|Sh%iYe){EpeWe4CH@9O4?{H1Ko9Pi9-kb5aUMbPxoy+*R9L>JdZ6W1|`MsP6KP zraMc{TPu1t*F(ht^noLg`DMGj`5f$Y^gr-^=$R7T0xMxIpAL|Ihvz4AL-*tT!c-Rn z{c+u`;HVP3b2F27IP+0!o*RC=<&*fa644DS*)x0Dv`_F4yzlcjS1IEWI=NWH0X7vI zQe}jFc(7T`Mtr=D7azEvP6(}D+~ANSJQ3~O{z+eJ&EJ{)dN-HUqrXubS_2Zgh$ZkWR(4;zVW|jS-1#BAnCb zW4$gstTT#y$#y6LrV%%ECGt-9!BBgrt+oCInOed=T;)$)U3;;Dno#3mR35?K|E9qQ za=$Bx^8exuicB#SNElYl+*=dPxssPq0;Gu{>U^{_~NiW5f_ zjXhRN+84xV%o}&QCOqj*MzXEf?d!3D_9(Y*kgWSV6C8wt?ijcXJJMbQpxj$&N&eSt z2Gg+?8lD6O`O%>t@#o#}N&@j6u}QTp+R?75mybmX*l!7^HuI;y;GW{2NJpI}mFt~a zhm#uLlh?{&fVwG^isaM9e3}2+3}Y`ZvCjn+hO9Me!8Y=C;*NC@vBc_n*0E!eu(lL9f-STi?XEPZ}XXWsI(qC zb(!~{?me+P-$@ICQzG#CDQ`ua;Sv^B9u|Kk3oH68!^ za1j8l_JkJzqV~O&3FxkRPP(@ioOmw3Ff`aH&R>u%tKI!c$8&7S@92h397%AY!-?CM zihjPrad!MzPGDVq$gI>w9)mNAadV#!t?HX{f@JFYXa8!9xTA8f`}(KK_(!|BUa>y< z;pJ?b0>1xo%8}i2t?W57k4Rfmu4>L$M~xLINALj8+(cr>z*3+&J9GEebiD2h$X2eZ z|9MYcg57uooxETbl84}S$9rsbW=9Fm(1@HlU+2yGx^B)WpA~=U3!jnqYQ8U$qbI_A z&%8s-;l)F=&rC*czQvKgld5h6oci}bOi}UUaS{76)(54qhMW)kK3GdsM8j>5$Y~3w z=5g;+#^3ldvb!C+m#%Se9`5j%PZu-df6A_IO)y;My0acYrGoxr8*^&u&olN1oBUghT-8#_prM$@8jOBjluFn>FGM636 z42{BtUwG=u(!LisyWIM61G{r0+H&9Y`PRAT!gn`Ue9es~5g+UGPJ~~#aMhgQ?EZNC z#!D5zysgE-Ob!5y4nqurenln|GtQS>U3l+; z9^8d@?@`Vt`iOj-M)P9Oclbk3!XhTLZVOHgefx(d#;Jtmf%Ohu?q@hYVTIZU&R0gJwdI>cjl7+d z=n2u3M0tgO<5|EtfJ%u?^a9gSM)>cbHy=bt?#|bz4k#}!T*+D=`QACnn-IOU4;&KD z4oibs;rfl=07+LkU+k!=*6w+-s{JjAW2dPtIfcYOWm<`S3@hGh+g7D3hd3^yt710W zq4{e&t*8$|gK#`K9RfU`tJjy0%P;HwMI2itP3Pedk6U{fo@>YrT1X7&AA!#^$y+8~ z+*p6U87SSE9mHZ=CGFdIg+?f59On+j;ry1qRxnB>8N+z6xCixdx;e|%tz%rEeC`NS z_C)=4)o*9kW7-pMy6C(pL`GcRpoB;i!S8Ri!0u*cqdO#&YhUlUu8T_En0TyE+HD({ zchduJFSs*vN4f|vONCFiNO<<#i4rR%ZXbb+eG&_xZMNaF>A1*z2W7l7`+34bM7k;eg1zPdXS0ArZE zDJTI5ps0L%yVznbn_9V`{Vx4W-H-lo_;nUVdMB)_BR%vQvs7G{9bDRCFfl{KIx9C% zaq`7$B6W$dmRf>PXo*lpw6mG(Zv+2RMo45^sLD68862Qj|1TB}KCfxLdg`vr#~j6D zHzZ$e7Q#8Lo;jGM0R`iL%@1+l&`Y{x7ke#WZb!`h-lA48R&Xi5e(Hy;o1abG%F4Sd zf4?*Z&7qcz#Ed>kMsc5BtY~zdu=joRH>y^RsiX6IZ`z^5xU$+GscF6=X3mayP2N-r zkHa0uRyWU9U;RPNURA4O%{*>eXD7^IyK1Gp!Bez0sjtZtA3R4;eACWu@7Yhe1Bw| zd5GL&RgKmZ`~9iuC*||^L7silXBTwuYdn690`LMCpa#T9;ozo@eEum|#V;$?iUBuE zpISyypi+FSg?2V@EHqs0-l$%_CjIF7+gT0ID`nE4n+@v)|2p=U{lJet$2}m|PVL3z z#orO8!)M_)6Uwc)`;-pL-TVafdI4tqPNjk0@V}4ZsnLw+squ{yYCaipV4yj{;;o|` zK#tocbp=JdZ%sMzf`JVa8bDYyo|JZ;x&mggxWUmR0np*c#>TDvY=T(~iYRKqqJ$E3 zx4L;5uSR6MNNO=uWmMKE=}q3;)JJO?>a4P<`YV2c5>tCA;Zgp$3wv<;E2y3@=Mmg} zk4NB`W0(-BpVb<6RlSk9CAMO8=H#`*Nvr#;!10xZ$+1V6^0kj=*53Tf=-E5T1E3ww zL$;YbUvKYn=nrY+VvMdjZDxwL707vNutEx<<77kWwJfnh7EYTky>rp~d3A~A6; zu{Rg4=c9CuFs_e^UKpo1IvnnG5X(3O*Qj>ACC#51ANTXx;l003y9_|7h~7@cv|Uef zy2CzsPSzgOS!qNvUa^*|BT=ffS`V&R)-4^B&vfmnB18gEc;d`95Stx%3ifvX-le0kREd{tIEl^Px%H;l?N|l#?majaFS#lPUWvdWxB+ zcXlgGf(>3^4Fw0jC4DCB+;UBqS^E(};D4kPkVjK?zLJ;B7(9~5mLza_-&%pt8YMOvwWJrZSvHE8d54eV zcV`{MXUken779(HC(4fG-F(CEA29#*!syQ@u_Q`xt~EmQ?VXR}Yc;ta*)ngvAkcrZ zT|!UgPJFkZva?ohA1FxO9V57+=9j~Y-eY63QSg>D=%a_+@bJZ{PSk44bG1HK;!ar& zNPXdtJk^HVsPgJbTZwM^Ux(>JOb9bFgz?3eE^Snit`B%gnr+kE4elcb&jX(Cg z+YJW%8OJWH84b+C{W8VO>7;#xTZg`~1OU1T1dZxqJ%#|*YsEu)i^9nZN~#`f(N>o3 z9PD8^ghf}V$%B>U^5AF}s#&Xxy;$jSfqqMW6*IvyO&mLjEVH3MBwk)R>MA9C4OzRV z+|kNc>xPf}%+vzy5)Wdm3)xMiXk~?LacW-CkT@R!!3O{E0Ugn%_L80LJp?z;uO7a8 zho_Zdt;}0C+g{RTSuy$B#^Hs62A?Tpo-NHUI{n`(I) zgS@!mXZv)e3PtK!CGw*_XW`PBS#9qY(lLpH4tkr!+f zVx=s5Bz)ipZiAVvydE~y_gmFkg?a?Bo+!|S_OguX^sc%mI;>a|uYj?NpYt(u>+)fx z@ebYL6Fsm=yc1ighnHg#mpV3u2MjJ-2bh@@59yjQ_F%+L$Oisvwe|TR2;d12V|1PL zDxgn_nC@Y4TjmyV-T7Scac@sBB=;LC=OW|VCuJJOr&N4+L!RSYkJ=x)Le%a0sLhwx zc;5}R))Xr?KTIrozTQT-dg#iZN`jqtO`*fjzi*Mt9w>EAJ18GF(%7&ecEPrOzC84k7yl^;=bOz6$*IBAsyb0OIiu^y zjcPB~#-)-S4-b9{4u3RI7Prhe3M{55AD2d}{ov&c)}FhvCB8T$lHxsj{xa#No=4s< z5uT7oBqe~m-c^r6CDJ$*-d4*d4#L+rM0l_d&qHAH7@|w`^``IRAwJ7Q&i<`FX3l{( zG;^la0m%5&1g~3QB zYGCGej*ry-9{hp)$EV*1pdM|Fa3&WJ+C{ zIo8c>Z1KeUOosWSFE#dsbH%yTp8)i_z>8g>0 zBC)C;Q(hecw#PTs#3g_yhgNI$D-btM^iV_I;A@bomtTiYw1bthe=vCNO>4MQ_C^}e ze}W!4*cj;8!u ze9lPZl*;|t0esnBH+z`pw&Af_`3YPtk} z4y)6(`8j_gmqqB#QUbXQE4YVBETl?s;h`U6{hlx^jzD3iupMRzm21^IYkcZ)Tp3fg z&NplBXs1mk%b8Ni&DhnR!wHc9HXV-(gzDSD$WP?i4a-c|-#CqkqSf$&u?Tu$!+Crx zgESj$xI3yX?VRNiW1E0!GHV2im{D~13CVAEPP@tPkO#=D$3du=7ub`xvZS6yH2Yqk zp5wEM=Ol`-m%lM2_oxnoMb*<`6Iix<6%(&)MmznIrCD=M z&b4u~`MFOR* zousrl>KQde*i<^26uOQHXIGXxbJYA;%77jTR6^eUvQWam#+4!^ezgjjuJH~IyZbT> z7Ij4X60JvuJN#)Mxql^gvQzTdo`)+VYf02q!rgQQJ~ukH=&0GZD|2FU$NAe;VEqd8 zn=Yq}(`8cmV~Yq?ei)HbgVMh6?^}SnK14&JMB7r!LZ73x4;uTeXgE#8t~nFQY8jjd z{hWod7%lXA4Q;vHxyd<3#&&~dbvEw??6T%Y5HA;x@wZH~#qbWVwhm^dT~c6Tc7t7I z(wm7`3zDyG1=#jj7@?YtDTW6|Z$|Y?@O<^$veZ)+UEu%qq%UQd)V>R#D{gz^^J6zK zgJ&?wv{!p9CLD2~FHwm8*H`}#18bjGF$Sn|eMY_H7c63!KFtCC` z&UZWHoDy_h29<$^?<8j_PGSxRYzbU0Cv|f|=Eg}FPJc}3bDZzoCpTpiX=Y?l5)E!* zgnr9(?6bf4$LB(lCF~w6M$xueA!rjr7zWf6W(j5&H~qMmupSGagvXrYC*0{Y)`AR6 zcW>vALqr;s*C(Llo+P&HE-8LtIknXLs+XXx!x|{#YJ_Pg(w~-$?PY^0HaB2$2WvgP zFWs8J49?3Sm*}Lu6pn{{`2)J8IAHvC=f|bHPo0gbZk{rB5NRKTjg1Q%8%-&+`)w_Q zZ+&uzcM2yu6g~;tp6b>7_7iPoXOLjn$Ng+|-E-d#04oj=8rgyAQ}^~KxctxneKJos zc8_HVoF;+VT@1`7#}<~9#r;8Wi^KVl9uTN#r0HN(Ks>u5I31d;vGWq)@j?4I2=#iw zSmF6yrnPtKZ8z_G4G6&w>u9ZyR@ti}5Fys-B2`Dt4h0`iXBrio?GyvPoPz?rEkOO5 z=oI?q!Oi5@^L0jJST5cdCtZtfftiD>6g*LPVaU)$0lgGkGy)MKS?|6m{@CZ6<=g0>z z8@64$zoY*1mE8}_#MfT@Uiau-<$>kJnaI_pk>yTCmHh2%c|PQZ~4HlhkPs=j>l2+#Neo z?)KNp&RD1Uys`%upi`hGgZ?=+|8o8nhPuHownH(Hw3~}1c5|BI$8Obv3&H-S9C+|= zr07SVbGW*bGaYcew{ql*;8z!{=%krLu*T|Q(RSh>8C0Ix zL;gBl&+xRKF`8(JIi9Ax6KaEB@j}vHK*b31ia9b{GT0MW_6KR?Oi4xwZh-ZHCVDIj zapM@S&uhR|RXSdoSC5GEUL)=#xCtaa?TZ1*@nt98A)b!AzdtFSyY&UCL$~kLj~8cC z&u0EokOz+nODa6WoX1~_fKOi)Xke|zwVjG*6uk!Qu+J5C0_1ZLEhk5dbXdJuiHXFQ z1i2DYg4Zx;5bG@&Gb0LWh%4p0h1LH;hE*&)wQ%9nCk`zd2%)<5$zG^5-7~^?d|o4t z7jkLZHZ*N)Xt4*5e=jH>jfq}hjnAqHu$+5QY0}`x5=ZIaF7NQtlVKs>0*Rx}MR5zn zNC;4ES&PpNVfXn`WREI`wbrkz`sjo=c3JUwn4>lMQ}aM1DF-B;(?ewy!LrNy*PVUQ z5ohUQ0P-M|o_+*=u-c<2nCqRDwdPanxfdx8*#6vF7=4UW%}Gh=WMJOoyEy*G1#li; z@U59d0a1TJF0AS4=-ouMJ!v&T*d7k>UPunxJh|42Q#fzq;HhiusH!di25cBlJtbgs zPt1nE|C>LxQIrcCAY!SnLAY(Q>#3Tq{fX7rGAcBTK1D- zKkmRI1gZfep0VeM40GkX5pTXrSV|2HYa;7?o(_Ca7-md9c3xm(C8PhYsjgcIR^Gq| zo;vemkoVB)bqmYm09q_=J2M6jN=6K{>b(!&%5p~BMe@WrkLjtcOUAtM;7l9n-Ww#n z=qe9XE`c5?X3(fCa6ub=9zZ8{Z@`bSc$wMk;9JArp)G_yUUZaihlfV<{H>+0OU?ilH3WqCkC*6(%X#frbm zVOu1M3rr7l)q=wasVvhz%!?MYMl^OLYI90olz?wyj(*0PyC@qQscA8ZUcj8NKZDGU z7Ufb_8HqvE7HrYQ*zWZ-AhSv&Mo(}TJf8#5Teo8~V&lhf#LMB#KIM}PDEnw7_RDHT zDAj>>oa)kDn+W4lhQ}U&5)H#UsDA`{(_n07L=D_^Otc7oZv^E03>V~jjNn6D6!Daw zXlfCsgNJ2gL5NXNfI}G$DU)Q%K`AF$O%}oXdYE$wtzR4^z6LTdL130m;AH5Sn(+Q2 z;l-_RZiDlziT~$*h(=tUNIkk|tsJ6H z`}nRApZs~H)383pV>ZL&$;iKaKfmKcvudmgwq#-a!PRbp*+V(Qt6_x*!g{T}NZu=$ z2dR9k$0bYsn58kLR*XN+>(ioj3Gp4B4d znK9o!&RlTy zytbpF6?O9PP23I$ouF#>K>Dy6BMeM3-zvBLg=2+Nz9NXliy-ytsJWZ5r~$EFdGOkC zAU>pAK>kJqg0`{##o ztvF4Am#wH2mC7nJvYgn>Za)3qOAu+B-+ruoxDeiX**M3PWmg22w2a{vN##$Q;kQfL zl50AvO4R{iXSmLx2x8CW;&r4&8|Z@wF*iaHvs!Lg7?mr+cEy3?GW5TiIuiF+taNmL zxn8@aTqM7X$%B6ijmP4LPwVRmES){b!!YR44Bf;fLTDiaq5|pVko?59P=s3b_GhUH z&~C;Dy-6`sPP819h<0AEy6;>KBGP8%O>@_ChmoHu=#VW-Un$9SVQPUVd8Fg^HSyt9!*fB#z=NyXPTLuILJ~7e=;98IwfssIWHu(F9AU;6GyX~q zhClkH^Wzdu`Q*Xzw=~mFJGd~{QTuZ(*MHDheQYJ0-NQ5d=#?*PH+35mV5oads}c2< zJV{T`p^ewqYTftLdi>Z2g+`O`HX8OMOh0OxtV-P?JOh1vH;x8zK{I*IA8d&)t}#IY z_`5aWJ8u6`X0w)YVOk7mD^8n=BwbxDn)db;g;X(TjmsBVtMjnR6M2}PMOn#iPC&90 z&$6mp8d_ga`IekK$7)%u*Zy5}AwPg`ghV}Zg?r-}Z{xBFuE%Yp6o=Do!7`(R1KRAy zP+#|tyj88KjBnv36Vdxx5gs5we-KC3$2go^p%#Avo;^o5X&AeU^Dw+66~b9G*=~yh zjHPUnD=Or*A1e7Z;QVFCP~_&lojU-(cqo@S2_hBebT)A|KzkHQkm){$66Gq=i4^X1 zDluodru*f^SK@$8)O`Rgq~F}3bbXcjV7L%V9EhAO zm=!zgwGZgN>-r8m43IY)pLU+fcrCF9@IhD^7luPb(~SQq#GWXuyqiN;6EuU) z8IPC;;R}=^efaTZ3PE`cVSwxi8F6;0q)E;6*;(IF$>V_SfqVBijuv5ws<8xxER#zBx1Y;uuPaKyObeA|GP)NZffZq($@ z>UYP(tc9T%LQYhb$`rTp`szE?7ibOOZ%Y84{Kv5C)^T835UIxw0TgXx9?Yq4f3L3~ z8%7?4xc$suvo7vpIrYjR<%LvTb_3XR6}1(f_7HXOA13bWQv)ipDnc^|X0i*fdC&B8!Op4M;W{tj z7~h7mKhXgFFJ!fh%bM&lieldTrqj7Y%6O1gUe$?I=J8cwujrXT>ks z!kutE1ebsT^g!rYmlk2yDkvGcyXErrH8Rx%LY+N9A0hUXaw40s`Fej68F`UAX3#Ic z%4w$AbW0lYP5#m40p=UfbrT^NLGZmcJoW4$VfsyRK+lt?NDB&;mD(Nmrmx#0l$&DKkmc-ECyln?iW@ zy&$}Yi^L3`XS>iFNDBh435Uk$z$gFx0;J;+|nVmrTig0elCC-UCyP0^kuDd-&mw@P zW8#pAv-bN5$_3?&iSV*hSG)O!sFn}*FF^on#)k*F=G3+U=TUP%V3TvE_RB8|4n+Y^ z&PzA}(Igd*0V9X9odYw4Xw_F-3oUe%K>IawZjW`gKJrH&=pQh{{?Sptsy&eqW!kO@ zIF#_JTkxif2%07)Tf%@vsHM(mR-a5;=4y<}+GP1olQ=XR$=k&UGvLw@cYW869`)Rklm;n6=n{i+ zyTTpcd78&3MmAe4e`oc{Jw!puVZ#;FXGsecJn;sbBM z$eo|xlr1#Tpf6)dWci7(a8gTnsRaZ(cg=wB$)J@Gx8PQ(LSnQiQ;`YAOgijfj!VjE z{;;oH39!GW2mqE4hwkkA5Nr2&8v6-I;>Dw48stR4+usqnzN}){i=U;G>@04${@iIJqyz@-yK?eusD%$ZAt-2Q5ki$O{ zMcVI=(FYg$D-q?{2*c+jMU!hOn=v!vwNXN?;hr-0{0KBfETgV>=x5GT_*bYn} z%CW@JT*Kq`MbQ?w5l~H%3#nxezRaTpw%HdYvt6^TH!*XXNSx&}|S+iSlUUCFzln z7dKI)I=R*s1>p7?!U6bBct4KR;}F)+89;kM)?}io`!@G7y6wXLi3i7?s0x!jDlqT zB@)<_WDpyEyespzka4Z8@oW)Lr@=frFMxLZ$Old=R`j9}RrRK5UY0I1QR0pc=JIJvK{>6VVf~+L}l(f&rK9CRkG%=*G2X zMONkcJYFtFN0qG?WR%FYK%whw(a`MUoKmAu)k=cOHf8(Iy_IS^h>95sd9_7lW4MzH zoQ3>p4e@~*&TC66pUDDGrT}2vrp+G=>4^3kT5%u2^FC>tn)sRl7Ozti^kLM^UzJ+AlzPet1s^Wo@REyWfF{Tf}7ungq z@nkH-0vDm#9j2F;NK$a>1<`kwZQy=7nAXVgh8wF6gul_)lC=Oi6@Rck^V9p;0)Txg zNkp4j+w9(OKClc(QmBfewukjbWI?=nbZtSLZDD6@#;{Ag~hzk1UnogJ}GG*v> zYJxl{3{A%6u%?bE7Egs;KD}tg0}Q|51?Y|j@4m(K?oQja^&R~(uRW7sdqdfTi*QhF ze~s#A+L&?+{$XYA`;0ZsROWV8TBNdhfZVTTJIVJYj9m^JTi;Y>^!$pg!&$$&*KyUv;KX!m?0c2}Cl{`?$WOtb&E1BePxfPlE{{#JP`7>a>!)=d;7qYkVm z=5WiMl6Ir!n5Z-iGbK6Qxt+kGC|Ozc**_;kG}b;K&uC2q$a!;ZA7OLM2*5xi8|=qs zE^P|q#0ij=Qm{l8ZmL!t6cY5Fh{rdbzJ$+PL58P zITS??63VXlOg<-_&fKLgNOkr-d;I3DYy3$h!9eb}ZMlOIX`#weiiYjuM5p~Tg8GT= z5Y^LWVi%cMQ|sl`hz=;PiFrty*E@QZc_QLHGG?9->NBC1gXp@I3F%+MPtaQ&1rzSN zMjEFvTjsjo-w-z~sOybVdLW%c`b^!SNVTrrh30x{K`owxIq4~ZWoz_?Yn_}EdA#kA?HqZMJ(xLS? zpn}>9QKqQ#iAzk}X$$3FCU!dWSSlNgp3Ba@&3zxd)gyn@IUiR!LfUgk000t;D4_1K z+BBb)FT9(tXjxzbA!Nx4V2(xm@8=0ZNL ztj}#UustGhL4N>}uAptGzbi2&7q>j>ak%pS@P094(Y(J+zoJ~VGHKB0z4VSdd|8#= zxG2-j8o!-&1VI23$rIK1sugtxS>Oqjcr-Y@h6U;&%t!&BD}DZU^N^x}naA5%@aV=G z%~noL;DRmpLs14$7xD*V4>;*D9Lj*Y$aV{^&sN#5Nd+KVN5K6hmj{?ccaPPk0Y_@y zpE}NS>7l;$?xgehq52ow+$ZP6zz3WqiWQTaGCry6sBsyE^2eqr#RA)h$k2(tD!Xb| zrEBk4PeT=ET(<`J0l1(-^sW{MMUZgjDFes`OmZ1YBPh_NJ zakI$ex_}_NpbFW+Enjx3Yp^oG@q(3VL0sBU@ggbo=5hxY1~8wo{UHQ4qiO53qegS>+o!oneY-wMUS-i)Xjm%aF$%JGhGN z7*Vj{H#U_;Xi?ys4t%2q4cXjPpS|FI5mII+5}(H^Ik)^WqhIga=LAU@;&h7;XvS^2 z(jz5Z{N-`p>FB=^!0ByloNcI1KAtb@V+~x&0~eG|G8iOMF`Uc@k&;MGXx9@6ga(`; zE@xEX`Vc(xkY*cZENcmOonY*szY;DMl z5zs$AWcdC(I!d-9#Mc8Z0Ruy{heujA7iq62*A@hhw`UMi$<#(@G{OfDcJT z*8$)a+$w;R5ja~&cru{juE8!J8c*VdSo-;iuoRno?&R%qiiRM&cI?*au`>+t_v06K zR9sF$F)-1NTNAj~n6-cMDOU#CSY}p2q2WiljCO7uFSV0VOR!1|Rj$Cq9r6T@<%7_e z84)!Hle2>>=*k6wl;5M`=FI`3zECthmyLNkXMd(KtuMwC&0?L<0-DYQ#a!OP`7bX{ zCyPAr+_{6iu#Hq__UzeBAzy@Z$0Dh|vMX~&30ne7Otn`@(|WcCD+mL84?VLrN7k8x z*u9XVP=0enDRGp*nEa+4ZE7AgKBxih*f89jxY}yFj}7oNkU~md^0;b4FD+~0bLibc zZdfKTye6Qf@fQ`o@D+)(YeN;olL&4h_%f{QT<4|7YBL}v42l=ieM&;Znn@THVDnJw zp)-0!6tQ8~!_`X5JYMi_k+P%e^8j7Hs*;8f2|;UP!T2KrTH;JX z6l!im?G@-H0Z{%~*y&arhDb)#wU$deX8U6^fh25g{oU>(0wAPPK;pM&aNy)wU)NLC zsf~a2UuQ#yS)i7LKKU^pq)0Tqfz!zk?E!W)WgLWR1TJ0(&>il3jhfJy7lSHzLmrOl z>sxrLeh ztbbt|v2JMo5Sn9##t9yXJ%#%pXnjWD_zYZnvOVxiv{C^vyl7r9aPnKB>{1d>?tZ4u zw}hVpMF*gl7YvC8?w->Eitw=e9pY;P*?+f_b zySo6)_s}|M$_dwJ#R|{ilz`jc&x+pgC3ZW{^ns+>XbCh#*Aw!2!LcUMz$w{Y z4IA=-ZIu{Wu(x{jQx`JAnGfF_beE`_{k{+tlM)C1_^N9rRQ1RIYqkNjrI`S^b!aW) zEJ2bW`ZMBCJ=A`TAXU)Lh4nQMK_1exwR)6P#$d3>txIq<#xGN#C zVM>b-mr#9xgK}y`iDimK5h-6WsdGKuzv3(%ff{a%i?u&04 zOh);z8H}qpHf%0}el%8c{7+5RR0a>Aez#SDH#i(I$N!;(_YzLV41TXXr=%*=y3Qbs z+x7|)vTWZOtMFN;b3#dyCkCM`JOF{~%>yDoSzI}VM}J2O%zFT~VjQf5CMd|8bNj}Kl|47nLW=Sybd7u@*w916b4J^LLbW_4V z!jn?$dE3|DAH_Si7|!jkkozh?4}qB5d`+)|PO?H2jWM)Nxhc*GYK>#RLMWg4yb&eS-g zF`M^H(4Vn4t0e0I8ZGcN{=z`{kh_CGZ!~RI5Figg6sf6Z6c!bZCd~)|2a?;nz=to_ zEW-cNvVkNabcWpUOk9R`;{7wHMeq#y!@Q#Sf#%U?;9LC@rl+7hwdubK)WtMRTx*dI z<8{%8Wz9);zhi&9qz{!i>>tCFv zT8BkzwAv_4!pJF5F=;9`FV0f}ps5IGQyGu!;CRg8GJpq{1de3_6}V+neY}Cp>g#eo zYBd^X;I|gpvypDh%C_E{xJaox*Vf6l#KWTCQ0h2@k)P>nbH={+f&1BD$cO{rBq0HWwxFiAbV0n6 zC13a8LINSQQPxYOx#Q;>4`silP;=H~BE`KtR^$c#<3ls? zJg=Q#yKYxO6c^me$>eexlvRM0STlF3_P$r&&U|Qd*vL>;YjrBVA73objd0Py5fj!N zChhX;n-il+o40zA{7c%`|5fk)!Dih$BB-7wv)^F)IZlu+5%S{iUfM|?hz#2S>~lDH zVpNYywjKkTF>Vx~Dw@cV2DYC3+l*vpu=vno&$jDW=Uy~4Pcn;B0H&!o!~k994v6>$ z8sqy6S}JeQ5n2K|8G)OsyVXx+mcP<+R@}X7{EV48lhW3*WU2G7bxQ2c8fh_-Rp&!T z9vG}@MJ>_9JEOk1%Zw31$A}S*fo{9wPz)OF6ijvq5@_N0^#R~) z9$XAxw2e4r@?v>$p)?Fn!q6fTn!2kM^SpuP<$iKZtos+e`EF82KrSQhvTy_ARlAJ{ z&Qo4(b#-?BX~(RX;Sdi7gF|&jJ|Km3#6JnB{}xbt&SrOKY|f3TPTM9`lnzwpRA^-^ zj|bl>1E52g*}2n^%;_Ag0AR2iO5BsbjZ6qRIrbm z-#bikJpu1?y^!EZsHl z3=BdnhGZ2b`Z81KrEHlF_9$yhn0_Fxr#sT_@cZ(}XdDIW4wrMFa9To^$F5r9pVFw^ zZRSl)XVKCzzad5p%|Sl!q-aD(_@9i8f@r>-KUiTsR-!Li=DRwJnlwLm#A;Vn{U%ap z%a6LL!H~sXANlrmME1od({6RWVhqDum(KUIE$Z&;HP_AhX5 zd~^OFbUf8S46>Nw!A#LSLEw$|F%NEF(k%11n3zyY1J#J(kvwDX8)WQ{OqBwJ^AtHmuZ{h7Yf?p{9d$Fmk*2@ijg)gG0a#?b2@ z4gMdNzB``E|NZ}Ujx94OMGjeSBO|LJM^TcD%xq<3lbv-AD$2~xE~4y_WS*n4GBY!B zkUescd7N|qZr{)Ezj_?^eZR)_y2kUmuIKBEmKS$Teg_}Fp0n@+Iku84lnXMnNFYdW zx5h&A^B5yAVI;$n=RnO<3{y_Yzd2f$W%X z=88$8iubfVwI3}^wcy!#&5*XY_0AXZV%oKi=BCM{-LCn{8DnMnsM*DWjfS^qzl~el z&7W9$rklim-#U4z5Gwd_K z6dgR;8m1o!Jxh?Q7>N~KKInCi&nYna$Z>)<(+=uVcpFGQb1yJc`$`%KjiP^9x3Tmr2hWM zH%9*7$p3kt@~s~-cy*T=AuBj<8T{t+fXjce|E;l13KK)mS2zB)t-cy~tvRRKJ$%y? zxa)}2r6qzUfj7O&TX<6k=J_;r<7d$DhX{|?yl|n zTJS%PQ@fQ;0(!U)7d719}|7&M@80x|F#R{ATDh|f4&L=-tNUt&wUag zhQfx_GMpuQ%(}h%V)QlzV{vV7blzhM$MYrP2V!^nMJTI-L5<#F z@w33;C6r$ckNf-kqhcH7+6CpQ97sw&p*$5jQ;bZSr!?~%C~rk#bZH)*M7WNjtTU;J zaOAXR9^c2nyzrjM1exr4?HA$SVk=n-CuK-wnSe--c4&`l7Y6kOuj~zJQ1|Rq>JmT? zauYF@&3_o;)}3@l>sMFc4Q>kg$xo?4@#{f?2)-P}!>o(?FDBo8$(e1{8AD@Pv9P%q z{|5pL5FS}#;8PM&(ilXua80d-Qt3!9aaoy6NuA1@sv*>PIo5nPLi#fN+Y!|C$|@V! zbs5fC^Lg}0<+G>^oBEMX3fa+67{G?7ieb?~qfvws{9~E5#_q_e2l0pTg6Q<##3$yh zYT9kqj2TL>rMH(aEmkKZ5rsf4K~uy^hwkV1BD{f;}3NtPy3)76i)5 zRtA+FB)9Vefq$n8bEKp)N!xChX;cCc3J0=x6CeF=KeBDuO7`g3_+kA$;msyV$D~-- zK%93KgKG1hjGKIM{_m6fO&KC$J%dm#wRm~JC~06KvAeZ4^iYF$ev}UilCRsads!yS zeU$T$6M636;>5r4nTg(+8fJ(kBGJ8y$$!?>AVvtqq>#nik;=3G44Nn z1eb7~*Fo8adAwS4BYGB(p>#9SeZ>T$5cq3whDT|*`AT=COT~Y!$>Gn7&CbAH8Yzgc znYXvqXa0uodWhAw1|sfM_nqD5Glf#;mgR+iS)KAC>A0BS&bFd0V#I-Vszt?ydP_)U z=?-&+R-?-_0ZkmGoJhaF^)6Fc`#Jr$Wu)7clITc*IIZ;Fir0%$If}&(t#cBoEfc`! ztN82@dyGvW<6Q8BT7`L!N{xODm1uCAi1bddb1JdPtQ}9#+@j1%G@(DKtK0)6ER%E_ zRA3_xmZeh>VMK*gmX!}U9*?dBjPcV>T*jozo!cwEp9N~qpD*Q+U_1IFP$XZwZLj^M zIr>Zt!~XWJL3mL0_3O*wWZ7yf%g1)Nx9H}{$toBV$-T$dC}+f(q8IjY&o40a_h^n3 z%@#lnPDH7k^HDrU?mDmRF}HHCN*4IVeA{1X?2ua#zCPiU^x%miE$XOd#MRQg&r|i+ z2`>BQ-x|aV_rH9$Vo(;4?n*|b*N9rM1cce2-gVtpOjrOIWON| z7rrVtE@eRxLU@?Su_bi5E|-@AkJgq;?VSEn=b}eg+~~Z1Y1P##iaZV*;ov4pc`Z{M z#pdJYj|#)9LI^z@=(Bx<(UTOnD`@6_Q3({cXSlV$gn!KIMVh4Ro@J2C#?SF}pY@aX zXt1=Dam^c=5r4KXA^hrwa{jva41~@zA~P&j1S)>}41>3;XX80iuHKsV{f#k7Hl*6z z;oEzS%F{OMAHA2_FI`OcY}RMS;Z!86npN>{My>*x$7LW=<7klM%p+vw6Uv-m@QYSn z<>UzgQ5ZplEvk~y2bZq!Lw}I1-h1q>Ql#AV_b}@hO6Z20&F#D68Vad4T8-Wsu-bRM zcyi!*-b6|qd}_1`KXQNU80CvaKPTL&EAG9#WVpnr%9Fu&Pwm}rYh3^burW#eUbnVf+(@jGx54r@g z7F&7^!+{(-^7g0vU#qVRrQtddIG)R0Tc!(hxU6NF55RVz^pI zcl%dvpl;j7Kqy|-a!ac3O!Rq3Xg`%I@-KeOm!$ZfG6mZ{%O5JZT~(&GdHIGlR__M( z09i#i)M~&|PcPRh>M$2>U-#$o@*b6uaX{xjRsjZM|#S=z5prz zCNGrkp1FMO31znXdB%29V>Bm%)e+~y_g{`{g9Z9LUikbPxh>ae>qhfHBAr;6?4aS+ z)2q+l7fUYy!HsNBLC4gDi0ONCHdV%%vmymA(`Oc`4>` z)O7DZy8dRkDW#_@TE+uL@g#-dE>rGn+O;me;e&yA2BG+P0&H!!cM z`-ipam+#IeGzS(S5qNG`fRrMn>T{g&wqgLr;Ptdgq^pLY1L2t|{!3fp;PG8>hkCk{ zX(2abv?|yl^?g-&SBJ=kVM>T!K4pv>^yd*b>OD*%{tOjhb~`l>n8Z=BlZl2 zzj8;HG|jgh%{~5>y|^JZ$RgO!8bu*^R(5qUF4&z>v=?oer0<`25ekDE4)WMtmVPy? zFwNX&)YcGKXV2wCem5kR8E%kp|Pr<=a^n%^uZ#UB@$F;{+8CNe9 z2(*ru=xFQpLVqsw#KaUv!PSg-t1gnycPrSP9`PlP{&XNPZ3OZ$DeNp78LR}2T$%{h zh_ev~w3zlIzZguQBTHI_oLkQdqJCHnA21lVWkt9mmGk7%@Uobze%@f>r)2I?LMkU! z{zGdA($is6%XP6}q*KgE4dk@^*y{sbIfmg4UuMd@j~Q%IPjOSHPopJXP1NQT2F+0U z2f|VQ;<+Tv2+DMB2GV0x2T?)S8_o+_W$@~06VY$pq`i97RnwJglKOs7@5%ZSw0PVb z=J(f%FrcvuUG|%j+$@}^V!WOBFt3XEGJGz0BRSaabIs!R&*AJ9{cK$D)CoeL&Sx$4 zF2?x%x&k3`LkL_ioa2@W`L2GQcf8Bz5Z?CSQj<*1)3S{s$<)?|P-99!?FD=`4xs@W z8PM9k;~ReD15@K4(t}`bTUXpECFuO$T8oN zO<9LPKfZsz&@Yp~$xP)XbYuPP^DPvYKb@WY-PIRePCqDDwVuCrl%|Mj?VX4^3jL^$ z7*8>l!Lq_RHII(BZb##%I()y5%v0R98h@2t^PNClzN}~g>sn53m$6Yhi5|;;LgSv& z#XSd}02O|)@pK5|@gs|j%en?#?}JiTom6qRwi~elZ2z1tm0i+$xV48~&M3WlhVr@( zs?)IuCnuf1TOMv9xx8_BLm~@pR>ueZ-3r+MBN-Dvb-IVjMo-Qdx#mmub!uhs5dFYzEPjB#OYrt#d^@(3PsT-4) z@FVXQJh-i!nE%iUKSz2xm~H>j-}Un!$IY9o=O}J}{DRj)`IEKm54y_;efReez&)HA zROnPn`0fPO!?F3vxh_O$3c_-pYO*1M!dJVNtBsGV)#bkOx!iREe<^JtsmuJU*o|zt z^~5Sl%W{SnLEEbzld>!2`4P9iAT=RLbl0nJup;RjDzx`9iT>oSqH)q*@Jm%2 z?wZ%s_-hr+n0a}LWK5SFxpj5xP5o?K;LQXMU@k61O@Au~`Bn|DFL)JZl-W{b(qU?l?0@BNwcNt$HJEkC0e`}hAgJ+gVR*;J zcVR~@)KS-lzwyC6IaFib?IgI)oVLK|)X&jUK_J*ETHZH&NgK17AZU?6t@1RmWl}oF z9ZVgE>veQ7<5Vh0@@f)@6hK^Bl!sI1c93np$|%)t4>2l->Otdk(<%*)`}Gu`4li<_ z@wby0$1RZ?5cGNw^<>p9&`4s{@AF-u3MmS#lD}a>^A=Y0{hu%T5Ub}qSaaTab}B~w zGz_CwnlOhwa4o&2pwn%ld|G!U=AGhmyOirQgI?t%W+;mef41j*H9IqIiy#(kMY%r~ z13O+i${f%akD0$MPd~E2F@c8U*8;6xkH=?KIlcMyN7)2%Nj$F%-NgIK6CFW$2T{_dfVO`VnhT7q? zLQK;!Fucw3194}J=E0jQ*c)QNHe@x~(WAzdB;QUpkp4!0+A=cc4{ZzXWy!j;ZW!il z<*VQ1Z6m6XtW`*Wyr$&`{ra~NH0%@X_xsLY4&L(Zg&EGXfaR4{j@IX)+o*;p)*~Ax zBm0iR%VYuEX`zQh3&Y4qH&qIvOJFs=5LPD4UoLNPecq^6>n@|iEtS>7WwGW5HPQ`pBogzijm zrDe^(haUMsnbH->RO4gl=og#fabB}WD$`I|_N4^g+t-3&0GIqYNBE}Br*qaBR$hLN ztw7_d1!1QLDWx;8S}Z?EmCwev_JRR4ynAM3BJ-Y6>R}PX`!2#V|G!}DETy+@Vo-9Q z)z5j+N1jh3z_CVa&>+FkH$L=-2q=ep-H4|Y*yF`PSQ*t3$u|>t6dP_FiTS z%6WJg&`<4PevvQkXu}f&G%o+{=zy}e756^ATAA=EQu{e=Re-pI9saF8L1$^|Gm!RO zEZC5kF88{;ywqZ%oSv^-^&|LFIS4!jtk-S$%f~+6-sbPB8#?#k zjSqHE3|#W`8SQ&`F%aAnMq)*(LUkN&tXtfsgsXKVQuB?%Ds&_8uumcm`i6J~8=2*tICW)ZkPIFTxwS}setu4?8Nm!{<�%Ml%9wWkTXDK3w9`d{2Wvi|jM)x&Xi=$GkP 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
Nl6{pQ7)6xA!!0tfPENVrzlf+cc^4+jCO8O*1-I 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 XOdAWZKZ@;_zTC5G|9@(BlF$AhONutq literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..7b9bdaa15c8d61233d813eb1d27f3a7b4c807f99 GIT binary patch literal 479 zcmV<50U-W~P)6I=>3h9XR*}ejfzxAP)zStC!9IR3$ePf;Y>B`^gNvTR}q+cr}jPzFra;QK!MYz{s=N9sH!fF{+sj}}Z785@SjL8L~|^bd4m8n#oA zOv7RXMtX|_HSrZv84K9cjyxUw<5XI%!0d!oQ=IV8hFr;zFdHuqLXjY_bYJI9CC1Vm@VSa=zaiVDOg&!oSC%=C-vWj&NgSD zxLnB8Beb`}nv~5%!6TH?-$zdb8N7!CyHJyo89k>@?qXdTz4oXYKT1qNxq0d;#&|IUEUIcB&Z&G=qg18LDB`p z5Q)m#Ad)CZg-X&e@Iq2cnVKnT`;W7;mg~&UH7#U6*kzbGm*4r$oNvxdC^IwuV}<@} z04)Uptttp;Rf`;Oc0!3mnstpxsfJ;h1N3;nFT21`Ujv=JK%X0!m;@rifkX$8l>#ct z0p+a)LTn2N$P9k<9(=k1==msjX>0=cFzEep^9yil0_b2FC~u8vNA&{=xTfde6SsWR zsnMah-tPtb-P?!x$OZ-cK z!oBM)(h8lch;Y!J?Lb*R$Q~vEiP#Z!9(RCG-Uhyp``4NN3BGb4R9mUrMRhHwuDtGgox;%c`9rwy393J41Ursk}~n@_+cPSA>^z#N}+_yu5 zc-w0p#H4iX2T800lwG_jQ*HkGM|jSlZffwnGcjW z0rAf9>-ISUZ n`Im(SP!Q0nf`C>P1hlGOZz%o0HZb@D00000NkvXXu0mjftqy?H literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..201e0906547325659a702044190e03d082dcaa5e GIT binary patch literal 1306 zcmV+#1?BpQP)6U*v~hiOV&YD6Q88%*KrPNHlSZ`gZExRCY1yZog8pfi7xyKYU_fX z*qJVL-Y2kd4l;R6pkpTvtV(oIZSb&{6;<@z6;LxDxoucrpOF}_S;m|9!m6#|de)9} zuBDg1iR5MnGGs!)+TMv)*V@6FaCJE@8%O0=hmN7|)WC=3NF-uE*%;Xa8|zlDh7;}n z+MAgB)Fa5)J7M?`*RdV^8{PaH>^bCbjIDcN&32giSkf!X4%ir}r44?l_t93NbP`hW ztQ%tJ^~A==<3~AhSDRbWg|)Efpf`vJy8L@6o#@8tBxGq}MZehGf3u7Xq^b;={%Bti zx$=gL9DyvYKtEpVCM#ahW<_n>4Ns3x%F1@YCUe@b+q;b_Qu)HQVPj>UM+A9e272T; z)a~;gdi_qs04E{;z-I66Y;u!>j5r`>8PA@IJTt-03L;3=OVE1CyIsV>*~O8Sh4q&| z;=>x{WFfDWCbZ<7eQsWUt_5P-SbUt_l0JOg`}zHMAh}sqLtZUC(e9+E;`LAM(@Ej2 zSxA14ujY2Z{e`09TdanQl@#Wo8+M`Hm;85%Mv;o=Am3keJK$*4^RW!hvl_0CvNIts z2iiN68^=R|*28+C$7VbAl}SoWBnVM%7 zil_Z8u9YGQ*x5KAb9fLUEVjUMZxQ;!H>KA^>K1zfgX#L(XaZ+{$iC_ zre&b#&U8*JXz@ryu0ti9TFOm>VcA^Qfi)csc2*%O@m$(m0-6Ilb3{}5DQs&P&|APn zm0a;)mUey)QauM<`4hTyeK`9xKm}7RnM1p>Y4Fh9=z=ey>963!Pe2N;JT%t6uNYY| zA3e|tKR2NJ{)FF;I61bH5rrYgOZy)?*!$t$J?va`j~e0D#^x;hpR>+=FkKfy09PpV zfAA3AS01k15gU(Q2+v^s}jjP!Vq0RnXriXyKw&Z9)RGcGaRqQW&IB zNra0sMjDI^D-p$h7D7K#SQbq>&WSfO&iHumId3Y&z_YvO+;hHr?mhRO>s3`{mc={U zzz4XvHdb%0Lej;@>DZ!3V z4fI)o#3$1Ga$$d~;iFgDJPr}_G+SCTW zCSr3Uie9;ooIf&Swzg0m7>2>&q@%}!G#*AatW4-6(+hj5pY0wzQRsVa+t`TQ-Z?|n`5g86;Os$~{G`%FKLn#Qtbx$|}j=)EA^cx1J0 zDn%|FwW#eg&G4AVQ)lKRsqAi`Qk2j1ey807$ibbq*=j`L>EPc(sag$D5{b|Yn;Md_fT1yhi<8W$1f8)ZMca(A3}Cl#R_MNU9uQCcgQ}a>@4@t zXjLAsMW6J;L^!SkI(pEKp2XvyQYwu?I_45;Fp3M{>;d%DRcoQR?ke{4oZns}+s);0 z`2>2V8HV0F#YkIb?lJ;WS_IeXq4Nd$;2HG2i$3hGB+EX$t0peSz1_YZ*|yFd%;ap{ pp7g#eY5owLWRCxl=Ar)!^f!7pv;n_rDV+cS002ovPDHLkV1gBTK3o6* literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2f4c5ca6c495fd9f806d2bb0f659b4cc46383297 GIT binary patch literal 1280 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..bbb434cf867fead8b9c3da9c0c2ce7f6fba37789 GIT binary patch literal 1852 zcmV-C2gCS@P)w9mrL_~=2 zO;)CFprI29v?LN}NhHvcNT4N=KuaQlmP7(Ai3C~_3A7{^-o}OZpdWt zK0K0Hfi;=58fhxbseThP;3R!6)t}Wf(l0P6{V3aZ!NS$Z_r*|B3V-Z^@(TBuoNPGu zXz0)y)1^K1>Wn$HP3?6|{g9bHfhwiaL4H_=%vlBtRzcZzsB$14tBtZ6_8){@d*SCY zWcISem(nuN71_TB=A2H@q*2C2hA*%>;-t6~d15N8-V9ms+V52!|B(0hxz&FYRoA!? z`sHF|#zLe?Bh3ASF<13*kI9h8a0QAWMH`Vmu8XS2~>HXFG8N3?pD(<9!w*%_!s1!SK!VoFn3(;hHV-ph9gkr%~*sy{#I=j z4H=m@11Tvb_T;V5C_61>61YHZ?^ND5gbU0Y){{s4q+FR>XPRD<7IVB&O<+=~M_W-Q>75VXJSiT;1?Mq$4 z=HHPQKERB=KK1+ZNB{ys-kqDeJdL&<9Wi5W#I$YcMw&?)2y2gi!I|#cib|Y`U%;EQ zQY%MK{&+reT|f7q69RSuHTpCOu%sll^I9E)8F>w+PZ#&SKIlJ#EBUkREMmh4As6*P zo|*>hfAwBgJdS+20CV5qP})LEfgqE9j_H_^nQHTlMc-&+hPvQZr4d&hx)7)z6FYo%XaMX z*0X8!U3Gro?T>8Qirg~Rtp$E@9L$svm=jz2>ZSch;GX^NST5$}<^?*R=)0&RVOlmv zDk`A7-2X)!r*N+1YTyvA&BsBDyA`ox^sIoyp;_++v@eMWuKQlNC}? z*_mCL^}h?(q}yU z#OaanEzmT}MH=V0ZDF0I#F2$-FnzoFE$-iF`@7*c>o&|5{}HHb4w^;TQ08rn_0=L| z=m5;oxxR}$1f7S^UEzHo9};#g@VTeEnGrAJyFCYB=293Oz<5xzKnKd$sBZ+Lr-_nM&hJO3x7a0PPynV2C1FgjPx;BvBG?B_w+7GBdA z`Dh;OOL0=K1K{sgAu6*~9<*=euF9ozONeI49~g{DRO57JW0Ek(=fPt)BO@mIOPH!K z-L0yxbfejrAp@X=zoct0GjWZ=3%ep`p9;&?26D-ULU5@J?NCQuiwqeDJ5yLOYv2SZ z&|umh4{tn(-2M{$>9JRC-~^jYQ;GR4VA@FJp-E7*DbUN;M}p5rCf077!-V0;h)J-t zB;(VqFbOA}tL{%Ip*+3o$SFQjKhre<@HF0M}*k=Uogydq?6DXiKAWjktr;*~fw zjculr$!tuj)QIfZ22Rd*-|D@WA4GoH23vQ!Kk@RiOb{f;aav?LN}NhHvcNT4N= qKuaQlmP7(Ai3C~_3A7{;}= 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 FV1m=s5E}ph literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3acf34b6882b049bbe260b02911d54082add6237 GIT binary patch literal 2380 zcmbu>`9Bkk0|)S7wj9Hgv#|^%=VQoCIi{BIAV=g3TO!AhE9Q8H6xk?|D>)iwh+N_M zQi!2UbBzddQzOg$^!*dQukR0^&-*|4ygm?89x@?#!5IEkio#$uA$HcDZYhTxYrXSo`9i8nJHp)x?SiPhcIYQI44U=g<|58ykxxeABHb|BI0?1wE~+F zJ2Xuz^uT82#tctmzHS#Z?oRq|#PXUWQ48t3+tUfi93_r#xu@ZUivKGlUrs-l`HNBO zSAi@^6m1pTUBnAl-GyXDvoVm93Kx0B&UjbHnVfly=fR7<46fQGgp?5nX4uRMR!XzE z3AlI5tU}<^B6K+fh7MMfuuof|>(NjHiSyu0kdXK)!79dU-r9$DR)G>f$+z1D7XLD? z{D5!^mR|+pZlZ9yPbC-@B-``a>UswyhDi7B9M>8#ehJEV8bgiqDJI9?p)4v$*N(?r zaV=wKzQj@-KL8S(IqGl^##dD8W~g|82k5doKR+-u1vE==^C5*wIAf73E}7!mvYpW! zO2ejJylK49%fqB2Dt>INlPyORmo+=^MB_L#i&Knx%n*AVC2)au{NZ=S@m&uEh4@7K zH=tSMWR1&Eh7O@EE|H;^JUTjT+`CKXiw4Ta!J#q*hL0@W083S>k9Et$abKcGaEw%E z4L(|v|GOoe;0Hb=P|xKd)dlFVv>kz|Y|N)zK^ubj%Dq6lEcw%q1XH`lV1W)S+}XLnsrN(4R-iF|(Ic?W;LqPO*f1FKjEu)hWU-wm*k6uBA|Gszw z79erma$d3=!^0%B5uD!22$KJfxZC~nRV}=^juWol-;NJp`0}CfGFbcQxkpn(7cHu_94e4p3CHjKXb(PWY+;*2 zma@3K`ZrLBLVU1?R%622ZE7atAoM8~jC4y!2YGyjZ62&#WWH3CfC;)X(kGKop_#B$ zv3B=KVyuL}U0>1h!@beWaZ}F&{lTX4!2|5D9lLl^bX^;2_^>~eiP`CtQ9Xtn3?q(Jxd z_RDX}prP`Oa^UCgPd*j&(at^Ot~cXp=~0KT5Gg9F;4v;k1*mK5OOqn0;Hv2jFRYJC zh=nB>9y=$nmX^Sj*4%}n!M4dHaWa*;ylMuT>!ep+6<7M#;&3Nk%Uq)Blb+By`TmH7HAg8L8 z#?`Aqm_2}{R)*H4dp0EIq+91hc5%<^X9#VoQBk*kS%z6+ePnuO=8RhZsp+2ByQ2y; zI#EKSf-boEIZjHG+bC1n*EWz5m9C50>oB_baVR2Y?9F{)>{g`Z*bt#b6+c7@z5lem z7n|pLQ7#DSczphVx1d}rZeNOtp)uN2Rh2tqq0aAmVkDa13TZY7VyzB5uiDf1d+#qy zpKs6q7Mz7A9tR7g0T(f5Z;=m>tFiWu?1lglB&xnpe%u zPJL?e9=fNcyio$u%vg9=9w?t~>e%^*ejcIa`XAG;^B2*q6YbOLtQerjbD4~M=Lf*?SsLHQnob=@njHA zo|-9qpiZYX0Y6CZ14ClcMxA=)yp!SEMRiZ^j4T#>94A(UJNKZ2!>uUJ`}Y=tZV@~v zb($dsJ9}*zs@TN{tmk^D$l$&1#L=Wn7~42DZ-8RT4F~N3$;G5WL;GWlKg7UKEBtcF zWppI&)_n*6iDtgfR;7zq1B?!d4jF}|v5k^HHyzEG(x{}oz!0&d6`JUNc<%$>>ffVU zb?O=4$KzMe``@6_FFc7FITld)8PJ{Ke@3H5X}FPTO(^sJrn;03f6_s literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..960510e9b1833e31a5480a8be027358bedf15ae6 GIT binary patch literal 1248 zcmV<61Rwi}P)F-LCGJx*WMA(q#Qnp~G4QE82p}rBRzfv_GPZVgp;PUjzw3f0m>X+Au4j zD73}?kd;Vcb8Cr#mQ9yKQ`6;GnmTi{&CUD7bIyj_-Ojz|+a8bm-CYA95H> z&Rl@@6L9Dxa`s=iJOtB&n7o;A`+T^w0F#qx-;-cq{~#4^D1`X`?{8SKK`LNJC-UZ}aJt7gV=Q%@MQZC{eGO*z3|}5z zOptQA2U)oeE)B$Oz=YE2TeBWEy^hJ89(Q-%A=Qhkzwrhb5gfr3xr7#st&sYkH3ernC^LT84bG4Yo9gWkq2!25H=5@1t?7P4|!rxT_5g zpBlHpk5S%C%$h39tv8J~Z1}s$&cM_zN0t=X!Ar9vC++?n={}E{JKMFX;qv53X=sfM zm=VO()nMl5M}P9hU~ZcS?>vLNvC%nk(0;b>g%uCS>`m8@qPgd9$09Tk%nM810ggyP zi*CU*t#;KmR=M}&iNB%$GB`!L+#GnaB({u)@QP&uP4v6VvD`y;o^b|LX|f$_-YG(; z>O(kk%Kbg%#ROhi?h4dBWMBWdl5mXT2n?2P%!9TF%OPBYL#~_pR%)4yIID+@X?~e9 zPVOPKJc_Vvq^Hj@K)RBaXbF;g$oyP;@jI=7j?S2kkbyzF$WD;lL(ZFH=b&j0kb2B< zyc@IN25%8oADr%k7y2guWWZcM3(*?SX1omXR4;D$4to0`E5o%ZmZrHk-4mp#d;r&yfdi+(W3N6Z2ddlq|#qC-)57+vxh_Uwj;C zZHJ!Ti0$~J3t6=ZaxxJOT3PW|_+y4BS!5k&`kV2Lbbeh9R6mNmyTw(dVP#5(PI?_C zs^sQ;*ZZ>fd8FPfFGkext-G)3aeu6eZLy>U2&}3^au(=7TZ@KzDWQxe24NRx5mP#v@ zz|#-H&i%-aU#w$)>*!J6V)+g2l#omye|Kqx)s4Tb2vb&MT@p>ad-_1%eEIngw^`Y) znSkSt0;CW}&#$)XfwvM2?aEJ{Hpi~a}FXm5Vd2NOB~0000< KMNUMnLSTX?t82Uf literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d6f439de0b0b66c1284ddc2bf8232be459486262 GIT binary patch literal 2804 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 Rcxld2>FXKmRzmHN{{wo`m)QUS literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..fd00940e10a602575b854d78b4a8e61bc3278f6f GIT binary patch literal 1593 zcma)-i$4toY%Z!Y-NR%-7RCI&Dhp@P%(>&%TQ{uo1CuHlqt-sERUr; z@~W&!NS21q<2-WA={3)5%rm*}AGptbKHuN>_a}T)1N?D%+9uin06@t&cGFoovLd$i5y6gCC=LM>T+yA?2i zYtjc*+XqXTJTos!2{`8~zZ^%Qu3d=mnvBLFEjw0x^tameh+G70A2zLcAb!)N2hURHzp1zWEK*jNef2JB&Ad5aKCbz|276;e z@7-eS^CHP>6!V+m?JSIs$Ih--JEK)t&VsNYLTl7q@sZn^7cq{)I$ejsq{M37c(cVD zC2iu*ys09)J8TE%%jJY(oQCx3bNs51O6f85jBabRp z8SVx;2q!DT5k8xLuy#G=&M19ss`qiyQTUhKe6P90Hu_q}MyTouC=#6K(qX!Z(l?@F zU?c3dwiY($=wO1oEF2ka;T?9JR<6n+4<~$4#H5({fm%q;g23(~+jZw|8T!7~BJaNb zN2_ArQj6S%r_ic@gNLFd+-Sk4M*he<)$I3(`*aoeskN6nCFEF>R>N&-c8$)XRCpg<+JyT!rbm_X*HPUJo;jr;urdv3HLl_V%h8CLmp^XLw zZtLPUaFyBf<125pd5yU34bG}*um}t}Q9GwW(v%M&ZU_HHSM0gS83@qoEi_-4+RPTU zeBJuRsvrZtI2E~tn5!Ds9@f)qSk^&|0T*{h%1cdY+Pg9!t>O(>X=69K#fahH0I7PYeUNz_lldGQGp0MsNr%)@qc;RoQjmLjHTIRJ5n zR5={f?UDGK7|w)NgviQ-YrVbVmj*YUm1NV(t``p_Y?d&)EAMBhuoR5*TObrFqO zYOv#6TT!GH$F|=C_g2xK&T(xn1(nsGI(G(?+f*HxXt=VBlg_J-+<9KvGZrM9$+T7a zo#(fTM=Ot?XY{+SQTn&7-UsB4B^%%7%z_IN%;{fsK9Ht%pK&yA1&Zb zJ8>FJDyD9;m@@Z|CHCT7`D1msf#A0!eRu4mg!c4;RMrW7#cU#{mYP;f%C?+(9Okn$ zA1hJT=0{sVW|J4>=s$H1(>~AKTiuJhayrM|)TJl=ai@TYlIUJ|b=2(VGuDeO6IM<% zc+s2{*X$}cH)~L{$UvC7#>O?0j80|+s@dW*l66bNg5JNr^XTMJa<-r68S4;5$B_{^(+mes(zuSeuIknV?ue#j4X=>DY!%M)Lmi zCn=Fs3l!T)p>&L%n2U0r9?&5Cy;8_MD}9SAJZR6DKI=Y>^b9)aOKc$&m7Sn0N2zRy z!a^$3s-`2us&kwiI=AJnDnpp)a3;D&XhefpIr`0Gh21RV=~utPQ#9cf6``X(ta%q! zh1HYHC1GU;sla=o?Fu+TRx?5Khm8!skk|cPBP;Eo?+{i$iGbJ%5VTw4KlYu%ZAj@> ehK&EoxCP0g=MNqM^z?fY0KVS-*vfq&$^QU82J5Q; literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a5f551174f59d7bf2930ac1f1e7054d1d6b142e4 GIT binary patch literal 3845 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..8b64efb6807707c4f138ffb2b3b2e51486d00509 GIT binary patch literal 1732 zcmah~YdjMQAKn$mFximQCfDT_d5? zJN1qG~NM$(Uus_8WEVJUnl&>J)w3#I_s%4T4RdCpo*lI=j;=5OZZG}8- z4W;7SY@V*eZ*;|r$T7tLhd~*AHb&zzZrrW3Mg~8A7osRzi@cv&EhSsqFyC)V{bVIu zGT+}~wt>>wye!EcVDbAR23j_!qC^=cX6;?CG#6KFk{$yqFkmNFsobY>CU$C+`)35m zK-#GufIH*Ag>uzg2wvO6)**3(OdxB%sEqbvcu{^(G*wR&A0_^Z+~OZ6-;m-F=gIbW zWFjvI5Lscx?%u`jmc-tmA7jeYC?T{?qx4<^U6msxdjNpAr9w#`^M`W$&ugCZZzjoU zz^3Z8f=6ryX&mFhf7!xRb2kRf2@O~El$@#YM-3bzFkALA;ncIo$y z+q0(b^zKsZ#b3)HUXg;1+At}C1oZBPNlbg0g;a7V>Y*A?zS;U)EExRev%U{$5?&T~ z=2LeR?RfweehXH=N1=5S3-+|Qff14?iFp6m$I}y~nc!Y)$(AWd`Ow?>pnU%vp0S}0B`dzTj zo?RefX~IJmxk@xnE5JOQIWc0Xx-g}}7=5?rqLNjrS9tGEMgyqRa&)JD>nw%jSM1m> zDA@+KYiNQn zgd~!8UC2GV2tM>{Mq?~jre}J%HW69C`OV0Kw)c|{Zrc}50{vR0k|TgzP6w;A%WA`u zUi1YX@_xj7=0Xqi-dg^$O~-nWKV(qiLGPrL=fQGO9*ww2nbxm&{!=#zHW>@xAuE3nj_9zkqK{)$Daj13VYyuer}|F#D;X-Cg{v$v zAB-0Rr^(jNt`e2l?DAa^o8*t!@;0*JP?@!=GGO-SL*4#i`OfL9|xyhFy)E^<< z>t}s@KNMhx3eVG>cMT1qThz0gPWTWe@aAhuap6aT?>}w7%KGITevA57_(9CI9%-%u z4YH_T`FLh$SVf$RUAZ*zEN2{T1Re0KFsiMTc4|14sh+~Glit6OyPJH&oXUYXCtwe- zbuY5y4IH$hdYkAC_rDFjyJRs_#M#n20)*2hrI^2tU~KEKzYDb*)PaY zD)2C_7j-OQ7j6PfUOH5Rf4-W%ue~v(*DG8HJkRe7FdbZP#9sHpsQ%r?LUDqL`6LDQI;dcT!+PUC3wv?3r07d04oB#j- literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e391d645453f22346f9e32bce46a431b0b4c40fd GIT binary patch literal 4053 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImage.png b/ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImage.png new file mode 100644 index 0000000000000000000000000000000000000000..db3883c0a7c523a85fa15636b092f633d0c48f25 GIT binary patch literal 5370 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImage@3x.png b/ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6c2b46e3eceea99b6b8a97dbd75f2f2e4a38a2a5 GIT binary patch literal 13059 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImageDark.png b/ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImageDark.png new file mode 100644 index 0000000000000000000000000000000000000000..8dc85cd927fa5efa1f04a54420bd39f97ebf3f9e GIT binary patch literal 5612 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ÙMa>DtAIAyR&90nQ6p(-*NIV!+gpF!?_>gQ`Jz(I;^9dM8@@?Tb?tL(@*<4T4g---?kt9jB*(x9OwN0k7^#CA# zUx(vbx9~jY3YvD(_r+)|T1pVao$5iCtNAI5#r%ZZ?fydDPm*ND=FKntABt)T)%>TN z&RRAuTJ);LbL?QG@o3P-#V5?yq|A?T&bVQa1;At~dpxM?Ym3EvZ(W^phq@C+u@&{CW2^Hg2z>sBC{g1;bMFaU4$;MX}T6a_!RV^Gt)YkQ+#nypHF2 zzX|Cr3Y_I@a~#)DZnwSQYnx1EkHSk<{U-0I$JH1J(iB_NeH_>7T)Omu zpNFF7dA@zoqP#obc%$_&g7nvfLGySzO&jv#!Z?I#oQ^Uc83;1!$w26PU|4E^67oFv zOt5mO0dFdst*Y2+t!j>SJxS`=8cI1-yge3+`F|ab+ILjH?>N0a_kNz|e-ma}*ODa< z6i3Pfl#~?ztfi$j4@I>)Z`XMEN3>YVYj~dH6-7CVAc#LY1^p17=U?-+Ns^j15H=nF z&vTqC6QB7M1VNBwk|e*w^ZX~OIRQ!|2tsSLFnL{Fttp&xTnyyq=FUPEzK{43kmxGcU2fZrs=}9gFFf7 zL)O4Cw_D;dEcJHZ81y&l>YT5s+iHHIC~&eYf0mn@SL*A7PP|${0!=c1Kp+B?Gfrpi z5Z~uw0>_DYfjvqWO&2bWHcz8LuT!@vin9RAoF%0v|&hy+ZwSoli{y0wfgA0lRPC-8a!>|+TP15V!`;R3AD^(;1-7DXlZnrz8 zi04QH$B7#Pdyo{9scb{6d=v%f;*R!u-cO6ygpF+EPf5RbedmEq=Obv&5#F#Gjb=PS5OW6k9C{Nb5(ny@ly(4+8Ngc<=%azb0RRwxj!aR& zzc`LN6iGf=mcvHsE+WGI&anVNkgMYketzUMd9t>U;|AX9^!dEVi^lf({oW&8*@^t zsHkYkjvZ`71%c)XhNT8Li=rs}EgZdGpZ9=9W3Gy{L&NYTO&30>?h{2Jz(0h3h+09s znREEB%KuP$d44cdtA3h*K{JcRaUvkIf2AmhAP9d``)M#IrPJv&ZnxVLX&y;3A5Q|-=Wi5b6&G&w6F$?z_2NM9rEeYo-Tks&1vYIL0Se7&H3>qR>? z$n*ShS?+!lMYVqWnWhb;9LH^MXkdn9hQWYIgH}{jK65_nkz{spL4kp3XsACBY8=}8 z6%|#_1|LY{IIb}qPZULOs;H=Z{Ep4E1U> z8bs}EyWP?|>SP(u^B*aSavVXBX~65Kd#j-RYblEIPmbfRh>8l9b?vFBsO|71n2=y&Zy8*y2hRuBxuChV@uQPG`*)b=53MlK)jvQT0cHAZ}Mrkfe_N z4GqlOk(e3`g;o?rCtED#R&~f%r^6;%t(9eZeQrQPO_sag+OdNTNaV6C`yotX`?Agm zf+QM^MgI)|;>(?cjF^d{!26y&7>50TrVTl2|4|f$H!kH_4Oy0ZQFQS3BnbSvaI`Qe zv15npk9vKcKQXA+=l!Cz)YNXb+g=H#ht&er)wRFzDhI^32qN=GvMjIbSCEc#XXK5? z+sal?%W@7w)^Ta^nuV*UWi1>A?RjCr``ae9c#g#sDs(z)8Jae%z_3)6-Hc2znarC_ zCi4bCIP|v1<2gr?c&UP6mk79d2k~-h$uD%gyUalDZE?wW;1I6HF%a7Md=6onc;LL{az%MbWEpoVbOi3m-yJ zG+?vjxK@T`S;21ttm{1ROpYe`o~(qVfO@7Y1#lN%vZS!Esi~P)Wtx4smLM|k44wl^ zB4k5;Vn`S7g4cJ7W*%C>f(FV)9UZ$w* zWvZ@;-lGA2z*2jkg21yXu++%msM!r`;e0e0hTUm0nTOm9YRGbTyTxKI0csmr?(0>S zf4uX7-5HBpr^LnMkr-UA5Jl0wXi?t0rl#iRFy@mVu#nMiuY%dtK9kA3EtYlc_Nqmt zrDfYuR2wbF^A%K%M;=)juDrw#r?a*qH#c_yj%TilMk@%1YL_f2d@S5J%!imv<}ei! z$_K%@lmVX5*;jgeXEp+6D9Wci&wmh2uF*tYos*?$!xn04MU`7hT=AzrXda-8U_MeM($>#2f5#g(!+gv$8U0S*?|; zXxdPsw!M9jqz=wvF|T1+wtu%lQS>pRv1la#h}w(^8`2g8p*t%pGuvvdv=kH=iV*|} zJ~{c7Bz647Vln@MW!WKb=m>|LoO!EDOHKQY#-erJW5NM|PZ_7P_E&bhEn+xW6h-*9 z5CKI8pNu|m9M>9Z4m>C&NzwrfOC53uEP8p##lfOQd4*PMrC3m4SRLXw4+&@{Wo2b% zS*?{1-+g!PO071eqA0T5{kGFt>u@@2UsU^)Lk=_@?CI*f{r#=k&!sP{&q_#&c9`n2 zgvaAKTT-&pUS4i~k|2l~Bngvb{b$l;p6A{RuBf$G$~VBzd93k-%~thmSOkb+*mt0V zFU#@?p6A|zXEe@7cDvoizz<21P;Oi$_d#`yR5X;An^(e8^5A|bTllrB%sL%5BQ*GPLEzdQaOvo__n zpD#_!_$d*qa^j3( z43`%!>T7wfP<-wEFXq%3fsza5-vA)$vX&8j+v6BU2LBI^jxUMIHPTf80000SdbQkr9lMg7Fa^M7wHhByBn0HJC%k-Y9*z+WC>vrmQJNRr2Ds@ z@BhjF!OZM+?abUU=f2N*zs`x#(s)NiKudszhDM~UB(H;phMtW2t%QezI?t69i=&}2 znJdf7>iOj!<~cgOn9bW6AKnXhx2o_tBylNsBATLVTqO5S5!CaKEc$>O9T)xWd24i> zXnDALGM0BTxk$c1UqaQp=U;87m=G)6Greu)agEy8jXIv?7S1LEDWhWX>HCE|Gt1>+ zR3|ROQ&*sn%1Z3}-iy}9G-h7bl(V(ufa`lSj3!aft>j#>r?XIzBJtxTmWxh? zSMKMEx_IBJ;|g}kGo>g60fv}JK3j!yEQJFcsG7IzDP`-c+8c??w%?Wgb9KqO{`1gg zrjELig`z?^%xjh5@wTf5vO2&j050}toS77NJ8Q48lYUr3N_9rKccFPEE3u@uQ<`I7 z(XB7<_tn6SK(2^u5lVvi)2)Z1S{g@U`aRUm1@Ri2uG||zEM&uz5S=zzyn9BtT?AkU zV|#vFblXF!uD2d7Mkorz@NiXz^F~o6xO5}QKy_cW%-E>;;=#Y8_)2p<)L`cZ)mRBS zaO6D^vnLjC>Fpi;A=&o4RE&I(ThUh2+$oF9+eaJQgOory%mKjC!0_#ZIetN~^~Zfg zRRM_#d%HYST?vb1q#8uaF`{{vluRmLgXBdQ7x2s&k`<$!VN~-2ahA{ME14vZ3OPo4l_1|d#X_pw1&nE1$Qb+0j}M$& zc^qDP55K6ut;?Jd(R2-h+5h^9+es)z6(j%Snh_$iVi*-C_nuRwLEy`Jw_Q&|CV3*p z-}6$$pw%lmO!O^p!FU5z$8l%%jnXN3)NGmHY0tDTlRMHbm+x~@S*23MLY*4KHrT8V zI==Yx*f@1}9BF<1nJvejnYzVC^;`b!!jxFu#hL6bUYZii=8{)np?!9BBAEPR9?a(f zv6bu?UpMVi(>_MVm zWmf7)I{VSeOiD2J(5`ykyS!Xg)o6;l?tdpegHPJmM_CmeUJzv#vY%qz_Sy5{v1EsJ z5*m2!`JSE)sEHBRBWElV@p&YfYY_<%zrb>(zJcqyt_oZ>kH0=wLyd4vW>!~CJ6#xZ z(xh@s2;^Z+qt_gP^o@)@XRO=${l4ni*~h4s2%lq;h@?vjxU|tuE9xsm;9|)!O`Nin zEX1Wm|D%QbbzaN}L4L-_L#@nt2G0m3#}s}^qI(4BZug4cNx2X}Pz#X#=;l@W@y%7; zZhp6mvHw1=9lhcQ%yXiO?TdCfl5UCHf(X|HvtR8#g~}|co2tsuKUZb(I*Vam(^bZH z1MCG~(=66dt-toM!3RXQf$*Gb`n_fBat~g`GrVjyqt4rp+IbbfdgEJJ;;m3AM!xUj zych$Sqv?3l`=VX$uWggbuV14&G4lL`rnZys_C6V6Sch_$kRYc|SEQ4CFCOggKj(xO zQLpXjJ?fcT-s@GCG&(*7llV3_H@s!A=5Rk)`Te2}Ts8QO^1s#j*jmqV>_{X{UArFS zu^~;^-u!5JBG-+HT4%h@c_ZCR^aKnmR0IrzcvZgc*)N2-sa}6eZy^t^of@t)D1Ii` zltW#ts;@Ay>e+Rz`bJBI0e}&TjJ-Fu4~|p@%D=Qa4}{M_YvrDU^vTGGtm0>kS4AY{ zMBXU+Lw+)-BPDt1t5XNCO1!E7*NZb!?M+SzU&%3yq6z)Fg1iGdnPmcw92YUwZNp_4 z`RX>$NV-C|0)WYv^_>x?<8Sl1g7(*4y&iG!wfT(tUeyK41p+{-I$=FbiuSWe2#3Jy zaOVbrLpIQdc+ZgZI?V3u_Ld5+U>RgXcU`*~SH^8?^?UOk&JsQqA!FqBm+p>R_Oo$h zmm+7dI^MI=kw%~G?+&vHh|{>-w71x{nu-UTZ{?Y7^>$fv(A(<` z)T-$wQi_&rkR}f)M{VB1VRf_^b}!O>I#r^ft;!)k>_B+0ARMulL3927myPmFW-9}v zFMDR`;ApbO;4r*TBJI@ciD;i_<+Dbk9zcc5pcY~EYIYV_uPV6ld0YP8DYFu!r#&Ts z?K{T+54JBB9^O0fp*RHa5GaE+s3Qd(d^NZ-0%T|B zH*y`Ns$oVXpq8=hv)u8paUet^gTDLUCGuoqu^t_y0NEOjs3!6M&k3n3ETF6 zBN^Yjz5VBlctiag%WjR+Cu?C26*ncj^oDVO6=i#>p--y0Ih=6fj%}}+3@jy24jM?k z5o3C@V3JJ4;Ilsr=)ivy@UkD&MNtm)yfc%xf<{aj5S`mXm=FC$Z88{RM3=;*E2xS& z#cwSlVvhbfG-&xvqy~X@nwUpB%z?fcdqNhjbGLUP_ROk02e6qyd+)lBr%kM`VYZy7 z2KV)Fc{Fas1g@2x=UFV?WdkJ-ozJ~Gg*gfU}xu6uX}~ecfX&0lezD2!EIvfR;fO}Sj%}PR^#!f zOUjO#p{sNs*GB*jW7DSWPCwG}dxu7)ApJW2m|(;SOr#opf3l9UmwKnoE_+wvUXoUk zmicMi{vkzv3ua)t~06pIIG)qHJ@2w_!3<&F4P(%);t| z$f~>muzA4<@1t&}f&Vr{)Jr^%@tdY&L5x{~piLO^+T_sv(PA{t+aXCj*$!>+?m}yO z2s=j!al08`(f;VwRw{tinp&=3$OW27KeP4EFCpiLO6B`$o)-31B^Ggm63lEyCtCi2l%tFJh|u{okY+0wd+o$NHW$sZ}G`6&kBlB^_u zTIv6a;Pf^qy!O+6?zxZAaISTK?V$e>`e^g6myHrZ(mb`|mOBW_zV}sPRz5nFKfZ_} zMt-nkhFZNYUcJz1hwPEHQPpil@)(^?gnRcBCO!|)TY>?CNM&h>~QlWNU zu(u&e?G$#6_>ZwACMw-^e~1dTS;^>674l^}bilj#$k7nn>SLToUI=w>i-##&T;rcg zoA_3;p+C8}ugCUTm{ZCJJ>5nJWV^V@vrDBC0U^WVt-mN7gHMpa%hX0?`yWPW?Plh9 z+AC^h0=8+xPm_f?m(7t3FrffnFW4KcMZDBj)RaY&i~;_!A!Hw;06TE0tHMU=@DcN+ z*4H0oSrDsj5%Al)dF=QJB4BJBx2VVBFNf!?Xs)``)$h}W6ANbTp##_}f@7WqL49#A zN|hiDWKgFjO8YM)0@u_HN7no+LRWbv)jPO#3H;<3QKX=1tY|0)$#vZui}(eZ>lO-l zw&LQJB4|u8_iRs>GiMAKy8T*{+j9l~OZO|tDZ@u@?^jzPuMiObwm1`Q@=YSp z5Ff%nnf8IGrgpDq+a(%oW-Nu%>%ZTlYRt_-w=MxLcS`eGx8$+I~^PF zjk~7_wmtwV`BRL+)0aL_+JXMgeyJ8TTDE;3TwVJ)qG5r~NH*L%P!{;dXd2%4qAD*~ z$l|3-I3t%n${zOzk4F7JMAuDedgX!Xa3RV(xTL|O@$y5)fX`JN+U)8z89Im4*8FB( zhJt^M0z)h|IGI@N7T!0#1>ETjHRXo_&Vx^PB@&)9W`7^YEGZQeDbQqFZ<>Fs-I1*m z1q}tlj5?HaJ%snh8tiR+#m8Rk9NQLVN$vv4oHJk!f?4t7swU@A)QN)&HfVgCGZGmauO-xcT@vVrAOuaq&gJT3e`ew$jk_ z)IB`FlLgJARU<7f?`Ul?*h&U zbKdds=RF-Xp&1TwV#UHH2bT|cAONc8F^TUy#g4?CXq^sfYfF(?aj|4o#hxpf_Hg1L z&DqY2h{%mWHMX=Qc_@3Hp6{H30@Jry`w8Dt1H=nRlw$#b=qaj8^qOS?p~oFL{SwTi zKbnK`OM;T23_sag(53&p9c^lR!u*lQInAis`hl#@cv}LfGWRz*r_ivK<`+KjXT;;< z6fykku>+PW&D?{8GgJ+!=1=-^lO^rcOFVDBm_u8l9%#47%SPrtLmuWFWSO@O4TwC~ zf#@9iQ$;QRzL>h|#7pu>9ln-`OflRh=Qkn|9X~qZlC+5)T$jv49O$Hf*odKj)st(T zv2%%iomzQMW=`yHs@VyO{xJb`AaMFUY?3(6|87_OMX8==Y@+A0`o?=Dut+pDGlJS! zwnD#(AmWw!J8kl^`y|gs!n4#9)V2<7H7VR0X2raIix;!NM$i}heIM5$Hd>u+{rEpW zY43YX2JMkF03=R7z38Ft>b?4t-6u@-+$~&hKVF}ByR>xw2 zWMclMoCBJ61zm7}{Jt!^Lpa*+t#!wLua5i7rv4@VT-Ggp@fjsf>X#F>!9sxYdMrG6 zU)|rV_BX~(Wi)CamM<`!_T<0bE=*l6juB1SDl(5rFCHG82A8=cwRZCp#SG)Uq)M>0 zv(QzrwHH2~wf{}figF@-x78xYy|=^U3V;HrQYgL@Dymn_e#TC$n?l81^flhxUzX5{ zD1OSIq9^e5hq0GAt1n$~2Ajt7j$@1ngb`@O|CHp#Dmf;krV~Gzt}NNHi@F}09YRfe z!gJmjOFTsZSl{t%Z~6a1H$Cn0jJ@WHz+e1Av9?s%idk-NLxO#p!~IcEeZMxzOODE0 z>MKSnAlb_B3ygpp_GOKD=8Kaww`a?(9rXMksokg1VQSV}}p#F4n+@6xja5kr`$LfgE2mOs3W z7qK8^l?+(ai?u7ar!v197<_r!7||KxCiC_alCRXhG%wMeaEYav3Yz9a2-eyO;QDO> zG_{pWchE@DsBQ75V4VGIaAL!e71Ka?X$c*8%du@+@P)Rt;n$IG9Z`M6OMp*`cB$c# zCFStuDCzeDUsgIndSd|^JMrHt7B10M?|vGZUd`5gXhqAxw)GTP3Ay>#$QUR--((PW zBWMT=?_#cNllwci`P!Z;?4#}r+}I*Zr@*0x>UvLEvot>8tx0!t=C%5;LC=m|j*@-b zf669FToA)3H6MeG!++1XvS3TsvVGHiP7yLbHw;Mq7B^C);NbV|{5dLpETRFIM8@2M z6<@g?V2>&pD4mE$`1ZSGgMT>_L$gpu^Ppf|~kC+zH;#2vPXg&BXkz!rak1?uyx zYvdO`;I#)5J*6<%+nd^ZM;r6Z!F}ZjN5oC)Ne^Ah!dIq^2@B=^${x4Z>5aIyChUD> zEASfPskx?6L(=J|m**MQ!;-^rK1{Ft+Wb-9kU8ngiO~OE`kg~1r@G!B<0rxMCIQc- zS_1i*kxLRdICGlpNL#4sN(EqnVk;ID06PjT152Ojq4%=!v_XwgFckS^nv=Hr{ zK_OGU{Lur`!E)Lu$HkRc>Pbm;-`KYFU&7oNWlWWWbAa_nyH@Z{hfOo`q`ufkmKn?K z&n$-+#Ub;Ficnlf5r=g~^{il{%A7beU$vy>tNUr-P>BJyZz39}a5C&RFJ~*LDy%MD z+5UYanFxt&;^fkfbQz9LtI1{cl_}N`bV*V;L4$%W5YS=)9!KeG*Q^m-z0jeoqZ-H) z&iXBtwi62|TDg7hN!*JLlU5toCIU9;-RM=ELkNt`Iqo})j0CWrl!MfZt9(xHrblh` z{e6)<%q=>W3JO4BHhcFj6_;lEZwB?v`z(K-_Q6V@2gZltK!_zumUARVTNYh7`L zGNlHzrWxy_>F?$?JW2~X(t1Q#L38X2^TE8RPPFGeN}lPkd@wfp_92=d≶k-yzzZ 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 RLRFlgDJy8mSA#4*{~!BWCg=bF literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImageDark@3x.png b/ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImageDark@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..93b39191633d9a1bfaf82b162b975dbf3d69d44d GIT binary patch literal 12767 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 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..f871fccc9fea9fe724efda3456aff79021671fdc GIT binary patch literal 5891 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 Z{}1;t7eNIRJC^_e002ovPDHLkV1g!!o^k*H 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..1e370712671af3d717b12443ed757514c0c68f9f GIT binary patch literal 8700 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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..518cfe8 --- /dev/null +++ b/ios/Runner/Info.plist @@ -0,0 +1,53 @@ + + + + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Appwrite Flutter Starter Kit + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + io.appwrite.flutter + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UIApplicationSupportsIndirectInputEvents + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIStatusBarHidden + + UIViewControllerBasedStatusBarAppearance + + + 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/ios/RunnerTests/RunnerTests.swift b/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..86a7c3b --- /dev/null +++ b/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Flutter +import UIKit +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/lib/data/models/log.dart b/lib/data/models/log.dart new file mode 100644 index 0000000..e05315e --- /dev/null +++ b/lib/data/models/log.dart @@ -0,0 +1,16 @@ +/// A data model for holding log entries. +class Log { + final String date; + final int status; + final String method; + final String path; + final String response; + + Log({ + required this.date, + required this.status, + required this.method, + required this.path, + required this.response, + }); +} diff --git a/lib/data/models/project_info.dart b/lib/data/models/project_info.dart new file mode 100644 index 0000000..79574b7 --- /dev/null +++ b/lib/data/models/project_info.dart @@ -0,0 +1,14 @@ +/// A data model for holding appwrite project information. +class ProjectInfo { + final String endpoint; + final String projectId; + final String projectName; + final String version; + + ProjectInfo({ + required this.endpoint, + required this.projectId, + required this.projectName, + required this.version, + }); +} diff --git a/lib/data/models/status.dart b/lib/data/models/status.dart new file mode 100644 index 0000000..2878562 --- /dev/null +++ b/lib/data/models/status.dart @@ -0,0 +1,2 @@ +/// Enum representing different connection states. +enum Status { idle, loading, success, error } diff --git a/lib/data/repository/appwrite_repository.dart b/lib/data/repository/appwrite_repository.dart new file mode 100644 index 0000000..b518b1f --- /dev/null +++ b/lib/data/repository/appwrite_repository.dart @@ -0,0 +1,73 @@ +import 'package:appwrite/appwrite.dart'; +import 'package:appwrite_flutter_starter_kit/data/models/log.dart'; +import 'package:appwrite_flutter_starter_kit/data/models/project_info.dart'; +import 'package:intl/intl.dart'; + +/// A repository responsible for handling network interactions with the Appwrite server. +/// +/// It provides a helper method to ping the server. +class AppwriteRepository { + static const String pingPath = "/ping"; + static const String appwriteVersion = "1.6.1"; + static const String appwriteProjectId = "project-id"; + static const String appwriteProjectName = "My project"; + static const String appwritePublicEndpoint = "https://cloud.appwrite.io/v1"; + + final Client _client = Client() + .setProject(appwriteProjectId) + .setEndpoint(appwritePublicEndpoint); + + late final Account _account; + late final Databases _databases; + + AppwriteRepository._internal() { + _account = Account(_client); + _databases = Databases(_client); + } + + static final AppwriteRepository _instance = AppwriteRepository._internal(); + + /// Singleton instance getter + factory AppwriteRepository() => _instance; + + ProjectInfo getProjectInfo() { + return ProjectInfo( + endpoint: appwritePublicEndpoint, + projectId: appwriteProjectId, + projectName: appwriteProjectName, + version: appwriteVersion, + ); + } + + /// Pings the Appwrite server and captures the response. + /// + /// @return [Log] containing request and response details. + Future ping() async { + try { + final response = await _client.ping(); + + return Log( + date: _getCurrentDate(), + status: 200, + method: "GET", + path: pingPath, + response: response, + ); + } on AppwriteException catch (error) { + return Log( + date: _getCurrentDate(), + status: error.code ?? 500, + method: "GET", + path: pingPath, + response: error.message ?? "Unknown error", + ); + } + } + + /// Retrieves the current date in the format "MMM dd, HH:mm". + /// + /// @return [String] A formatted date. + String _getCurrentDate() { + return DateFormat("MMM dd, HH:mm").format(DateTime.now()); + } +} diff --git a/lib/main.dart b/lib/main.dart new file mode 100644 index 0000000..b9d58b2 --- /dev/null +++ b/lib/main.dart @@ -0,0 +1,98 @@ +import 'package:appwrite_flutter_starter_kit/data/models/log.dart'; +import 'package:appwrite_flutter_starter_kit/data/models/status.dart'; +import 'package:appwrite_flutter_starter_kit/data/repository/appwrite_repository.dart'; +import 'package:appwrite_flutter_starter_kit/ui/components/checkered_background.dart'; +import 'package:appwrite_flutter_starter_kit/ui/components/collapsible_bottomsheet.dart'; +import 'package:appwrite_flutter_starter_kit/ui/components/connection_status_view.dart'; +import 'package:appwrite_flutter_starter_kit/ui/components/getting_started_cards.dart'; +import 'package:appwrite_flutter_starter_kit/ui/components/top_platform_view.dart'; +import 'package:appwrite_flutter_starter_kit/utils/app_initializer.dart'; +import 'package:appwrite_flutter_starter_kit/utils/extensions/build_context.dart'; +import 'package:flutter/material.dart'; + +void main() async { + await AppInitializer.initialize(); + runApp(AppwriteApp()); +} + +class AppwriteApp extends StatelessWidget { + const AppwriteApp({super.key}); + + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'Appwrite StarterKit', + debugShowCheckedModeBanner: false, + theme: ThemeData( + useMaterial3: true, + colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), + ), + home: const AppwriteStarterKit(), + ); + } +} + +class AppwriteStarterKit extends StatefulWidget { + const AppwriteStarterKit({super.key}); + + @override + State createState() => _AppwriteStarterKit(); +} + +class _AppwriteStarterKit extends State { + final List _logs = []; + Status _status = Status.idle; + final AppwriteRepository _repository = AppwriteRepository(); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: CheckeredBackground( + child: SafeArea( + minimum: EdgeInsets.only(top: context.isLargeScreen ? 24 : 16), + child: Stack( + children: [ + SingleChildScrollView( + child: Column( + spacing: 16, + children: [ + TopPlatformView(status: _status), + ConnectionStatusView( + status: _status, + onButtonClick: () async { + setState(() => _status = Status.loading); + final log = await _repository.ping(); + _logs.add(log); + + await Future.delayed( + const Duration(milliseconds: 1250), + ); + + setState( + () => _status = + (200 <= log.status && log.status <= 399) + ? Status.success + : Status.error, + ); + }, + ), + GettingStartedCards() + ], + ), + ), + + // bottomsheet + Align( + alignment: Alignment.bottomCenter, + child: CollapsibleBottomSheet( + logs: _logs, + projectInfo: _repository.getProjectInfo(), + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/ui/components/checkered_background.dart b/lib/ui/components/checkered_background.dart new file mode 100644 index 0000000..97bd23d --- /dev/null +++ b/lib/ui/components/checkered_background.dart @@ -0,0 +1,92 @@ +import 'dart:math'; + +import 'package:appwrite_flutter_starter_kit/utils/extensions/colors.dart'; +import 'package:flutter/material.dart'; + +/// Background color for gradients, blur, etc. +const Color checkeredBackgroundColor = Color(0xFFFAFAFB); + +/// Max height factor for background. +const double heightConstraintFactor = 0.5; + +/// A custom widget that applies a checkered background pattern with gradient effects. +class CheckeredBackground extends StatelessWidget { + final Widget child; + + const CheckeredBackground({super.key, required this.child}); + + @override + Widget build(BuildContext context) { + return CustomPaint( + painter: CheckeredBackgroundPainter(), + child: child, + ); + } +} + +/// A custom painter that draws a checkered background pattern with vertical and horizontal grid lines, +/// along with linear and radial gradient overlays for visual enhancement. +class CheckeredBackgroundPainter extends CustomPainter { + @override + void paint(Canvas canvas, Size size) { + final double gridSize = min(size.width * 0.1, 64); + final double lineThickness = 0.75; + final double heightConstraint = size.height * heightConstraintFactor; + final Paint linePaint = Paint() + ..color = Colors.grey.applyOpacity(0.3) + ..strokeWidth = lineThickness; + + // Draw vertical lines + for (double x = 0; x <= size.width; x += gridSize) { + canvas.drawLine(Offset(x, 0), Offset(x, heightConstraint), linePaint); + } + + // Draw horizontal lines + for (double y = 0; y <= heightConstraint; y += gridSize) { + canvas.drawLine(Offset(0, y), Offset(size.width, y), linePaint); + } + + // Apply gradient overlays + _drawRadialGradientOverlay(canvas, size); + _drawLinearGradientOverlay(canvas, size, heightConstraint); + } + + /// Draws a radial gradient overlay over the canvas to create a smooth blend effect. + void _drawRadialGradientOverlay(Canvas canvas, Size size) { + final Paint paint = Paint() + ..shader = RadialGradient( + colors: [ + checkeredBackgroundColor.applyOpacity(0.0), + checkeredBackgroundColor.applyOpacity(0.4), + checkeredBackgroundColor.applyOpacity(0.2), + Colors.transparent, + ], + center: Alignment.center, + radius: 2.0, + ).createShader(Rect.fromLTWH(0, 0, size.width, size.height)); + + canvas.drawRect(Rect.fromLTWH(0, 0, size.width, size.height), paint); + } + + /// Draws a vertical gradient overlay over the canvas to enhance the checkered background's appearance. + void _drawLinearGradientOverlay( + Canvas canvas, Size size, double heightConstraint) { + final Paint paint = Paint() + ..shader = LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + checkeredBackgroundColor, + checkeredBackgroundColor.applyOpacity(0.3), + checkeredBackgroundColor.applyOpacity(0.5), + checkeredBackgroundColor.applyOpacity(0.7), + checkeredBackgroundColor, + ], + ).createShader(Rect.fromLTWH(0, 0, size.width, heightConstraint)); + + canvas.drawRect(Rect.fromLTWH(0, 0, size.width, heightConstraint), paint); + } + + @override + bool shouldRepaint(covariant CustomPainter oldDelegate) => false; +} diff --git a/lib/ui/components/collapsible_bottomsheet.dart b/lib/ui/components/collapsible_bottomsheet.dart new file mode 100644 index 0000000..b1695ea --- /dev/null +++ b/lib/ui/components/collapsible_bottomsheet.dart @@ -0,0 +1,517 @@ +import 'package:appwrite_flutter_starter_kit/data/models/log.dart'; +import 'package:appwrite_flutter_starter_kit/data/models/project_info.dart'; +import 'package:appwrite_flutter_starter_kit/ui/components/responsive_layout.dart'; +import 'package:appwrite_flutter_starter_kit/ui/components/single_wrap.dart'; +import 'package:appwrite_flutter_starter_kit/utils/extensions/colors.dart'; +import 'package:flutter/material.dart'; + +class CollapsibleBottomSheet extends StatefulWidget { + final String title; + final List logs; + final ProjectInfo projectInfo; + + const CollapsibleBottomSheet({ + super.key, + this.title = "Logs", + required this.logs, + required this.projectInfo, + }); + + @override + State createState() => _CollapsibleBottomSheetState(); +} + +class _CollapsibleBottomSheetState extends State { + bool isExpanded = false; + + @override + Widget build(BuildContext context) { + return Container( + width: MediaQuery.of(context).size.width, + decoration: const BoxDecoration( + color: Colors.white, + border: Border( + top: BorderSide(color: Color(0xFFEDEDF0), width: 1), + ), + ), + child: SingleWrap( + child: Column( + children: [ + SizedBox( + width: double.infinity, + child: MouseRegion( + cursor: SystemMouseCursors.click, + child: GestureDetector( + onTap: () => setState(() => isExpanded = !isExpanded), + behavior: HitTestBehavior.opaque, + // Captures taps on empty spaces too + child: Container( + padding: const EdgeInsets.all(16), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + // Title & Logs Count + Row( + children: [ + Text( + widget.title, + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + color: Color(0xFF56565C), + ), + ), + const SizedBox(width: 8), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 6, + vertical: 2, + ), + decoration: BoxDecoration( + color: Colors.black.applyOpacity(0.1), + borderRadius: BorderRadius.circular(6), + ), + child: Text( + widget.logs.length.toString(), + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + color: Color(0xFF56565C), + ), + ), + ), + ], + ), + + // Expand/Collapse Icon + AnimatedRotation( + turns: isExpanded ? 0.5 : 0.0, + duration: const Duration(milliseconds: 250), + child: const Icon( + Icons.keyboard_arrow_down, + color: Color(0xFF97979B), + ), + ), + ], + ), + ), + ), + ), + ), + AnimatedContainer( + duration: const Duration(milliseconds: 300), + curve: Curves.easeInOut, + height: isExpanded + ? MediaQuery.of(context).size.height * 0.575 + : 0, // Expandable height + child: isExpanded + ? SingleChildScrollView( + child: LogsBottomSheet( + logs: widget.logs, + projectInfo: widget.projectInfo, + ), + ) + : null, + ), + ], + ), + ), + ); + } +} + +class LogsBottomSheet extends StatelessWidget { + final List logs; + final ProjectInfo projectInfo; + + const LogsBottomSheet({ + super.key, + required this.logs, + required this.projectInfo, + }); + + @override + Widget build(BuildContext context) { + return ResponsiveLayout( + smallDeviceLayout: Column( + children: [ + // Project Info Section + ProjectSection(projectInfo: projectInfo), + + // Logs Table + logs.isEmpty + ? const EmptyLogsSection() + : Column( + children: [ + LogsTableHeader(), + ListView.builder( + shrinkWrap: true, + itemCount: logs.length, + itemBuilder: (context, index) { + return LogsTableRow( + log: logs[index], + needsScroll: true, + ); + }, + ), + ], + ), + ], + ), + largeDeviceLayout: SizedBox( + height: MediaQuery.of(context).size.height, + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + flex: 1, + child: ProjectSection(projectInfo: projectInfo), + ), + VerticalDivider( + width: 1, + thickness: 1, + color: Color(0xFFEDEDF0), + ), + Expanded( + flex: 2, + child: logs.isEmpty + ? EmptyLogsSection() + : Column( + children: [ + LogsTableHeader(), + Expanded( + child: ListView.builder( + itemCount: logs.length, + itemBuilder: (context, index) => LogsTableRow( + log: logs[index], + ), + ), + ), + ], + ), + ), + ], + ), + )); + } +} + +class ProjectSection extends StatelessWidget { + final ProjectInfo projectInfo; + + const ProjectSection({ + super.key, + required this.projectInfo, + }); + + @override + Widget build(BuildContext context) { + return Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Header with Background & Dividers + Container( + width: double.infinity, + padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16), + decoration: const BoxDecoration( + color: Color(0xFFFAFAFB), + border: Border.symmetric( + horizontal: BorderSide(color: Color(0xFFEDEDF0), width: 1), + ), + ), + child: const Text( + "Project", + style: TextStyle( + fontSize: 14, + color: Color(0xFF97979B), + fontWeight: FontWeight.w500, + ), + ), + ), + + // Grid Layout for Project Info + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + ProjectRow(title: "Endpoint", value: projectInfo.endpoint), + ProjectRow(title: "Project ID", value: projectInfo.projectId), + ], + ), + const SizedBox(height: 16), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + ProjectRow( + title: "Project Name", value: projectInfo.projectName), + ProjectRow(title: "Version", value: projectInfo.version), + ], + ), + ], + ), + ), + ], + ); + } +} + +/// **Reusable Row for Project Details** +class ProjectRow extends StatelessWidget { + final String title; + final String value; + + const ProjectRow({super.key, required this.title, required this.value}); + + @override + Widget build(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + title, + style: const TextStyle( + fontSize: 12, + color: Color(0xFF97979B), + ), + ), + const SizedBox(height: 4), + Text( + value, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: const TextStyle( + fontSize: 14, + color: Color(0xFF56565C), + fontWeight: FontWeight.w500, + ), + ), + ], + ); + } +} + +class EmptyLogsSection extends StatelessWidget { + const EmptyLogsSection({super.key}); + + @override + Widget build(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Header with Background & Dividers + Container( + width: double.infinity, + padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16), + decoration: const BoxDecoration( + color: Color(0xFFFAFAFB), + border: Border.symmetric( + horizontal: BorderSide(color: Color(0xFFEDEDF0), width: 1), + ), + ), + child: const Text( + "Logs", + style: TextStyle( + fontSize: 14, + color: Color(0xFF97979B), + fontWeight: FontWeight.w500, + ), + ), + ), + + // Empty State Message + const Padding( + padding: EdgeInsets.all(16), + child: Text( + "There are no logs to show", + style: TextStyle( + fontSize: 14, + color: Color(0xFF56565C), + fontFamily: 'monospace', + ), + ), + ), + ], + ); + } +} + +class LogsTableHeader extends StatelessWidget { + const LogsTableHeader({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + width: double.infinity, + padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16), + decoration: const BoxDecoration( + color: Color(0xFFFAFAFB), + border: Border.symmetric( + horizontal: BorderSide(color: Color(0xFFEDEDF0), width: 1), + ), + ), + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + children: _columns.map((column) { + return SizedBox( + width: column.$2, // Fixed width per column + child: Text( + column.$1, + style: const TextStyle( + fontSize: 14, + color: Color(0xFF97979B), + fontWeight: FontWeight.w500, + ), + overflow: TextOverflow.ellipsis, + maxLines: 1, + ), + ); + }).toList(), + ), + ), + ); + } +} + +// Column definitions (Equivalent to the `columns` list in Compose) +const List<(String, double)> _columns = [ + ("Date", 150), + ("Status", 80), + ("Method", 100), + ("Path", 125), + ("Response", 300), +]; + +class LogsTableRow extends StatelessWidget { + final Log log; + final bool needsScroll; + + const LogsTableRow({ + super.key, + required this.log, + this.needsScroll = false, + }); + + @override + Widget build(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.only(top: 16, left: 16, bottom: 8), + child: needsScroll + ? SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + _buildTextCell(log.date, _columns[0].$2, monospace: true), + _buildStatusCell(log.status.toString(), _columns[1].$2), + _buildTextCell(log.method, _columns[2].$2, + monospace: true), + _buildTextCell(log.path, _columns[3].$2, monospace: true), + _buildResponseCell(log.response, _columns[4].$2), + ], + ), + ) + : Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + _buildTextCell(log.date, _columns[0].$2, monospace: true), + _buildStatusCell(log.status.toString(), _columns[1].$2), + _buildTextCell(log.method, _columns[2].$2, monospace: true), + _buildTextCell(log.path, _columns[3].$2, monospace: true), + Expanded( + child: + _buildResponseCell(log.response, _columns[4].$2)), + ], + ), + ), + const Divider(color: Color(0xFFEDEDF0), thickness: 1), + ], + ); + } + + /// Builds a standard text cell. + Widget _buildTextCell(String text, double width, {bool monospace = false}) { + return SizedBox( + width: width, + child: Text( + text, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontSize: 14, + fontFamily: monospace ? 'monospace' : null, + color: const Color(0xFF56565C), + ), + ), + ); + } + + /// Builds the status cell with dynamic colors. + Widget _buildStatusCell(String status, double width) { + final isSuccess = int.tryParse(status) != null && + (200 <= int.parse(status) && int.parse(status) <= 399); + + final color = isSuccess ? const Color(0xFF0A714F) : const Color(0xFFB31212); + + final bgColor = + isSuccess ? const Color(0x4010B981) : const Color(0x40FF453A); + + return SizedBox( + width: width, + child: SingleWrap( + child: Container( + padding: const EdgeInsets.symmetric(vertical: 2, horizontal: 5), + decoration: BoxDecoration( + color: bgColor, + borderRadius: BorderRadius.circular(6), + ), + child: Text( + status, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w600, + color: color, + ), + ), + ), + ), + ); + } + + /// Builds the response cell with a gray background. + Widget _buildResponseCell(String response, double width) { + return SingleWrap( + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 5, vertical: 2), + decoration: BoxDecoration( + color: Colors.grey.applyOpacity(0.25), + borderRadius: BorderRadius.circular(3), + ), + child: Tooltip( + message: response.replaceAll(". ", ".\n"), + child: MouseRegion( + cursor: SystemMouseCursors.click, + child: Text( + response.substring(0, 50), + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: const TextStyle( + fontSize: 12, + color: Color(0xFF56565C), + fontFamily: 'monospace', + ), + ), + ), + ), + ), + ); + } +} diff --git a/lib/ui/components/connection_line.dart b/lib/ui/components/connection_line.dart new file mode 100644 index 0000000..d66e67b --- /dev/null +++ b/lib/ui/components/connection_line.dart @@ -0,0 +1,109 @@ +import 'package:appwrite_flutter_starter_kit/utils/extensions/build_context.dart'; +import 'package:flutter/material.dart'; + +/// A widget that animates a connection line with a checkmark in the middle. +/// The left and right lines expand and contract based on the `show` state, with a tick appearing after a delay. +/// +/// [show] - Controls whether the connection line animation and the tick are visible. +class ConnectionLine extends StatelessWidget { + final bool show; + + const ConnectionLine({super.key, required this.show}); + + @override + Widget build(BuildContext context) { + return SizedBox( + width: context.widthFactor( + mobileFactor: 0.25, + largeScreenFactor: 0.15, + ), + child: Flex( + direction: Axis.horizontal, + children: [ + // Left sideline with smooth expansion + AnimatedSideline(left: true, show: show), + + // Animated checkmark + AnimatedCheckmark(show: show), + + // Right sideline with smooth expansion + AnimatedSideline(left: false, show: show), + ], + ), + ); + } +} + +/// A widget that animates horizontal sidelines with a gradient effect. +/// Handles both visibility and width expansion smoothly. +/// +/// [left] - Indicates whether the sideline is on the left side (true) or right side (false). +/// [show] - Controls the visibility and animation of the sideline. +class AnimatedSideline extends StatelessWidget { + final bool left; + final bool show; + + const AnimatedSideline({super.key, required this.left, required this.show}); + + @override + Widget build(BuildContext context) { + return Expanded( + child: LayoutBuilder(builder: (context, constraints) { + return Align( + alignment: !left ? Alignment.centerLeft : Alignment.centerRight, + child: AnimatedContainer( + duration: Duration(milliseconds: 750), + width: show ? constraints.maxWidth : 0, + child: SizedBox( + height: 1.5, + child: DecoratedBox( + decoration: BoxDecoration( + gradient: LinearGradient( + colors: left + ? [ + const Color(0x26FE9567), + const Color(0xFFF02E65), + ] + : [ + const Color(0xFFF02E65), + const Color(0x26FE9567), + ], + ), + ), + ), + ), + ), + ); + }), + ); + } +} + +/// A widget that animates the checkmark icon's appearance with a fade-in effect. +/// +/// [show] - Determines when the checkmark appears. +class AnimatedCheckmark extends StatelessWidget { + final bool show; + + const AnimatedCheckmark({super.key, required this.show}); + + @override + Widget build(BuildContext context) { + return AnimatedOpacity( + opacity: show ? 1.0 : 0.0, + duration: Duration(milliseconds: 500), + child: Container( + width: 30, + height: 30, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: const Color(0x14F02E65), + border: Border.all(color: const Color(0x80F02E65), width: 1.8), + ), + child: const Center( + child: Icon(Icons.check, size: 15, color: Color(0xFFFD366E)), + ), + ), + ); + } +} diff --git a/lib/ui/components/connection_status_view.dart b/lib/ui/components/connection_status_view.dart new file mode 100644 index 0000000..7e5f70b --- /dev/null +++ b/lib/ui/components/connection_status_view.dart @@ -0,0 +1,175 @@ +import 'package:appwrite_flutter_starter_kit/data/models/status.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +/// A widget that displays the current connection status and allows the user to send a ping. +class ConnectionStatusView extends StatelessWidget { + final Status status; + final VoidCallback onButtonClick; + + const ConnectionStatusView({ + super.key, + required this.status, + required this.onButtonClick, + }); + + /// Simulates sending a ping with a loading state. + Future _sendPing() async { + HapticFeedback.mediumImpact(); + onButtonClick(); + } + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SizedBox( + height: 80, + child: AnimatedSwitcher( + duration: kThemeAnimationDuration, + child: _buildStatusContent(), + ), + ), + const SizedBox(height: 24), + AnimatedOpacity( + duration: const Duration(milliseconds: 300), + opacity: status == Status.loading ? 0.0 : 1.0, + child: ElevatedButton( + onPressed: status == Status.loading ? null : _sendPing, + style: ElevatedButton.styleFrom( + backgroundColor: const Color(0xFFFD366E), + disabledBackgroundColor: const Color(0xFFEDEDF0), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + ), + minimumSize: const Size(0, 32), + elevation: 0, + ), + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: 10, + horizontal: 6, + ), + child: Text( + "Send a ping", + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.w500, + color: Colors.white, + letterSpacing: 0.1, + ), + ), + ), + ), + ), + ], + ), + ); + } + + /// Builds the status message UI dynamically. + Widget _buildStatusContent() { + return Align( + key: ValueKey(status), + alignment: Alignment.center, + child: switch (status) { + Status.loading => _buildLoadingIndicator(), + Status.success => _buildSuccessMessage(), + Status.error => _buildIdleMessage(), + Status.idle || Status.error => _buildIdleMessage(), + }, + ); + } + + /// Loading State + Widget _buildLoadingIndicator() { + return Row( + key: const ValueKey(Status.loading), + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const SizedBox( + width: 20, + height: 20, + child: CircularProgressIndicator( + strokeWidth: 2, + color: Colors.grey, + ), + ), + const SizedBox(width: 16), + const Text( + "Waiting for connection...", + style: TextStyle( + fontSize: 14, + height: 19.6 / 14, + fontWeight: FontWeight.w400, + color: Color(0xFF2D2D31), + letterSpacing: 0.1, + ), + ), + ], + ); + } + + /// Success State + Widget _buildSuccessMessage() { + return Column( + key: const ValueKey(Status.success), + children: const [ + Text( + "Congratulations!", + style: TextStyle( + fontSize: 24, + fontWeight: FontWeight.w400, + color: Color(0xFF2D2D31), + ), + ), + SizedBox(height: 8), + Text( + "You connected your app successfully.", + style: TextStyle( + fontSize: 14, + height: 19.6 / 14, + fontWeight: FontWeight.w400, + color: Color(0xFF56565C), + letterSpacing: 0.1, + ), + textAlign: TextAlign.center, + ), + ], + ); + } + + /// Idle State + Widget _buildIdleMessage() { + return Column( + key: const ValueKey(Status.idle), + children: const [ + Text( + "Check connection", + style: TextStyle( + fontSize: 24, + height: 28.8 / 24, + fontWeight: FontWeight.w400, + color: Color(0xFF2D2D31), + ), + ), + SizedBox(height: 8), + Text( + "Send a ping to verify the connection.", + style: TextStyle( + fontSize: 14, + height: 19.6 / 14, + fontWeight: FontWeight.w400, + color: Color(0xFF56565C), + letterSpacing: 0.1, + ), + textAlign: TextAlign.center, + ), + ], + ); + } +} diff --git a/lib/ui/components/getting_started_cards.dart b/lib/ui/components/getting_started_cards.dart new file mode 100644 index 0000000..ede9089 --- /dev/null +++ b/lib/ui/components/getting_started_cards.dart @@ -0,0 +1,155 @@ +import 'package:appwrite_flutter_starter_kit/utils/extensions/build_context.dart'; +import 'package:flutter/material.dart'; +import 'package:url_launcher/url_launcher.dart'; + +/// A widget that contains a list of informational cards displayed vertically. +class GettingStartedCards extends StatelessWidget { + const GettingStartedCards({super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 16.0), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + GeneralInfoCard( + title: "Edit your app", + link: null, + subtitle: const HighlightedText(), + ), + GeneralInfoCard( + title: "Head to Appwrite Cloud", + link: "https://cloud.appwrite.io", + subtitle: const Text( + "Start managing your project from the Appwrite console", + style: TextStyle( + fontSize: 14, + color: Color(0xFF56565C), + ), + ), + ), + GeneralInfoCard( + title: "Explore docs", + link: "https://appwrite.io/docs", + subtitle: const Text( + "Discover the full power of Appwrite by diving into our documentation", + style: TextStyle( + fontSize: 14, + color: Color(0xFF56565C), + ), + ), + ), + ], + ), + ); + } +} + +/// A reusable card component that displays a title and subtitle with optional link functionality. +class GeneralInfoCard extends StatelessWidget { + final String title; + final String? link; + final Widget subtitle; + + const GeneralInfoCard({ + super.key, + required this.title, + this.link, + required this.subtitle, + }); + + void _openLink() async { + if (link != null && await canLaunchUrl(Uri.parse(link!))) { + await launchUrl(Uri.parse(link!)); + } + } + + @override + Widget build(BuildContext context) { + return LayoutBuilder(builder: (context, constraints) { + return SizedBox( + // `1` because we already have padding on sides. + width: constraints.maxWidth * (context.isExtraWideScreen ? 0.55 : 1), + child: Card( + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + side: const BorderSide(color: Color(0xFFEDEDF0), width: 1), + ), + color: Colors.white, + child: InkWell( + onTap: link != null ? _openLink : null, + borderRadius: BorderRadius.circular(8), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Text( + title, + style: const TextStyle( + fontSize: 20, + fontWeight: FontWeight.w400, + height: 26 / 20, + ), + ), + if (link != null) ...[ + const Spacer(), + const Icon( + Icons.arrow_forward, + size: 18, + color: Color(0xFFD8D8DB), + ), + ] + ], + ), + const SizedBox(height: 8), + subtitle, + ], + ), + ), + ), + ), + ); + }); + } +} + +/// A widget that displays highlighted text with a specific word or phrase styled differently. +class HighlightedText extends StatelessWidget { + const HighlightedText({super.key}); + + @override + Widget build(BuildContext context) { + return RichText( + text: TextSpan( + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.w400, + color: Color(0xFF56565C), + ), + children: [ + const TextSpan(text: "Edit "), + WidgetSpan( + alignment: PlaceholderAlignment.middle, + child: Container( + decoration: BoxDecoration( + color: const Color(0xFFEDEDF0), + borderRadius: BorderRadius.circular(4), + ), + padding: const EdgeInsets.symmetric(horizontal: 4, vertical: 2), + child: const Text( + " lib/main.dart ", + style: TextStyle(color: Colors.black), + ), + ), + ), + const TextSpan(text: " to get started with building your app"), + ], + ), + ); + } +} diff --git a/lib/ui/components/responsive_layout.dart b/lib/ui/components/responsive_layout.dart new file mode 100644 index 0000000..50c09d8 --- /dev/null +++ b/lib/ui/components/responsive_layout.dart @@ -0,0 +1,38 @@ +import 'package:flutter/material.dart'; + +/// A widget that provides a responsive layout by switching between two layouts +/// based on the available screen width. +/// +/// This widget uses a [LayoutBuilder] to determine if the screen width exceeds +/// the given [breakPoint]. If it does, the [largeDeviceLayout] is displayed; +/// otherwise, the [smallDeviceLayout] is shown. +/// +/// Example usage: +/// ```dart +/// ResponsiveLayout( +/// breakPoint: 768, +/// smallDeviceLayout: SmallScreenWidget(), +/// largeDeviceLayout: LargeScreenWidget(), +/// ) +/// ``` +class ResponsiveLayout extends StatelessWidget { + final int breakPoint; + final Widget smallDeviceLayout; + final Widget largeDeviceLayout; + + /// Creates a [ResponsiveLayout] widget. + const ResponsiveLayout({ + super.key, + this.breakPoint = 1024, + required this.smallDeviceLayout, + required this.largeDeviceLayout, + }); + + @override + Widget build(BuildContext context) { + return LayoutBuilder(builder: (context, constraints) { + bool isRunningOnALargeDevice = constraints.maxWidth > breakPoint; + return isRunningOnALargeDevice ? largeDeviceLayout : smallDeviceLayout; + }); + } +} diff --git a/lib/ui/components/single_wrap.dart b/lib/ui/components/single_wrap.dart new file mode 100644 index 0000000..5f9850d --- /dev/null +++ b/lib/ui/components/single_wrap.dart @@ -0,0 +1,14 @@ +import 'package:flutter/material.dart'; + +class SingleWrap extends StatelessWidget { + final Widget child; + + const SingleWrap({super.key, required this.child}); + + @override + Widget build(BuildContext context) { + return Wrap( + children: [child], + ); + } +} diff --git a/lib/ui/components/top_platform_view.dart b/lib/ui/components/top_platform_view.dart new file mode 100644 index 0000000..e457b06 --- /dev/null +++ b/lib/ui/components/top_platform_view.dart @@ -0,0 +1,90 @@ +import 'package:appwrite_flutter_starter_kit/data/models/status.dart'; +import 'package:appwrite_flutter_starter_kit/ui/icons/appwrite.dart'; +import 'package:flutter/material.dart'; + +import 'connection_line.dart'; + +/// A widget that displays a row containing platform icons and a connection line between them. +/// The connection line indicates the status of the platform connection. +/// +/// [status] - A boolean indicating whether the connection is successful. +class TopPlatformView extends StatelessWidget { + final Status status; + + const TopPlatformView({ + super.key, + required this.status, + }); + + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + PlatformIcon(child: FlutterLogo(size: 40)), + ConnectionLine(show: status == Status.success), + PlatformIcon(child: AppwriteIcon(size: 40)), + ], + ); + } +} + +/// A widget that displays a stylized platform icon with a customizable content block. +/// The icon is rendered with shadows, rounded corners, and a layered background. +/// +/// [size] - The size of the platform icon. +/// [child] - The inner content of the icon (e.g., an image or icon). +class PlatformIcon extends StatelessWidget { + final double size; + final Widget child; + + const PlatformIcon({ + super.key, + this.size = 100.0, + required this.child, + }); + + @override + Widget build(BuildContext context) { + return Container( + width: size, + height: size, + decoration: BoxDecoration( + color: const Color(0xFFFAFAFD), + borderRadius: BorderRadius.circular(24), + border: Border.all(color: const Color(0x0A19191C), width: 1), + boxShadow: [ + BoxShadow( + color: const Color(0x08000000), + blurRadius: 9.36, + offset: const Offset(0, 4), + ), + ], + ), + child: Center( + child: Container( + width: size * 0.86, + height: size * 0.86, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(16), + border: Border.all(color: const Color(0xFFFAFAFB), width: 1), + boxShadow: [ + BoxShadow( + color: const Color(0x05000000), + blurRadius: 8, + offset: const Offset(0, 2), + ), + BoxShadow( + color: const Color(0x05000000), + blurRadius: 12, + offset: const Offset(0, 3), + ), + ], + ), + child: Center(child: child), + ), + ), + ); + } +} diff --git a/lib/ui/icons/appwrite.dart b/lib/ui/icons/appwrite.dart new file mode 100644 index 0000000..d3ee58e --- /dev/null +++ b/lib/ui/icons/appwrite.dart @@ -0,0 +1,178 @@ +import 'package:flutter/material.dart'; + +class AppwriteIcon extends StatelessWidget { + final double size; // Desired width, height scales accordingly + final Color color; + + const AppwriteIcon({ + super.key, + this.size = 40, + this.color = const Color(0xFFFD366E), + }); + + @override + Widget build(BuildContext context) { + return SizedBox( + width: size, + height: size * (105 / 112), + child: CustomPaint( + painter: _AppwriteIconPainter(color), + ), + ); + } +} + +class _AppwriteIconPainter extends CustomPainter { + final Color color; + + _AppwriteIconPainter(this.color); + + @override + void paint(Canvas canvas, Size size) { + final paint = Paint() + ..color = color + ..style = PaintingStyle.fill; + + final path1 = Path() + ..moveTo(size.width * 0.992, size.height * 0.75) + ..lineTo(size.width * 0.992, size.height) + ..lineTo(size.width * 0.436, size.height) + ..cubicTo( + size.width * 0.274, + size.height, + size.width * 0.133, + size.height * 0.9, + size.width * 0.058, + size.height * 0.75, + ) + ..cubicTo( + size.width * 0.047, + size.height * 0.72, + size.width * 0.037, + size.height * 0.69, + size.width * 0.029, + size.height * 0.66, + ) + ..cubicTo( + size.width * 0.013, + size.height * 0.62, + size.width * 0.004, + size.height * 0.58, + 0, + size.height * 0.53, + ) + ..lineTo(0, size.height * 0.47) + ..cubicTo( + 0.001, + size.height * 0.46, + 0.002, + size.height * 0.44, + 0.003, + size.height * 0.43, + ) + ..cubicTo( + 0.006, + size.height * 0.41, + 0.01, + size.height * 0.39, + 0.014, + size.height * 0.36, + ) + ..cubicTo( + size.width * 0.067, + size.height * 0.15, + size.width * 0.236, + 0, + size.width * 0.436, + 0, + ) + ..cubicTo( + size.width * 0.637, + 0, + size.width * 0.805, + size.height * 0.15, + size.width * 0.857, + size.height * 0.36, + ) + ..lineTo(size.width * 0.62, size.height * 0.36) + ..cubicTo( + size.width * 0.58, + size.height * 0.3, + size.width * 0.514, + size.height * 0.25, + size.width * 0.436, + size.height * 0.25, + ) + ..cubicTo( + size.width * 0.357, + size.height * 0.25, + size.width * 0.29, + size.height * 0.3, + size.width * 0.251, + size.height * 0.36, + ) + ..cubicTo( + size.width * 0.241, + size.height * 0.38, + size.width * 0.232, + size.height * 0.41, + size.width * 0.227, + size.height * 0.43, + ) + ..cubicTo( + size.width * 0.221, + size.height * 0.45, + size.width * 0.218, + size.height * 0.47, + size.width * 0.218, + size.height * 0.5, + ) + ..cubicTo( + size.width * 0.218, + size.height * 0.57, + size.width * 0.244, + size.height * 0.63, + size.width * 0.277, + size.height * 0.66, + ) + ..cubicTo( + size.width * 0.316, + size.height * 0.71, + size.width * 0.374, + size.height * 0.75, + size.width * 0.436, + size.height * 0.75, + ) + ..lineTo(size.width * 0.992, size.height * 0.75) + ..close(); + + final path2 = Path() + ..moveTo(size.width * 0.992, size.height * 0.43) + ..lineTo(size.width * 0.992, size.height * 0.66) + ..lineTo(size.width * 0.586, size.height * 0.66) + ..cubicTo( + size.width * 0.63, + size.height * 0.63, + size.width * 0.654, + size.height * 0.57, + size.width * 0.654, + size.height * 0.5, + ) + ..cubicTo( + size.width * 0.654, + size.height * 0.47, + size.width * 0.651, + size.height * 0.45, + size.width * 0.646, + size.height * 0.43, + ) + ..lineTo(size.width * 0.992, size.height * 0.43) + ..close(); + + canvas.drawPath(path1, paint); + canvas.drawPath(path2, paint); + } + + @override + bool shouldRepaint(covariant CustomPainter oldDelegate) => false; +} diff --git a/lib/utils/app_initializer.dart b/lib/utils/app_initializer.dart new file mode 100644 index 0000000..6b1d365 --- /dev/null +++ b/lib/utils/app_initializer.dart @@ -0,0 +1,54 @@ +import 'dart:io'; + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/services.dart'; +import 'package:window_manager/window_manager.dart'; + +/// A utility class for initializing the Flutter application. +/// +/// This class ensures Flutter bindings are initialized, configures +/// window dimensions for desktop applications, and sets the device +/// orientation for mobile platforms. +class AppInitializer { + /// Initializes the application setup. + /// + /// Ensures Flutter bindings are initialized, sets up window dimensions, + /// and configures device orientation settings. + static initialize() async { + _ensureInitialized(); + await _setupWindowDimensions(); + await _setupDeviceOrientation(); + } + + /// Ensures that Flutter bindings are initialized. + static _ensureInitialized() { + WidgetsFlutterBinding.ensureInitialized(); + } + + /// Configures the window dimensions for desktop applications. + /// + /// Ensures the window manager is initialized and sets a minimum window size. + static _setupWindowDimensions() async { + // Flutter maintains web on its own. + if (kIsWeb || Platform.isAndroid || Platform.isIOS) return; + + await windowManager.ensureInitialized(); + windowManager.setMinimumSize(const Size(425, 600)); + } + + /// Configures the device orientation and system UI overlays. + /// + /// Locks the device orientation to portrait mode and ensures system + /// UI overlays are manually configured. + static _setupDeviceOrientation() async { + await SystemChrome.setPreferredOrientations([ + DeviceOrientation.portraitUp, + ]); + + await SystemChrome.setEnabledSystemUIMode( + SystemUiMode.manual, + overlays: [SystemUiOverlay.bottom, SystemUiOverlay.top], + ); + } +} diff --git a/lib/utils/extensions/build_context.dart b/lib/utils/extensions/build_context.dart new file mode 100644 index 0000000..21608c0 --- /dev/null +++ b/lib/utils/extensions/build_context.dart @@ -0,0 +1,24 @@ +import 'package:flutter/material.dart'; + +/// Extension on [BuildContext] to provide easy access to media query properties. +extension MediaQueryExtensions on BuildContext { + /// Returns `true` if the device width is greater than 768 pixels. + bool get isLargeScreen => MediaQuery.of(this).size.width > 768; + + bool get isExtraWideScreen => MediaQuery.of(this).size.width > 1024; + + /// Returns `true` if the device width is 768 pixels or less. + bool get isMobile => !isLargeScreen; + + /// Returns a scaled width factor based on the screen size. + double widthFactor({ + required double mobileFactor, + required double largeScreenFactor, + }) { + return MediaQuery.of(this).size.width * + (isMobile ? mobileFactor : largeScreenFactor); + } +} + + + diff --git a/lib/utils/extensions/colors.dart b/lib/utils/extensions/colors.dart new file mode 100644 index 0000000..d99913c --- /dev/null +++ b/lib/utils/extensions/colors.dart @@ -0,0 +1,12 @@ +import 'dart:ui'; + +/// Extension on [Color] to provide additional color manipulation utilities. +extension ColorExtensions on Color { + /// Returns a new color with the given [opacity] applied. + /// + /// The [opacity] value should be between `0.0` (fully transparent) and `1.0` (fully opaque). + /// If the value is out of bounds, it is clamped within the valid range. + Color applyOpacity(double opacity) { + return withAlpha((opacity * 255).toInt().clamp(0, 255)); + } +} 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..53fe7a0 --- /dev/null +++ b/linux/CMakeLists.txt @@ -0,0 +1,128 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.13) +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 "Appwrite Starter Kit") +# The unique GTK application identifier for this application. See: +# https://wiki.gnome.org/HowDoI/ChooseApplicationID +set(APPLICATION_ID "io.appwrite.flutter") + +# 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) + +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") + +# 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) + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# 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..a66595a --- /dev/null +++ b/linux/flutter/generated_plugin_registrant.cc @@ -0,0 +1,31 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include +#include +#include +#include +#include + +void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) desktop_webview_window_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "DesktopWebviewWindowPlugin"); + desktop_webview_window_plugin_register_with_registrar(desktop_webview_window_registrar); + g_autoptr(FlPluginRegistrar) screen_retriever_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "ScreenRetrieverLinuxPlugin"); + screen_retriever_linux_plugin_register_with_registrar(screen_retriever_linux_registrar); + 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); + g_autoptr(FlPluginRegistrar) window_manager_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "WindowManagerPlugin"); + window_manager_plugin_register_with_registrar(window_manager_registrar); + g_autoptr(FlPluginRegistrar) window_to_front_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "WindowToFrontPlugin"); + window_to_front_plugin_register_with_registrar(window_to_front_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..febb7dd --- /dev/null +++ b/linux/flutter/generated_plugins.cmake @@ -0,0 +1,28 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + desktop_webview_window + screen_retriever_linux + url_launcher_linux + window_manager + window_to_front +) + +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/runner/CMakeLists.txt b/linux/runner/CMakeLists.txt new file mode 100644 index 0000000..e97dabc --- /dev/null +++ b/linux/runner/CMakeLists.txt @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 3.13) +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} + "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 preprocessor definitions for the application ID. +add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") + +# Add dependency libraries. Add any application-specific dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter) +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) + +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") diff --git a/linux/runner/main.cc b/linux/runner/main.cc new file mode 100644 index 0000000..e7c5c54 --- /dev/null +++ b/linux/runner/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/runner/my_application.cc b/linux/runner/my_application.cc new file mode 100644 index 0000000..1f7fe86 --- /dev/null +++ b/linux/runner/my_application.cc @@ -0,0 +1,130 @@ +#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, "Appwrite Starter Kit"); + 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, "Appwrite Starter Kit"); + } + + 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 GApplication::startup. +static void my_application_startup(GApplication* application) { + //MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application startup. + + G_APPLICATION_CLASS(my_application_parent_class)->startup(application); +} + +// Implements GApplication::shutdown. +static void my_application_shutdown(GApplication* application) { + //MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application shutdown. + + G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application); +} + +// 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_APPLICATION_CLASS(klass)->startup = my_application_startup; + G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown; + G_OBJECT_CLASS(klass)->dispose = my_application_dispose; +} + +static void my_application_init(MyApplication* self) {} + +MyApplication* my_application_new() { + // Set the program name to the application ID, which helps various systems + // like GTK and desktop environments map this running application to its + // corresponding .desktop file. This ensures better integration by allowing + // the application to be recognized beyond its binary name. + g_set_prgname(APPLICATION_ID); + + return MY_APPLICATION(g_object_new(my_application_get_type(), + "application-id", APPLICATION_ID, + "flags", G_APPLICATION_NON_UNIQUE, + nullptr)); +} diff --git a/linux/runner/my_application.h b/linux/runner/my_application.h new file mode 100644 index 0000000..72271d5 --- /dev/null +++ b/linux/runner/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..4b81f9b --- /dev/null +++ b/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#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..5caa9d1 --- /dev/null +++ b/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 0000000..7758f55 --- /dev/null +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,28 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + +import desktop_webview_window +import device_info_plus +import flutter_web_auth_2 +import package_info_plus +import path_provider_foundation +import screen_retriever_macos +import url_launcher_macos +import window_manager +import window_to_front + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + DesktopWebviewWindowPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewWindowPlugin")) + DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) + FlutterWebAuth2Plugin.register(with: registry.registrar(forPlugin: "FlutterWebAuth2Plugin")) + FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) + PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) + ScreenRetrieverMacosPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverMacosPlugin")) + UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) + WindowManagerPlugin.register(with: registry.registrar(forPlugin: "WindowManagerPlugin")) + WindowToFrontPlugin.register(with: registry.registrar(forPlugin: "WindowToFrontPlugin")) +} diff --git a/macos/Podfile b/macos/Podfile new file mode 100644 index 0000000..b52666a --- /dev/null +++ b/macos/Podfile @@ -0,0 +1,43 @@ +platform :osx, '10.15' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_macos_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_macos_build_settings(target) + end +end diff --git a/macos/Podfile.lock b/macos/Podfile.lock new file mode 100644 index 0000000..9a12a70 --- /dev/null +++ b/macos/Podfile.lock @@ -0,0 +1,71 @@ +PODS: + - desktop_webview_window (0.0.1): + - FlutterMacOS + - device_info_plus (0.0.1): + - FlutterMacOS + - flutter_web_auth_2 (3.0.0): + - FlutterMacOS + - FlutterMacOS (1.0.0) + - package_info_plus (0.0.1): + - FlutterMacOS + - path_provider_foundation (0.0.1): + - Flutter + - FlutterMacOS + - screen_retriever_macos (0.0.1): + - FlutterMacOS + - url_launcher_macos (0.0.1): + - FlutterMacOS + - window_manager (0.2.0): + - FlutterMacOS + - window_to_front (0.0.1): + - FlutterMacOS + +DEPENDENCIES: + - desktop_webview_window (from `Flutter/ephemeral/.symlinks/plugins/desktop_webview_window/macos`) + - device_info_plus (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos`) + - flutter_web_auth_2 (from `Flutter/ephemeral/.symlinks/plugins/flutter_web_auth_2/macos`) + - FlutterMacOS (from `Flutter/ephemeral`) + - package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`) + - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`) + - screen_retriever_macos (from `Flutter/ephemeral/.symlinks/plugins/screen_retriever_macos/macos`) + - url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`) + - window_manager (from `Flutter/ephemeral/.symlinks/plugins/window_manager/macos`) + - window_to_front (from `Flutter/ephemeral/.symlinks/plugins/window_to_front/macos`) + +EXTERNAL SOURCES: + desktop_webview_window: + :path: Flutter/ephemeral/.symlinks/plugins/desktop_webview_window/macos + device_info_plus: + :path: Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos + flutter_web_auth_2: + :path: Flutter/ephemeral/.symlinks/plugins/flutter_web_auth_2/macos + FlutterMacOS: + :path: Flutter/ephemeral + package_info_plus: + :path: Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos + path_provider_foundation: + :path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin + screen_retriever_macos: + :path: Flutter/ephemeral/.symlinks/plugins/screen_retriever_macos/macos + url_launcher_macos: + :path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos + window_manager: + :path: Flutter/ephemeral/.symlinks/plugins/window_manager/macos + window_to_front: + :path: Flutter/ephemeral/.symlinks/plugins/window_to_front/macos + +SPEC CHECKSUMS: + desktop_webview_window: d4365e71bcd4e1aa0c14cf0377aa24db0c16a7e2 + device_info_plus: ce1b7762849d3ec103d0e0517299f2db7ad60720 + flutter_web_auth_2: 2e1dc2d2139973e4723c5286ce247dd590390d70 + FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 + package_info_plus: be3a7c662b35b518cca507dca41f3bf94ba94c8e + path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 + screen_retriever_macos: 776e0fa5d42c6163d2bf772d22478df4b302b161 + url_launcher_macos: c82c93949963e55b228a30115bd219499a6fe404 + window_manager: 3a1844359a6295ab1e47659b1a777e36773cd6e8 + window_to_front: 4cdc24ddd8461ad1a55fa06286d6a79d8b29e8d8 + +PODFILE CHECKSUM: 9ebaf0ce3d369aaa26a9ea0e159195ed94724cf3 + +COCOAPODS: 1.16.2 diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..22524a6 --- /dev/null +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,803 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + 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 */ + 2464C08BC03349653C5BDAAB /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4644FE70283B57CD1EBAC26 /* Pods_RunnerTests.framework */; }; + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; + 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 */; }; + FDF272E1DA9D54A426135F5A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2C942BA9DFBD9913A43B81FC /* Pods_Runner.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC10EC2044A3C60003C045; + remoteInfo = Runner; + }; + 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 */ + 2C942BA9DFBD9913A43B81FC /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 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 /* AppwriteStarterKit.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = appwrite_flutter_starter_kit.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 = ""; }; + 3E7F72392D3FEA6B0BD112CE /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 4514523358F2BD030E0F74B6 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 55E134DD1AEABE5CF6810489 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + 5C55932AE4639A8B2E96DEB2 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + 65540E43009735D78F8995FD /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.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 = ""; }; + C57AE8F87DC2543F62A78A9F /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + E4644FE70283B57CD1EBAC26 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 331C80D2294CF70F00263BE5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2464C08BC03349653C5BDAAB /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + FDF272E1DA9D54A426135F5A /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C80D6294CF71000263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C80D7294CF71000263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 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 */, + 331C80D6294CF71000263BE5 /* RunnerTests */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + 88595052B9213FB1C3519773 /* Pods */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* AppwriteStarterKit.app */, + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */, + ); + 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 = ""; + }; + 88595052B9213FB1C3519773 /* Pods */ = { + isa = PBXGroup; + children = ( + 4514523358F2BD030E0F74B6 /* Pods-Runner.debug.xcconfig */, + 65540E43009735D78F8995FD /* Pods-Runner.release.xcconfig */, + 3E7F72392D3FEA6B0BD112CE /* Pods-Runner.profile.xcconfig */, + 55E134DD1AEABE5CF6810489 /* Pods-RunnerTests.debug.xcconfig */, + C57AE8F87DC2543F62A78A9F /* Pods-RunnerTests.release.xcconfig */, + 5C55932AE4639A8B2E96DEB2 /* Pods-RunnerTests.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 2C942BA9DFBD9913A43B81FC /* Pods_Runner.framework */, + E4644FE70283B57CD1EBAC26 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C80D4294CF70F00263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + F2B4910855128A03610894E6 /* [CP] Check Pods Manifest.lock */, + 331C80D1294CF70F00263BE5 /* Sources */, + 331C80D2294CF70F00263BE5 /* Frameworks */, + 331C80D3294CF70F00263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C80DA294CF71000263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 05F3A54F5AFEF08AD37625E9 /* [CP] Check Pods Manifest.lock */, + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + EC1E796C3B2F3E1CC090E7AF /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* AppwriteStarterKit.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C80D4294CF70F00263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 33CC10EC2044A3C60003C045; + }; + 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 */, + 331C80D4294CF70F00263BE5 /* RunnerTests */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C80D3294CF70F00263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 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 */ + 05F3A54F5AFEF08AD37625E9 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + 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"; + }; + EC1E796C3B2F3E1CC090E7AF /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + F2B4910855128A03610894E6 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C80D1294CF70F00263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 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 */ + 331C80DA294CF71000263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC10EC2044A3C60003C045 /* Runner */; + targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */; + }; + 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 */ + 331C80DB294CF71000263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 55E134DD1AEABE5CF6810489 /* Pods-RunnerTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.appwrite.flutter.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AppwriteStarterKit.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/AppwriteStarterKit"; + }; + name = Debug; + }; + 331C80DC294CF71000263BE5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C57AE8F87DC2543F62A78A9F /* Pods-RunnerTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.appwrite.flutter.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AppwriteStarterKit.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/AppwriteStarterKit"; + }; + name = Release; + }; + 331C80DD294CF71000263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5C55932AE4639A8B2E96DEB2 /* Pods-RunnerTests.profile.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.appwrite.flutter.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AppwriteStarterKit.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/AppwriteStarterKit"; + }; + name = Profile; + }; + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + 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; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + 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.14; + 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", + ); + MACOSX_DEPLOYMENT_TARGET = 10.15; + 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; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + 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; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + 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.14; + 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; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + 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; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + 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.14; + 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", + ); + MACOSX_DEPLOYMENT_TARGET = 10.15; + 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", + ); + MACOSX_DEPLOYMENT_TARGET = 10.15; + 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 */ + 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C80DB294CF71000263BE5 /* Debug */, + 331C80DC294CF71000263BE5 /* Release */, + 331C80DD294CF71000263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 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..29d104f --- /dev/null +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner.xcworkspace/contents.xcworkspacedata b/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..21a3cc1 --- /dev/null +++ b/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + 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..b3c1761 --- /dev/null +++ b/macos/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Cocoa +import FlutterMacOS + +@main +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } + + override func applicationSupportsSecureRestorableState(_ app: 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..96d3fee --- /dev/null +++ b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "info": { + "version": 1, + "author": "xcode" + }, + "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" + } + ] +} \ No newline at end of file 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..145077294adf08a9b72027304cd32c07ddc3b6e3 GIT binary patch literal 96949 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 literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png new file mode 100644 index 0000000000000000000000000000000000000000..61865624123e76bbb08b2723e8c1d4d8ae6cf5d6 GIT binary patch literal 14543 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 UHS4@b2o-_X@@jGwGNvK_1Jg~okN^Mx literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png new file mode 100644 index 0000000000000000000000000000000000000000..1e8a2bb457b8186b412235bf6ec99b9a5024a515 GIT binary patch literal 1110 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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..e4a3eec6bb40d9c9b7d1c8ae5d28743c661d98d9 GIT binary patch literal 2454 zcmV;H32F9;P)G}brcEc2GDxO2qis5!cBhq& zO?1{DN=QqsPKKzpw$+TbL(-{e>7Xkbk|EShz@LEtq4)#K|Gs-W_w51;zW4U+zFpC& zAG6%uz3;ty&Ueo}_nhFXravz68KVh*5na2fN*_w4C#%Q>RXqZr!@|^~T1=L8IpzCLk{_@3GR- z(zg;56BmUhYGgqONnO8wy<_$2)rFfjZF=^|ks}w3oM(uDf`Wo|4u|6}v9Yo7rX`Iq ztX6BkBw)>&H5m?vP#W0dwchP07m2T5|5(Ij35`CIQQrFJBdzeV%*cA^%V(g5iYFVa19StAZvVEiElP zv(H74!hoA@$RD+UTxkb)_lqxqsZ&6bXM;ZS5HM?okQR|3-Db1dwE8p&NJ>hYV`fk; z6zm^_{LUrtw`)NguY(TB%4}0G@X=`}kSPTgJ_J0q1k#3OAPI2_8R5e0*|Rlu(Ig-) zE-oRY(R?#5zk3n9^aP~#o66UUI&>s8kd)8dcY?$jxT^*D&vnQL-T_{C64KLO0I^uY zvOK0wpKjIa(;|Sx$Hz|zWiZ~?56`a-gH~MvCGeTFx)x;Oe@Y?U?gM}A7(CSHG+YA}iiapUp#+lC1<#9nLHB(h(%e~Q zEn#9-ItslwASeQO{~(69RX}RE3c{&r(-r*D)=sc3zXf@t7<7iF6`O*dl7>|f4sW>h z1T2@XC}eBARYkcVd}sK2nPCAG}rgZj0uy-$lK9QwMStu}H5)&T(^|uvI zPBo^U5dyYhDWvDtg3O!k+YLA<=ir^Uzz&}Q`Quq&*rO5$aDZ^|@>4)g1`rc%T4aBi zCV&Zt_udun%uJA7m^zD&0{{6lkk)33#o@QVdygldO$2%AYhbGvLEcsYOV7ZB)#sga z+S&#A%m#(f#39TWyIG28YA$ZC2@ciI*GMkd{3HoUnTx%lO`LO*moB0^EHd zt)1$QNi5xOJ`O@9!;%XUIAh=~ohl@ZyY$#ONr@m+0{R8bijj;F1&|Q08Ev=UbyNMS$XcZS%nEnp6bgAV#WJ~RaWhbobYhCSrff;j@j%&u7sTxhyOK_$5PuN$6{!?2V*2ND&nOM-A@ zgTMP5EUjH&u`!0mXN)W1x0y1U$w-iZuFHg6b`qAsp*urZk;qiPkKrHv9+sax12S`( zuCOuRdjfd=%c|q3t#uJ$u-GV58ko)nNTL;ZdKLJg)2e<;d}pa?1k3w1kh>IQ&10a+ zGXaZQjl#cBHug!cMNE`Vxg#+22r%Sc#aflVyAE>IMOeDJRlK*?5@=5^Q29^rH%~*B z{I@thn(%O?<)g~60Ii3KK4fH4-Z0D9^oWl z1fzL<*Hf>7==brJ@{#i-L%vWG}m0AtJ(vT#C{gsF%s*Z}_Q7s3A3 z0AAAoG+YC^+<-`-g#!ci6%OD{eu8-~ZmEGnB3!c;>4)I!0dBW@C{zMQAZA6}=Oa%o z1)f~$_59+-Xy1UU_f`@>Zv4GM-^^(NeW5JNn!0Eaz%9b_i&mc|0rmCu_07%A*HcqdAC8!0cL6OeEp1MxQ}yu}1c(FrN=r)* zI2?|jMMku{gR-)+HyLBSTK&3#PWO4QC)lc^9*;DFEAXTB8 z4Gs(pbmZsfZ>g@X7Eg;BE7RN~7#tiN&d<;PVP9WgtKM;e(qZOwI!|rfxbfwqN008h zUr6vN|KpmPn&W!24}Fw>k z48Tw*A52APxWB*u!<{>KzOrlAu6>!AnaftLT)D(%v!x^@B_&#|)~QiZQBfqqfrF@1 zcs!nA@dS8#dwZA5<+@&5TYK@sg$uQeu}{RUm0+$HN=eMkId|37)iu@C)g2RMNdVEl zA}!T>A}dT_zOYtgtHVAs7qcygaxpVCK`~&z?{(ke!O!L + + + + + + + + + + + + + + + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner/Configs/AppInfo.xcconfig b/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 0000000..707d994 --- /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 = AppwriteStarterKit + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = io.appwrite.flutter + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2025 io.appwrite. 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..c946719 --- /dev/null +++ b/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,14 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.server + + com.apple.security.network.client + + + 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..3cc05eb --- /dev/null +++ b/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController() + 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..48271ac --- /dev/null +++ b/macos/Runner/Release.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.network.client + + + diff --git a/macos/RunnerTests/RunnerTests.swift b/macos/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..61f3bd1 --- /dev/null +++ b/macos/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Cocoa +import FlutterMacOS +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 0000000..359de51 --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,629 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + ansicolor: + dependency: transitive + description: + name: ansicolor + sha256: "50e982d500bc863e1d703448afdbf9e5a72eb48840a4f766fa361ffd6877055f" + url: "https://pub.dev" + source: hosted + version: "2.0.3" + appwrite: + dependency: "direct main" + description: + name: appwrite + sha256: "3e1f618c8f75bafa49ef7b1b445f64c53cf4620a195443f4d119bbc95a666d0a" + url: "https://pub.dev" + source: hosted + version: "14.0.0" + archive: + dependency: transitive + description: + name: archive + sha256: "6199c74e3db4fbfbd04f66d739e72fe11c8a8957d5f219f1f4482dbde6420b5a" + url: "https://pub.dev" + source: hosted + version: "4.0.2" + args: + dependency: transitive + description: + name: args + sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6 + url: "https://pub.dev" + source: hosted + version: "2.6.0" + async: + dependency: transitive + description: + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + characters: + dependency: transitive + description: + name: characters + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff + url: "https://pub.dev" + source: hosted + version: "2.0.3" + cli_util: + dependency: transitive + description: + name: cli_util + sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c + url: "https://pub.dev" + source: hosted + version: "0.4.2" + clock: + dependency: transitive + description: + name: clock + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" + source: hosted + version: "1.1.1" + collection: + dependency: transitive + description: + name: collection + sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + url: "https://pub.dev" + source: hosted + version: "1.19.0" + cookie_jar: + dependency: transitive + description: + name: cookie_jar + sha256: a6ac027d3ed6ed756bfce8f3ff60cb479e266f3b0fdabd6242b804b6765e52de + url: "https://pub.dev" + source: hosted + version: "4.0.8" + crypto: + dependency: transitive + description: + name: crypto + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" + url: "https://pub.dev" + source: hosted + version: "3.0.6" + csslib: + dependency: transitive + description: + name: csslib + sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e" + url: "https://pub.dev" + source: hosted + version: "1.0.2" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 + url: "https://pub.dev" + source: hosted + version: "1.0.8" + desktop_webview_window: + dependency: transitive + description: + name: desktop_webview_window + sha256: "57cf20d81689d5cbb1adfd0017e96b669398a669d927906073b0e42fc64111c0" + url: "https://pub.dev" + source: hosted + version: "0.2.3" + device_info_plus: + dependency: transitive + description: + name: device_info_plus + sha256: a7fd703482b391a87d60b6061d04dfdeab07826b96f9abd8f5ed98068acc0074 + url: "https://pub.dev" + source: hosted + version: "10.1.2" + device_info_plus_platform_interface: + dependency: transitive + description: + name: device_info_plus_platform_interface + sha256: "0b04e02b30791224b31969eb1b50d723498f402971bff3630bca2ba839bd1ed2" + url: "https://pub.dev" + source: hosted + version: "7.0.2" + ffi: + dependency: transitive + description: + name: ffi + sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" + url: "https://pub.dev" + source: hosted + version: "2.1.3" + file: + dependency: transitive + description: + name: file + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 + url: "https://pub.dev" + source: hosted + version: "7.0.1" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_launcher_icons: + dependency: "direct dev" + description: + name: flutter_launcher_icons + sha256: bfa04787c85d80ecb3f8777bde5fc10c3de809240c48fa061a2c2bf15ea5211c + url: "https://pub.dev" + source: hosted + version: "0.14.3" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" + url: "https://pub.dev" + source: hosted + version: "5.0.0" + flutter_native_splash: + dependency: "direct dev" + description: + name: flutter_native_splash + sha256: "7062602e0dbd29141fb8eb19220b5871ca650be5197ab9c1f193a28b17537bc7" + url: "https://pub.dev" + source: hosted + version: "2.4.4" + flutter_web_auth_2: + dependency: "direct overridden" + description: + name: flutter_web_auth_2 + sha256: "3c14babeaa066c371f3a743f204dd0d348b7d42ffa6fae7a9847a521aff33696" + url: "https://pub.dev" + source: hosted + version: "4.1.0" + flutter_web_auth_2_platform_interface: + dependency: transitive + description: + name: flutter_web_auth_2_platform_interface + sha256: c63a472c8070998e4e422f6b34a17070e60782ac442107c70000dd1bed645f4d + url: "https://pub.dev" + source: hosted + version: "4.1.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + html: + dependency: transitive + description: + name: html + sha256: "1fc58edeaec4307368c60d59b7e15b9d658b57d7f3125098b6294153c75337ec" + url: "https://pub.dev" + source: hosted + version: "0.15.5" + http: + dependency: transitive + description: + name: http + sha256: fe7ab022b76f3034adc518fb6ea04a82387620e19977665ea18d30a1cf43442f + url: "https://pub.dev" + source: hosted + version: "1.3.0" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" + url: "https://pub.dev" + source: hosted + version: "4.1.2" + image: + dependency: transitive + description: + name: image + sha256: "8346ad4b5173924b5ddddab782fc7d8a6300178c8b1dc427775405a01701c4a6" + url: "https://pub.dev" + source: hosted + version: "4.5.2" + intl: + dependency: "direct main" + description: + name: intl + sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" + url: "https://pub.dev" + source: hosted + version: "0.20.2" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" + url: "https://pub.dev" + source: hosted + version: "4.9.0" + lints: + dependency: transitive + description: + name: lints + sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 + url: "https://pub.dev" + source: hosted + version: "5.1.1" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + url: "https://pub.dev" + source: hosted + version: "0.11.1" + meta: + dependency: transitive + description: + name: meta + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + url: "https://pub.dev" + source: hosted + version: "1.15.0" + package_info_plus: + dependency: transitive + description: + name: package_info_plus + sha256: b15fad91c4d3d1f2b48c053dd41cb82da007c27407dc9ab5f9aa59881d0e39d4 + url: "https://pub.dev" + source: hosted + version: "8.1.4" + package_info_plus_platform_interface: + dependency: transitive + description: + name: package_info_plus_platform_interface + sha256: a5ef9986efc7bf772f2696183a3992615baa76c1ffb1189318dd8803778fb05b + url: "https://pub.dev" + source: hosted + version: "3.0.2" + path: + dependency: transitive + description: + name: path + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + url: "https://pub.dev" + source: hosted + version: "1.9.0" + path_provider: + dependency: transitive + description: + name: path_provider + sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" + url: "https://pub.dev" + source: hosted + version: "2.1.5" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + sha256: "4adf4fd5423ec60a29506c76581bc05854c55e3a0b72d35bb28d661c9686edf2" + url: "https://pub.dev" + source: hosted + version: "2.2.15" + path_provider_foundation: + dependency: transitive + description: + name: path_provider_foundation + sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 + url: "https://pub.dev" + source: hosted + version: "2.2.1" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 + url: "https://pub.dev" + source: hosted + version: "2.3.0" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 + url: "https://pub.dev" + source: hosted + version: "6.0.2" + platform: + dependency: transitive + description: + name: platform + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" + url: "https://pub.dev" + source: hosted + version: "3.1.6" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" + posix: + dependency: transitive + description: + name: posix + sha256: a0117dc2167805aa9125b82eee515cc891819bac2f538c83646d355b16f58b9a + url: "https://pub.dev" + source: hosted + version: "6.0.1" + screen_retriever: + dependency: transitive + description: + name: screen_retriever + sha256: "570dbc8e4f70bac451e0efc9c9bb19fa2d6799a11e6ef04f946d7886d2e23d0c" + url: "https://pub.dev" + source: hosted + version: "0.2.0" + screen_retriever_linux: + dependency: transitive + description: + name: screen_retriever_linux + sha256: f7f8120c92ef0784e58491ab664d01efda79a922b025ff286e29aa123ea3dd18 + url: "https://pub.dev" + source: hosted + version: "0.2.0" + screen_retriever_macos: + dependency: transitive + description: + name: screen_retriever_macos + sha256: "71f956e65c97315dd661d71f828708bd97b6d358e776f1a30d5aa7d22d78a149" + url: "https://pub.dev" + source: hosted + version: "0.2.0" + screen_retriever_platform_interface: + dependency: transitive + description: + name: screen_retriever_platform_interface + sha256: ee197f4581ff0d5608587819af40490748e1e39e648d7680ecf95c05197240c0 + url: "https://pub.dev" + source: hosted + version: "0.2.0" + screen_retriever_windows: + dependency: transitive + description: + name: screen_retriever_windows + sha256: "449ee257f03ca98a57288ee526a301a430a344a161f9202b4fcc38576716fe13" + url: "https://pub.dev" + source: hosted + version: "0.2.0" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + source_span: + dependency: transitive + description: + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" + source: hosted + version: "1.10.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" + source: hosted + version: "2.1.2" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + universal_io: + dependency: transitive + description: + name: universal_io + sha256: "1722b2dcc462b4b2f3ee7d188dad008b6eb4c40bbd03a3de451d82c78bba9aad" + url: "https://pub.dev" + source: hosted + version: "2.2.2" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + sha256: "9d06212b1362abc2f0f0d78e6f09f726608c74e3b9462e8368bb03314aa8d603" + url: "https://pub.dev" + source: hosted + version: "6.3.1" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + sha256: "6fc2f56536ee873eeb867ad176ae15f304ccccc357848b351f6f0d8d4a40d193" + url: "https://pub.dev" + source: hosted + version: "6.3.14" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + sha256: "16a513b6c12bb419304e72ea0ae2ab4fed569920d1c7cb850263fe3acc824626" + url: "https://pub.dev" + source: hosted + version: "6.3.2" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935" + url: "https://pub.dev" + source: hosted + version: "3.2.1" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + sha256: "17ba2000b847f334f16626a574c702b196723af2a289e7a93ffcb79acff855c2" + url: "https://pub.dev" + source: hosted + version: "3.2.2" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + sha256: "3ba963161bd0fe395917ba881d320b9c4f6dd3c4a233da62ab18a5025c85f1e9" + url: "https://pub.dev" + source: hosted + version: "2.4.0" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" + url: "https://pub.dev" + source: hosted + version: "3.1.4" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + web: + dependency: transitive + description: + name: web + sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb + url: "https://pub.dev" + source: hosted + version: "1.1.0" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83" + url: "https://pub.dev" + source: hosted + version: "0.1.6" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: "0b8e2457400d8a859b7b2030786835a28a8e80836ef64402abef392ff4f1d0e5" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + win32: + dependency: transitive + description: + name: win32 + sha256: daf97c9d80197ed7b619040e86c8ab9a9dad285e7671ee7390f9180cc828a51e + url: "https://pub.dev" + source: hosted + version: "5.10.1" + win32_registry: + dependency: transitive + description: + name: win32_registry + sha256: "21ec76dfc731550fd3e2ce7a33a9ea90b828fdf19a5c3bcf556fa992cfa99852" + url: "https://pub.dev" + source: hosted + version: "1.1.5" + window_manager: + dependency: "direct main" + description: + name: window_manager + sha256: "732896e1416297c63c9e3fb95aea72d0355f61390263982a47fd519169dc5059" + url: "https://pub.dev" + source: hosted + version: "0.4.3" + window_to_front: + dependency: transitive + description: + name: window_to_front + sha256: "7aef379752b7190c10479e12b5fd7c0b9d92adc96817d9e96c59937929512aee" + url: "https://pub.dev" + source: hosted + version: "0.0.3" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + xml: + dependency: transitive + description: + name: xml + sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 + url: "https://pub.dev" + source: hosted + version: "6.5.0" + yaml: + dependency: transitive + description: + name: yaml + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce + url: "https://pub.dev" + source: hosted + version: "3.1.3" +sdks: + dart: ">=3.6.0 <4.0.0" + flutter: ">=3.27.0" diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100644 index 0000000..97e0dfb --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,29 @@ +name: appwrite_flutter_starter_kit +description: "Appwrite StarterKit in Flutter" +publish_to: 'none' + +version: 1.0.0 + +environment: + sdk: ^3.6.0 + +dependencies: + flutter: + sdk: flutter + + intl: ^0.20.2 + appwrite: ^14.0.0 + url_launcher: ^6.3.1 + window_manager: ^0.4.3 + cupertino_icons: ^1.0.8 + +dependency_overrides: + flutter_web_auth_2: 4.1.0 + +dev_dependencies: + flutter_lints: ^5.0.0 + flutter_native_splash: ^2.4.4 + flutter_launcher_icons: ^0.14.3 + +flutter: + uses-material-design: true \ No newline at end of file diff --git a/web/favicon.png b/web/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..77222aa9d61503e0ceec516983484776e31ff01a GIT binary patch literal 399 zcmV;A0dW3_P)Gwp2r(wp3vmKxZUnK=Xd|-et1+>$w8i6ihl-J-sFz}eMv!h58a4D{0_=W zke(JKV1i`RG60%;(!0I4ZOca9-)0`u!= zV>Qxjegm*BV|mw}4|ZYqkfXY=GNO t@uth%pR!n|Z$M$bdmEqh&!6cRdIhPTY}xj$#!UbK002ovPDHLkV1iYKsfPdn literal 0 HcmV?d00001 diff --git a/web/icons/Icon-192.png b/web/icons/Icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..d7dbb7ee45b001867f323d82b0adcb41b49d50a4 GIT binary patch literal 5523 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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..1e32e96e61aca0938b153bb4b67115814cb00e50 GIT binary patch literal 23501 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 NzjO_*lxX9_{ts`YD4YNQ 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..d7dbb7ee45b001867f323d82b0adcb41b49d50a4 GIT binary patch literal 5523 zcmc(D=Tp-Su=Ot?fdGagy(1u4DAJpd00JUaQ4yjPmGaPgF9}6JnhF9+3nEQQB7`DR z0+FK9qy`8bG18?=39t8Gct70xVRvVC&dkp2&g`6X5-rRO;Y|EY006*^Zr-@_uM+ko%iKIzwZg3&&;Fe9lxJs$v|B!BjsQhl+`Iuqk0$^S96JbRD-LFB zHh_o*r@)X~{OssCWig=L?SBoh@YsvNygU}CN0t&pmvk6b+&(OgOF@-yxryN5E}J-x z^ZF2c8@`>s@W=9YO1PW>N+esZ>b#?^WriZ|dwE0~OV6?T1+yE#aYyRN*j&=~xf)*v z7t($EQ7hsKoS20|o4&?YO<_K`+B?fwSTaK}As$BZ7B*mlI}71*jH?xkzbiv{1>NB3 zwX*7XP<)+=*w=Vy;ohtCpO)tmfc-D2yPvcSTvaxpS2556I%Whz)ya8s4V>J{Tvnlo z=tjK#zD~1weGnF+V6Ov#d@C@0t4der0Ua&Y8a#u|k@GF+!oXS@o3aTeeSbcMcux8 z7jt+pU|Z5=zHS3H48&*@i;VEmp+Q>cg?Ch&zj2=)ihGF(!o<)gFSBI`k2PJo!UqLv z(dGy`6)(kSUEi~62FdHo4Gwnr0_T+BaoYLzu19w`6N^gB+7NxV^r5Z_-n$LheqmU^ z3?p)YB(D51_y)|h%MSE_uD)xhK~5(sQbZ}F-g>w;qV5uOl8}6khD>fT8jqnK)QZ;4 zWyo*qS0D?*=|h)I%Z3?{k9;+@g1T>v%jvqDr!f-wYxa8Z4k>x`p<%-KPeZ&BA=Zbr zI!mvOPBf~LlsRuCIT^6k?O}~X_zLq!cvg-{d%f6{0z_7Hqa`cQ2C+9ZvR%Z@0HH^w zgB2qDICz-zWW9m`Cua}!K%dlP2detsdp7X!+>r~Tw=ZI@U?66J4>a!-V(#^7@KPj9 zH0o1r1@~@u19G4h8h#Iy(Qxg1E*4#Mia~~ajLwwVMGW?K5-W?bJLa)X^I~P<8v4dp z{_w7+uQ7`zoE$3oF;d5Iz|Q?x@yPGZ=zC0z+p$D?1dVR+I0?Nf7uyt`ZO!u49dBME z0~~J!jiH4jxRe5~SXhb31Pr+zhCPlWDo*U@VLx|A&sd`=9^&ZyydwMDHF&E*Ak;o3 zYQhH67S590a@WxQN2P@3vo@)dPvpFBy4ms~?eFecG^C)9_KlX0uNx=80>#6?c(>Vi zg48-|teqCCdlh)HPJv#RPdSn~iWaIM@biP~pm{gIY^6KxTh1QeXdEPt0^`MV!PGyD zSSiVD!QA^YHJU4%a7}>>PE39{-R?wI&$OS+VC%zuXvkATAg~sNVrcpmGFVVTSA}}J z`Pb=$TT`Is$G{{(*w~-y0Aq(0ZfqyVo0$LnF#A<~dOTueGD?|Y%*)`KuhIxfyijdt z#E<+_fEnpJaObL_*UpmbEV==Z28PLf-}PjYQR78$;RCkvPD zzX{6IPIZ#7oMb##drF#^>M}PrtlLF$FL{?q)WoGI%nl;iujFa=4@G)Dmt+c~?KSkA zZaDd!T~FqCZwbsdy{4&g?e=nVOze#g58pkE^ch=yH^5GzDfzNK66phk6GbDyFx|y7 zdwFVmmWhHuVnwMDmGB~ynDGhwBTBwqL8~zVph&iWK#d&UGgXicDy#7XVT0{r2QXnz`ZtQHaVr$r9peiJP&UsVYM*+j|4_9iPqLlY`L6`I ziFCfXKw&)JI2{?Ax_O)>s?{`k;>VP@q9cFj!*bPYb$r8msoOFJ7wWy0O{R-2sprfObYMr>N@7Z?mltGDo;8s6=V!>6C?S%%Y{WuNR%pgr` z#)IUvbQzqMmO~fjV*-j_FQlFm)b~hk_J_-G+a3{QV-_X~?SkeOEDP1r5>c|P+RREG z`KkRYZ;D>Lb~~|l3l!ts(eO=6{^oDr`v^oXAv_%2?U-^3xt)-LTR*U_8&2+@Rfn(C z6k2reB}aCplK*Oj@Vlkw&#L^Oh5yGm!We<(I6^)O0wpj{+2yiqNw@20-$Sd#_X~P} zyp33FpDcbi6V0|{Tt>be7E}l-j{=3#r{;$WUtuVPC?8$`gxZTiX@Of!h zQvSEH&&!Y~;l0r+acs4=lnuS|?lA&l;D9O+KmU5a^<+U|E_YGqpcRm|%WD3WG@Fza zDk423!#6r-`z9Ak;Y7njTNFheG|{`<%XDv0iR@YX_1iE4nWJSP&COK;`i&AruR)b4Phf7UI)5C5`I49$rGV7~yC&}J z&y+^`^w2r?CHIqQ=GEaOCZgt^3paTEp`Wy>4F<(N=ksn!Ev-IoHn>{qU@J zV(3G>@oB>{cq&lh*U{4_Q>`4lgB+h`DfY<-Z~ML+OZa!Wyz1WR!oSVv_qpJcnTws+ zuYTBS!Te9bXcQPGVBdF}IKl`hP-P5aM;aNP|u3|qc5%EmV^{U-u)b&PM* zV&~Q2Ci`a6m3mA`FXl1msSDpyHqe1kJM8%WQlcb8Ww&aou===OJt>J};`#H1h=G#F zi|5yEbWX=#V;OACy7YS&DrOvQOq?ozHvN0+s)75yPqKYjX`i;*_kWiZ;o)4)vPGNB zI(ZbHmCgdg(vB~QLR$he#t?5RV`}azH3yZ5`Z|KU@52VaMOS(ALg4%$MIVuHDz~0?X{5Vk?6%S$4O|r@n4BNjx z(tQ#ea#?=CUHsXRXoR_%W7ewJ28^g}qWwZ+gQ22>Eea=V;S9famKm4wh~L#p@N=Ih zj40X0ju~^m7P9kEHj2DyN2eU_o$=qBlAi-J-o1@OXaO+Z^O?-OCg);yWU`mDW%4?; z07`OT*F06v2*|Fw)@ce5v{yI5$+3A-ON_i1hT4Nzpfs z{@iK1wVEC0ES)@mf}&&QzrleKWI`Y1y_yzs{<6Xf)${gi>$l@)`zitMPt01p*2@6j zl6sVnj51{c*LVR4Q&jO{F7@Tw6h^~i^^TB7q@($@&RV{JOF>q>D&+&1+XxX=h<$n4 z^C%esC)Ibq=H*+BqRC;Mia=?qd!nT%F!8P;@Noud^?n-|H^OEUP~Ze1$2-*_ zv4oV0A#KnSN6^tt`adSXg{GnyRL;kk4wj=%z9SRH`2xV*2FHA=&&n0Zy(suWy3d7i z?hVj!bE)4ZkICWevZ4VgBKb~RxjAI;42eJy-?>xd4kTsF<$nyV_x>5h|HtSCk?J7u?it`X?k;h+al z!7+n|h2hnShb9-J_K|8Tyc>J7CDPMU@26JtYnunHUfrUw5k3D(SM^?CcYp75i6~4* z@Z@lrVJcHhb1O466WTu)=P`;6DY!Upcv(+P3_W;gQ-@xma1%o5EclBQV`kGn515{D zu2e1#X&%LwQkWhePMgg_6b zR;RSy)VbTMkakP?EW-K41S}?7swg;^x zoPTk<4x2R-*R)K*Yu;dju+@9NFLpz6Xe%*HCjL=n{C5u4OcAFuarD4=&hCs_&Xc$> z&=E<%A_@VaPHGD&cR27#r3m9z-S@Q8f10Oz8v+T!(yEc80-q&j(hk4^4bj5Ej4K$C zPj=#h``6xO%|c5eAF~W_EP5$;G7@ED%vKl{f&qpv3%2R2=|8?BaZ%^a{q|7#^6;(o znthUgSnym;9X7rT9hS(@p`{l>Ob?S+5p9=2DvXR@50BxS}I!~Ya zBHf=XgHhVhH8S6xxhbjZQ9)_0pQmqtF_6I0bDzY3nL%YIdrcYKU4^v|6x`TIEa3IZ zxEk+Bz8z`IMJ?$@r)9q7WHI|~7V}4(69`(Y_H+BRoDX!s%lHGYQyVz?OpO=t$%8WA z47ezVyuL+-poq`v1i?H1V?-b9fDSW!V^D8Ej`NL@Gu7BF9RU)|@E3Tm< zG&M|kxH)={XODU!NVD#q#PD#o#;-a0byT@~qksf4tm{&zlbi*$(y)b{^$GnxI_33h zfKy36_AOUTu*#egl=i04HD~ylc1AP(KTc67_?+-r4iMIf0bJ)^5)*27hxEqbJT|aE z10;E%$1^!#sx#Em8+X74ZMhXRDD`D6Sz}v0`WTE{I=hc(9ei(CISDAq`IOR>?ask) zR{WzIsbgMEHitOOR9p*;R7;_U?8%+M-kzy)2)yt`&Wqm60^DUycFr$tG|{)$9pprNSFiXw zB1GRm_h$qGxnXGGJS^>)f6!c5xvL=VhWrJeAt_+(qsZaJPpqA`Tc+;iTWLHL(L6Ac z_o5Sf_@+sE=}wN7NjUl`LUaxBn+w=>ie8l)xovQCDq(qD57P_jh1+4Emt6c?Aq-CnFAgAp#U*N}|$wA3LB{N@4J0#fbSlbauGLaD81 zir~5HLWvx(unPiUq-`N|ld+n&WJ+*IXy7erQ7x{?OsuP8{A((}CL3QFSgZ<>yt`!M{?``PufV+&>*}C*i->G@7)CAA|8^CseL#kWEyX{FD+i zWOJvMKn)jD7g)c$IJ7SyBPFbzNF2A^-?Wcl?7yMpv`SP{w1jT zF~Ld?^K@xhm1z45&M{ z$}l0!@U(b8*!oEn&$jn_=MS(sB>os`thY)sQ0cgGCRfAm(#V>cS1bxvG@Jt2B@R 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..1e32e96e61aca0938b153bb4b67115814cb00e50 GIT binary patch literal 23501 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 NzjO_*lxX9_{ts`YD4YNQ literal 0 HcmV?d00001 diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..f71fbe5 --- /dev/null +++ b/web/index.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + AppwriteStarterKit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/manifest.json b/web/manifest.json new file mode 100644 index 0000000..19a2dc5 --- /dev/null +++ b/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "AppwriteStarterKit", + "short_name": "AppwriteStarterKit", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "Appwrite StarterKit in Flutter.", + "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" + } + ] +} \ No newline at end of file diff --git a/web/splash/img/branding-1x.png b/web/splash/img/branding-1x.png new file mode 100644 index 0000000000000000000000000000000000000000..db3883c0a7c523a85fa15636b092f633d0c48f25 GIT binary patch literal 5370 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 literal 0 HcmV?d00001 diff --git a/web/splash/img/branding-3x.png b/web/splash/img/branding-3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6c2b46e3eceea99b6b8a97dbd75f2f2e4a38a2a5 GIT binary patch literal 13059 zcmY*=byQo=^LBtD#oeJ0DDLhQ2yVsQ-JRmnBEgFnFHoQacY+spS}5)s+_gaYrJwKn z&wEZza?iP&J3BkGvop^#H|D*XJQg}RIsgE`Qd9tG0sx5m@M~u@6!>>D{vQ%GDms>fuHnN*OE)R&jYsk23He#M|B{KFcMl@h! z*CI|`z?MxU@a*^R9xG;&&$zK$bGKC(>Bjjgkg+$Fvw1#o_WU;}RH_-fC-JYEt3e*y z*JJDW64LtH2TAi>gt(xlx8GP_Fr4wpa;(7(u|@H{3+MK$DC)Scq;UIPw5)WRQj{|Z3AFW6dq^P!6pAJ9K&|( z-OqKekS6&{CS^oAYD^`92A zQ>B|>(u=Ay1In0l75+&CRsA05*`f+Ydh(Lce~4D5hGa_}?}9sb-6XtN?sN2Teg_J{ zhrN=jGz;RbMKKg~)F|Dqx)j1K!m%9lgil5)jCq%KbCBW7eT@#*O!Hd|lW1 zN)J!>;yShV`7Xp__vTTQ)VY(j?kcy1#J4%~V|HOzMB5CC-2M^h)k8kBtRc zKQHKvr67i-b`+m+*gW0W1>i)%m7)O;4*4KeD66BipV|BSeQolRD0qni6{Pj8}3Fy#d}XUG{8QE20Hou@7E!-AA*ayC#5z5xAyWM_&@GHmk9tQvd) zM?t_}0r!`?%5)M~3EvU)Fe|U_PLBTEi)( z=dT}%wymUNCD{V?M^DaMZM&IVtI(4aKe_k`CNE#?>7D#b2s757X-k+8BoAnrKdc@t)AB$D+-Xg<9RmuEF6@Y`RBCpf=>;CioFC9;2mn-Nlt0e{x}Cz42N8 zHgBYxhA!^kG}GOMD(QHJ(r*ECaq)F-P*Ij%RZ24b^xCfjp{CK)AF)*R_=Lf5pTD&J zXYC3+^hhm!5hf9>^0a)lvhtr0sbqoLJ+JC>F*3a|Ixz#?A>M|xR9UzReu{Paic=oe z<}pt-?|KY%@hydM4H6+FyPtXf`QqQtUVk%Nf+uGUX*!-JJ0Cg3pEh&c<^q}EQb01A z)i;2sWUu2+bd)jXv5%?v?P$;JJhk+nd28{hB&B((oqts|Jz=&#uG8kR!S{_Nb9mUL zMnW`c)j$uhW2iZtpA$GL(n&QLB|XH+LX`3CUJX8_6%a=ztLxIYgz9fAUBqDenVi~Jm>kuId4A612ulUt`JL8nZMau(b72iKsq98g+AY9S%4BSGEvUuNG z{lj3Uhg`v1EY{k17H~}V{2Yv$Zbl`kdzK6rgPZWlVrK@@W+NDOW0bYBCr$fO7L{Bk z8~CZAIec~r8cHYNdP_tQNNQzm{%=tQX|n}~wnd{6TG{2J(6Gqm{^s7%(K*`aAUS<4 zDaOE~!YIVMqN$zqlwXhgaj`A={Z9YCJ+-yel#~?NS9mArHrEbd!MH4;?c)PbOu)Qq z$mA?4)%xh^4Sw}NZb|9MLNWpUba30eNtGb}=Pjf&Y{aS!LYhoFvZk{Zv@{}uLz)=_ z2J}VW6ji)~>x;q%@KB$qV%a^JyoKIF!w@pCQ5NZ+R^4@<5V}|2aAq1%xR)Yrn_zy8 zrd49V4#4c~c?Y@be;-h(e^&V43MkHg&HjET1YXjg>%sq6gjqNLvbh2xBMVGIP?0Dg zqmT-_GaHUC(OYVDw702vsjNhV$0iY=FD8TNo%^6>SZmp2C&5ki1bdPeiTA(2xUj(H zX8u<6rFAmqM0oC%`m0c%j#5xp;rJJQ-*)cb@|l16C`#jyQ71}!=;sJWt4xq zN;x}c@YhC!q`t_MBf2XgkbX47s@bpd9KFh_i-GZ4eV95C;rq^Y>zvnNkhic}liDl# z-@lAqxoh`C9m3ehQEMPL z4-Z2{Cqcp>p+`|vjgLKB#+m>ydNG#C*;bSini_6nP)X5~(6@w&AfG*GR+Xa}v@h64 z&{6ER;MNpiKDx%a-fnHqF6Bq7trIxMS7o|LvWGbPocN{mMjQA`BxQ;OyJoM7OO-?7 zh0$ix!r)0Ni>1IbOVWVFpuXS^vOYLBmzR`X>N9u{jDLm+nrruOm@9@Xp~1pwX#@7p z^(!=43>a+~JN?9b?v%EF`G|WCQT?(b>kFBLZXdxYqjPeM9%U_53g43gYl!Pe>$sTG z{cx=OYPIWi4ST?L*RBQ8a@tvD)|V0>v5(-ynGnd8y&&++)zwv%6`dkGk3If35912g zztn*$to!)-of_`oY~P!|12ZA{Uc$bi_j`3$cc%nUyXO%9`iS)4#**zqSlQ6})pk&V z3KL;WL|>sizv`J(CHVNj^|!uuH&50bde$3Ilmm3lKgOAA{N^JRS(X*A1pY`tQ z(D82enc85Y{^wKV+5q_Mp35z@n@e&dqxMXt4YBBQ+m{-jh;OXwst$rk@2 zvANx(T${8l%Sfn3Lm~_F8KIowLJv)uf>pEKwLH8RU9WJcdoD?tW%gPrp-(Lrg3YNr z2@fhUDQz66Fyxs$iRvVj6#e>Mb=PWBc-+pBuh5vEz5+u5oM+C=XuZrF{EgGl!Nd9< zB-dGzvMZad9_!_+Inzi2gGH>^ms@wSUyoX2U#5qbGc zC0%Kzv$#J#Ub4y~%4urzkg<>$pYV|9WrIpep_VE7XEIEk+#DVsU8dBN9z7sYpjKby zw?~z!eo(DZ8!^13vcXRDNPk6ms)PTlC9uTF@Y+Y`dFfORs+Ubnb^Eim?KO8f1HPzd zCZ{@<@ItVruf#6pGF7gfEadeI#|kUBojX4#5$$paGZHZ$CiFJ7+;yy;{InAkBzwc_ z8AxkMf+zB%*B^Ewd=VAS|8x2RTqa}Gk1?|?|0I&hw*CM!dpdvWe7x1J_$-Eu+kJ8) zOrGwtd>YW9U9Wa;Y)tc07WT(4Xz0Ajsem%o=V9)XJ>PB5-UQK90&HprUvta!E&d3v zUUkqPnHjd(lEe2pR!NSA*KY^ERLBh*f;-0d_U4|wy!P&@jUVo*+8?uQ9pG{8ELoI7 ztorB=URH0+?55cVm=If*O6d|$*7Y~#Au9-Zu!3i%BB#+ng!E>H%X0I}LOq+hm@4Q5 zo|(EiuT?$|*NeSI9i`dp$7yk0mGHYcWE`4X@~cBtzAgL^frf>xnj|{vcK)fGT_u#z z?=F2WAjyhuX1ab`ak9>|0$0GzdUNCUWH~Nt{CBolNZRBq49FW&M=J^6}*+IFD*c&0-Xo2t$~Y7w`I#_!{r3=ArF3Wi}o~CyKDnx7;N#7m$K7!$u1lw4$%BkOCeXF0wT$=q6 zey?~)*Zbj@o|+Ce*-az}xzj7ovybyvCB~I^?8^nnwLz>BsfCA| zr(FRzsire*CdRHg{y4;TkGof^-$sy!%)~by48Tz~V;LteSV!yIp4@Gv1LSiXEo>UI zhYhZyhu&}(o{#^r8nxN^#i>}F6>zV~MVf71d4KCjK|bhgXdf>;?6f*X>Qw<*l0}MZ z!r=T!0rmU!eXf%x#3|FV?q0nq|AR1o%ud+)rC3DpUP49GOHdo!&>@z#d($5>AFT#@ z5Rs|R+wN!(Q*f7EumPcvADAe;2oQ2{ds66|-+`1j?`ABYqms>Ld$Lj2EHNMHacbgr zuBB-+o9a#sTMZit(X>6yR?v>l(${4@c*P8){HAf43p;7+1c4oW@ctu{Hi}q zHTlLm5=_b9PT8&9R8*$ebM;%7Ivg5svZR1*m~}%JQhd3q0X^NBDyO7l)}?EnSFIfN zLbOXKKYQtl(j;?COrFI_t;j z8F^td;UF>LtOhU@7&CI7En}<3HCI4>UP2CnX?yRtpjmtq)2JnyyJT(LoPe<5Vx^b@ zN7VRc!<{T4y-CJY(SXd!m>=PL(IU@3gQdfwRGk?+WM>-J+d7K!tufc-B3=*nCuu%x z0n(NMX_Jm>v-u+YSJec5D1fyMF|Inkw3+D?NBPDG$G`&76w zi$3H4xvPiXea#<}hc{eJzG!_W5 z#?wx=Na1RiJ06$uk0-T#A<)t3W)23Tsa*V(LdpoC<(fQn5GrZI}xy1AGzc=5I#SEpc#v*pQu8;tn zdaAxT+rdyR^b>Zj8f4&Z;t^ut{mdD2gc_FVlpeH^i?!btV(aq>X)RMnbKXbXmGr?d zilM_?6SC)9$CeK%$^KcNmLH2=^eUG%!Muk+0->kf(a%hKug_hGi;eY2gK38mBl79= z@X37+3Tx;2TZ73q_ytC!y{~rM#i5UL)52X+bh_rw6zkc7D_?adq)SJLKK}^5y4NlUiwy@w)=6NE{rW*$B# z(g()eM69qXvP1Y(@A4=qH2A8f-f+h+W~a5oVA1EFmYY{^oSTN_99`ef>epE8xQ)M- zk~9?w51alDC3nL2bMu>Cn$7g3ZFD!nN0+74`xxVSr$ArZPMrMX5aXWzf*^?z6~Vmc zppHDkS%|W=MR!xS?@QkOw0UqPg!{^?Ds?S95@-8xSxb(*>NiD)#{`Q1PACu5w zu1hx&GQHXJ)NC19zn>#e$8TH6F`$prrk{7e2MEpc;p_1K2}3$*G~${lvdA9bpCXBK zP{TH3BeWIg^)oUw3>3DTu4e;trA??ob!*MDORjgvwA6>T%dMofwFigsG3NZlW;<)S z&ii^sf2`xw9HF!ipCdX`o<+OCQ_RHFcr3b5p`1J))gQt+6PSbBRXBdL6yrFE2tvoD zkfz~zN0(J$eGV^q5qXK`Q;Vy?lFP3-^OC$?7y9rVqo(0=dDX2zy^EJ-QDoYT)2kki zcI3?~Pkipeb*rPLF&mg+Ozs#X+dQ2ZDO!(K)_6$(sc(xo@R*}L>D(CVV9YKzo)FWY zs0F@H8xM)oV*F@|;fH`Uuk0KwPp|cjrQN!p79#zg7AK-O;b3dal`FCW#%U3UgJEZ?d&{vGQLFYM*DG4%9c*gK%Vm#YR`0^-QI1a$>?ADbY3Ccf(2vh%}DP9T*#{bE5#UJ89U0VyljCwVzA%1v@zK2u|r z_olPHd2xrI+kx~XimMY7qJg%y9Eq)lU7eI@)y?|fam-7|v<}5%eIiR`QK_PIyf)p> z+j)6U{i}(svP&v)Bb{7b#f>Jq4M=EEoLd}|Wwjk%tE-9SQ=*1l)j!4!4wq{mwq`zW z;VxQag@n~x^Jvw)#TQ-1h5nAf3hNbu!v)znteqs-V_HT1rfofB4aq`D(d6OPKNLX@T#d#bA)sE)Uq-Gwy`V~rqhci4C zXG}Ql=Vs2`Z}WC%o&e$Pm+jp7K++?0fUT%@9Vtj?cQ-B|++E21t9JcdWLjSb#R|o? zBRB9z15{XekaYNP>!1Yx%%>u6R1>gJo|TpU7H_5K{rxe!PQpkv_+~(uL|N(;<5j^7 zOHUsD@*eRkRfKay-~x9oQ2MgSFr7IjmxBb@O55y+(KlRUPeZVV)RV{7FW+Er27Bde zWtx^@toXX`S0IuTk~zXy3VmL%Hh+e6V|sxnMilqaSf(7Qhf%Zhi-C}F;BMml7u%5* zl6O$&d^D6k?1<=#ukt9m0tK9uw;Qc3T!MCgseq!$J>SrI0hL|p_*w7_O@l}%?RDoN z+=y*styNX=vTlV0BMOLQg{=(iS#zg^LpxafX_1SJkEr{GAMhar1s}?-m)`F& zb^s|8#n_;63e9&mYWg&|VP)(XF9o^wyl3=CV<-sL9+zf|r~uL2lOZ+#lS`9$hm5}+ z7g%fxUao(1O9Tb&x_oqae@Cv7$Z>PgSmhwqEH+Plv zz054c2pjC}=>Zr3ZTzW{e+GA621{YCDC|`0ilQeaV{sD1o|kCn&?h&Vu^8M9AM@7G z?(u(y*LB||UGrW?O5Z8Vi89EZezij~j5_?VQw-T^H=#aX>p}eNVMIWI=&mhAT$+aI(okOS>beWVu7T?_D*yepGUW;`|`llaQ6CC-p3P zyG@NrP*lB6EZ7sVM8`SW5SVP#@!la2B_k-k*uijm9uW}2M{w81^{MtpW*pPvR!qRI zPniuSo6hWZ$c}kcpg+=BukTmVLYJan`_GrmPVR#SuF+l*+#W+z*<6R@Iuxv#QzSv5 zuL;qi7OHVnX;bQbH5eXpf)xk7BO#KubgyK;vN*~K=O6E4tg>#9qIO6%|Q0DjLXjjw-O z6T-iJNOjSgwWoso@yJnmQ39wSQ|+J**Z&QaV6IfI@9T5H0xFN56?g1S*y}P9qGM(% z>B^An1Jb8G*3-(&#Nmpd#)L;&0TKI#SSRha$|B$Z*V zp@F4~$r(NWh6Mk0p4cw3+nrvYn4Apx>cDNZEv-$R$z4mDdXxYjemb{KdLRm5&@CmG zSYv=L(`6F}_7~GaW4LNro;y1DYQ2w-)%gRIGiSrFHX^SGK>nXPP1(8omAc?((<<1- z8~1rw#^7Rw1TGXwS$pF5lDr%D`yrGI02^x-N&O*j(y%<>oxpKG<|>x3Ufap-0|C~L z%)i+0N|*4KPXt2L7*ba=Y+i;dQ{D$1-LDKL;nLR$?0P~?23Z>?!LPb=L5v+CQ2mu9 zPUw~cDI6ax$J&g%A~BfV3sCp%ZS`829%4mA81NPJ!}*MTgD{-Fwfr?d;oA&Pn`*Lx z^|Iq&iT(R7hg1e4cCg&d?LhE^E)w2J)TV@?+9gtQu=xk$%1g^iaALIsngQ`}6zb5E z0?{zc>y3Xfwxx?ubi$MCDuZ;ySs;5W8YXtN9@3Hh6^DAdr65y1RJ1EP+*QsmmYf5{ zc-(s0hu|PDD~lW+d()RtdrVa8-Yb+F#j)dMYtMc^Ir;Ph+_tn1>x(#iWz~FL%0jcG zrB)LVmeH5UcyFt&_K^}rOS^Wyw z7V?5;U|6p|sB8VBKFzn?E3K%KVI!s(KkkITGd;U>$cEMX84X9b@Tp?(>!v2JF+F~e zg{||Bz2&@mr*0!kzoc{6`_F_^Z$-N{Ygflk5|88N&h05dE`BC}26CTU$5HWAfU^z` zaSkW7pZbg?PvL&x-qq5a(qJB84wSVceXc6KwgSW|>Maz0oYa9{>lw z*9a&_<98Dod{qPT?7aCFABL}HwnI;Mg;#99mt09I+)e>=r9QSKD2gwmLGz~GA_ElQ z(kh*;DndU~%5f3T1Ypv&Sbjj-e4A3?YYcS<;=j)2RdwZ6v1bfoE^~`us=+lwI+~PG zsg&Gf#Iq(L^>Z>0=iTgR>lLPZX0;m*kRb1Rv*8kZ46C;=H3T#Hoa8P;eLqi@%e?xP z>7IV8VLXj%A`H^6`kq(2=;fk1^>=TgP5^q14mqY1AihG$D9N>uI(-K zdz1@c+#tTxo@q!#2Of$i`o!+UHFqf;=6>3V>ml(D+@y6|sI!t^Udg={_u&5x|8>mC zDpxP+{*IouXxi9s;6!m@AXog08`OB>Ar1N!1v}88$2(0WwOxv;UNREEs^ousi@2aX zZPvr3i*1HaK>(769Fq+$5aC2^ix45Po+tHL%~i|f!;Ao1coo}ONl4o@0lx_6_#<3N z3bt?9lFiN($dTW}#02d+2|DF;Wb>7)IW&=Hd4ia6f9N17YgA4KG!39dN-Jg^17_Hk z0`?Hj`9WEqsb|hwWtLONb~ALSk_N6H*~d=bc}(PIY`Sk~ms@u_pZRszVKHNs+o6Tc z7P8}Os1qVL)FaEm@xml{k~m($4IR<*N9j#@RnFPPi;Du^$Yr3@Oc=})4VYhfM>;25 zUr@!dygsf9_}Yo*bpr4U>}>ps`=i-?7ij$a1X0@aLBO+?aci#bENA9|qp_M-%1xY` z^(YxOi=4d(`t2w0`Bm(_>Z-h}t}`LhEx&tTYm|SmK-%O5eDS5>Yjf39awXL-9=u-n zabjPi(2qYbag=Uk5I*jMetXCXyrc47uus2_jX%a70FqcXGIo$nj?&{-sq?!wz?6Kx zoUNJSWv7*^81-;@P8U2L_N*z;Up`yb+0%uu_|PYaHWJl;C+F%F zJ-t=KvAbs>2R**Uq`YVb^J5|-mVpqB*I1ri9LO3Jult5W>FK72_w;x;=lXi2t*8D3 ztGyQ4zR+%2cZmS)lEV@q_bbG1D*XJBr<}xbU3+_QEyTg~^Ek~lRADh(g(@L-IgrD0 zqRTR8GJU{tZr+@L^ID)Fg1K9=gF*V>R128fYw}z6MQk9jLA;Lp`|b1i@V-S1!{}P# zD7^gCN831}9~7n#c=`JB{Bs>g5M)W`dw2BYC1xhST7ZRAL}%l>>ShHbPbeif*~k9c zp_?CfG~7km-TTbK1+rDsAZ%*XcJu`Z*NmeN^|ud0uWfUrxFt19l45 zgJ#OSIL6*Vct4tLNCA>zwISYQC=`N86B?j)wR@$&!7_9ER1h4 ztmKrP^GC*zc!576ZoXz28z&YyCBANk3|&@xhHZ_>U4h>Bmc}zH@^IMm882oTN!EfO zS9v#dy*pNZo|jKmofzHI0atK9oJh<6WAwdUb&|6UuzfbeOrL6svf9pO6HcEArBNG^ z=)67(H-De?3J}v}E2t1DUD#P_aJ?HzjvZZaxh=+zA0ub=B3w{Fb-8VwP5fvT{rbg? zGi0PqL0wr{`SJR?5k{Tpc)G}vt;JgB>$AolNRtD2eIlhZyPUC?2Y8n>F~wrSv}4^d z+MT)}fR7$|COEML+)f&cLZx8Qi8#+(TwLTKdKE64Hxs?s2V2?A}*N6w3xn9XPo; zqJJB+dAvD@_4Ha(R91%Md5xVS$~l&}kv@3yL6%Kv5a6Zv%j1}x6y)8z2o;-VMgejf ztDl@dx9xWQ#qyQ7ZA&0WS+0}*AIkgH1O!`R?LN>`V&|H=vb9*B;;1COAyqm4Q?(9N zFjM3I1P_|4a9kXxo`ICa^sVHSdTU%!Z6;fs`03Ygx5*&jgQbKUVil-hB)0bF&&?6EFH-tPs-~|_f{%UnZA#zSGpJ5qX!}Pk@jjg8c|L*@|G~W# z=XLhN#gN0VpG@TQcCbQj7ww8T3r|k)+)OduT^CI|(v&U>jX;F7vPOfxT3Yvokay*N zi76=$e5p6ihpN8|JfYX7K6o_gI7Tc6Fqy((*BULQA`Nk5^E{Kysa~>K6BdKMiHQ+5 zt8)Zk5KV99Zv8{55hh!592{=vM!fV#bNvbDj$~AH9rzxsrp!Vz@!!ld!?9;;V6s>g z8d6F-3f?BT)WOm-^rs7*)8p+4DmzAAhXTAu8M?b7#Oh{iS$K&&m!Y<^98Q;3TEf9?2S3UCD zCsHhj+;$_}7Z9UAWMjG1p+mP5_fswQ_8 zaWA4Yh+-l#t5}R%G~umvc<}819#q!MMZcXQ}2}JW$kQeesR+p&nvyd z6XeCR>eKe0?m<(JgFxs28^ijj=5TQSxCKH^!Ayvbnj7GnGLjd_9+xz(&U7@_3aNEh z=VSL}fmf)$0qXsuDl>eWx2M&z{cBv8*eShKbR9YB4u;pvs&O}y<0`_FvpIU?FgOg) zPOjFBN}%nC9tW%!1QF%0o*=Mn)i46iDR^M7QFe1wFp_pkRe!+?4GM9`&3xoDLncDU zRR8?gfi20A#DwouW197VdQDmt927dm!Pxwc4>E;41SKgqH7Rjs++8E{v4qUQc)(ewiOKW7QNO6Ue8ke9#smlv;PjjT_SgHYU}ph8c}uXtag=HP!f41o>mJi2s4xA5H>` z6wwJsmC)5y)$DNiu_W7{?1^#F2R>I-iN1k*ib|D#Db%>Sbj=?;iWauo6-opd+2(Nx zGVeW5me+9abuAE@X=FJG!nJvfW$`)S_iv}`;+>eN!oJ-xsh1`2#X|`YTN6Pymwf63 z=PS_vVY7l}$AyC$Wp+LY|5h01E?v?0uC_PlPrynte5pR;Chni7Xuq5Kqv7LIFnBkZ zrnD!lgS;v3d0Aqh(r#k_s|cQ6!+5pPxwvSIT{o>0{KKZ|uq~gEWe3azsT4c1DT8nq ziiKu=F4n&{p#iu(evWJWLJg=WgF=0J`IL)GG-WTuFnX#HnbPOj!9f(jWft9lx-V;! z!oC?w>5rOMAILSxjP=WBku0nc^*iB;bQ4a=aAf9G`Zb47ATkx9bM%tR;j-$u-hqn$ z$bc7gIj*9u4ZSMePqj)7Aj~QT!6PH~IEQfTO#<-L{EPx!smpZpZRRR+SW-U`V+G%T zD;@Am5!OHOgzkF=zLox{VStlRI)H+pkF5dSki|=}*fE=K+^1%|A^>2A2$S5>^zOsS zWl2s#TNjvcR3Dx=A-d0iWk8vY&gB#p`&Z?X=`5#t38+O_waCb;zZdrk{(9?ZTy`bP zui&WW*7*2uE4UIcDs+7gSwAZ3IyS<>dZWMg27mcnh{@%EDlPXPz~Sv=S9(v?N`Xv- z#F7=R{m`5{lq9@Dbd{ler0!whVWq zNL36BCM%TJDb|c*0tlIuNu+|1{gkh{l2@4DY6|ENENIF{MiT;TPmaG#!J_ARMlr2? zjb|(+%`t7n+T$Ehd*CNS>R&50Jve2h@%0HHeD`i73cW=Gy$wNT-}5-Y^o8`7Mx3ECC{#w zYAY)IAa=g*)Q~&<4B)?*xNiXPK3SBh1W8^WhPEr>Y514x=XT0+SgIl&eN1LX9ZGtW zzwBeLYoVe$1Ez6xKUpdp%Faohh!0N~r4I#|Cr#*$2~2(=erJseN~8^I%=ltQ)B6*S zr{DixdWFp!mGo!fjSm*h1oR)J%IfL6l#j>ET)Rvw?S`6&3X@{cDu; z?#exS0YYG=j?N-MHu1AdG0Xs|2M#js&b)PI3=rsijD2qyx{{Ml?9tA}n|h#5ZzwCt zcpxBh`U%EiHW}Z)Jwgd^5<-fr>#_GqU&LJ(wJ^46(CUgr!ApPL*D6r%P=~@*OT#Yx z$&`?LxOt*Z(IY^_#0vot(7r$E?kX45Y)YB=nJ)A3xEJ14lhD&Kp43GVR^Vn$$67Ge z**v}ejm3duTrISQb?y?QdwCz1BJLjs?Yig*D{&XPwDX~qyFHv$FR(C+VNq&vJdcA4 zUj@P`;%=&aYo@u2{7;gB?eskSONs*9KNR_qf3z>oG- zKxFTy1gXN$Z)O{7uzeCk1urT)CRJZ}Xl%@b zVISPOtU?+>KYX>+NJ*9zf-N zW$^Nlotj0QHsmT?$5bEpxs@z+=U5hm`x7vy(;MC(nSiL@#ZN+Vq6);bxtmTg>H88a zGgE}+U|x5q#6hio;=9B5^g%aoC9TE50ZFC@F{F0e>3cetI~2 zjH5c!u^Y)8u#B)_l_Mzs2>4nkLdy2OQ?I?n8LA9cy$ui=QQ<1hZ4dC-V=Q$Lh{v^N z;N>rZ)VaZFOb@^l-7lq|pJoVUr~RSMfA>ez)&Guu+UCRn#zuJ0V?G&kz_K%$NUiNg zZSFh?vFPNn@+m&UgYH8ryU`W_AU!|RXX?Q?@sRTV(Wtrq1;a}BF4HTZOucZz8%}*> zIZQr-26ImIC+;_K*2PTMW<&8vB^5WNi-=Vk((<#Q_eg^aIN3QLt`WKP`l6(LL~}YD zOS!D!9)~9hKS%8F>S%ZA`#a%e3W)AkAKb2rfIUO4+lN`QH@R6Oe9n=XToD6F5IJ?H z?2x(L&j;{Gc;2shR{DkpB@s!#8eYntMpAK_WdFn8e7NN`x*qs8#Y+v^G>LGiJp)}m z2xi!9hzGM&PWKzxZrh^E35po6KHJNkSi`cHWM8dQQFC`M7L?|)^|IUAma`E29Iy_;y`o6zq|-6_y)H}X5dUNzphOw-i5aiC8=6j z*<55-I_@=mkF8$#)f;JS$bueKQ!}N$i+A4)kUS9Z@^&?gv`IA?{^qAc(eU8MLWM!i(PRm>>(x*@CDNN3le?;yOC;!U*XKQNrMo(2$?cuZD$SQ#tFXqIYwAaao$> z*9gEzeXwF|hMZ3a=8$&Hi%~YQi%jLX`E56`D=%!}bDhz@UR4@2 zNqCdF<<-cUI(%;zhtAbIb@Qxa)^GNY{k!>*rla2n=}1~atK;)jE_F7wq>In>4Nrd* zAt&8`_s`Miu_^~%4JH+^e7NO(M`_NX^Yvd>?JFrhk$iIfbb@#+J(jw}X76M1?BiqP ze%BQ5|D;;dZ9~JGdf+&!Tg;n_b@-f8)6o9+ii6yMAktB3YT_G7uKC4Ka-lQixmKX< zf6v5K`yLlQ0C~oYtRDSk4Wps)#iAEo#?t_2iG$Lk{~J~L6UjwA?&XO8UMLQJ}^*n;U9H~#;g z1cDP9apAu#XoEvb|9BA~iHhh9QoN9Nz~6;v<{-cNH>&?+uuVWMs&tUN%7XEq*6@ye zf!hDA9627(|GP4d!u;3y4gX})BK_-Sr$Otr8SVl8H_n~x{~LCWO3R#*u?Y7(*|Vr^ rPQVx0SLH{jwF2We1g|_EFJ2HnF4HZK=6U~n#RZ@!s|Ko;Hvjm4vQIo$ literal 0 HcmV?d00001 diff --git a/web/splash/img/branding-4x.png b/web/splash/img/branding-4x.png new file mode 100644 index 0000000000000000000000000000000000000000..8d8dc78c7bf0e9d070d12c3db28d5020f84a34f8 GIT binary patch literal 13483 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 literal 0 HcmV?d00001 diff --git a/web/splash/img/branding-dark-1x.png b/web/splash/img/branding-dark-1x.png new file mode 100644 index 0000000000000000000000000000000000000000..8dc85cd927fa5efa1f04a54420bd39f97ebf3f9e GIT binary patch literal 5612 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Ù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≶k-yzzZ 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 RLRFlgDJy8mSA#4*{~!BWCg=bF literal 0 HcmV?d00001 diff --git a/web/splash/img/branding-dark-3x.png b/web/splash/img/branding-dark-3x.png new file mode 100644 index 0000000000000000000000000000000000000000..93b39191633d9a1bfaf82b162b975dbf3d69d44d GIT binary patch literal 12767 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 literal 0 HcmV?d00001 diff --git a/web/splash/img/dark-2x.png b/web/splash/img/dark-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f871fccc9fea9fe724efda3456aff79021671fdc GIT binary patch literal 5891 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 Z{}1;t7eNIRJC^_e002ovPDHLkV1g!!o^k*H literal 0 HcmV?d00001 diff --git a/web/splash/img/dark-3x.png b/web/splash/img/dark-3x.png new file mode 100644 index 0000000000000000000000000000000000000000..1e370712671af3d717b12443ed757514c0c68f9f GIT binary patch literal 8700 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 T?icu02cV~ItW^cEfAxO=(mb{M literal 0 HcmV?d00001 diff --git a/web/splash/img/light-1x.png b/web/splash/img/light-1x.png new file mode 100644 index 0000000000000000000000000000000000000000..be55b6d54dd445fc2269311a54654b93bfb88008 GIT binary patch literal 3457 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 literal 0 HcmV?d00001 diff --git a/web/splash/img/light-2x.png b/web/splash/img/light-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f871fccc9fea9fe724efda3456aff79021671fdc GIT binary patch literal 5891 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 Z{}1;t7eNIRJC^_e002ovPDHLkV1g!!o^k*H literal 0 HcmV?d00001 diff --git a/web/splash/img/light-3x.png b/web/splash/img/light-3x.png new file mode 100644 index 0000000000000000000000000000000000000000..1e370712671af3d717b12443ed757514c0c68f9f GIT binary patch literal 8700 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 T?icu02cV~ItW^cEfAxO=(mb{M literal 0 HcmV?d00001 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..238d0f6 --- /dev/null +++ b/windows/CMakeLists.txt @@ -0,0 +1,108 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.14) +project(AppwriteStarterKit 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 "io.appwrite.flutter") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(VERSION 3.14...3.25) + +# 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() + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/windows/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# 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..903f489 --- /dev/null +++ b/windows/flutter/CMakeLists.txt @@ -0,0 +1,109 @@ +# 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") + +# Set fallback configurations for older versions of the flutter tool. +if (NOT DEFINED FLUTTER_TARGET_PLATFORM) + set(FLUTTER_TARGET_PLATFORM "windows-x64") +endif() + +# === 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" + ${FLUTTER_TARGET_PLATFORM} $ + 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..4423f73 --- /dev/null +++ b/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,26 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include +#include +#include +#include +#include + +void RegisterPlugins(flutter::PluginRegistry* registry) { + DesktopWebviewWindowPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("DesktopWebviewWindowPlugin")); + ScreenRetrieverWindowsPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("ScreenRetrieverWindowsPluginCApi")); + UrlLauncherWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("UrlLauncherWindows")); + WindowManagerPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("WindowManagerPlugin")); + WindowToFrontPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("WindowToFrontPlugin")); +} 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..61245f1 --- /dev/null +++ b/windows/flutter/generated_plugins.cmake @@ -0,0 +1,28 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + desktop_webview_window + screen_retriever_windows + url_launcher_windows + window_manager + window_to_front +) + +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..394917c --- /dev/null +++ b/windows/runner/CMakeLists.txt @@ -0,0 +1,40 @@ +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_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib") +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..03014fb --- /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", "io.appwrite" "\0" + VALUE "FileDescription", "AppwriteStarterKit" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "AppwriteStarterKit" "\0" + VALUE "LegalCopyright", "Copyright (C) 2025 io.appwrite. All rights reserved." "\0" + VALUE "OriginalFilename", "AppwriteStarterKit.exe" "\0" + VALUE "ProductName", "AppwriteStarterKit" "\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..955ee30 --- /dev/null +++ b/windows/runner/flutter_window.cpp @@ -0,0 +1,71 @@ +#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()); + + flutter_controller_->engine()->SetNextFrameCallback([&]() { + this->Show(); + }); + + // Flutter can complete the first frame before the "show window" callback is + // registered. The following call ensures a frame is pending to ensure the + // window is shown. It is a no-op if the first frame hasn't completed yet. + flutter_controller_->ForceRedraw(); + + 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..688d0d2 --- /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.Create(L"AppwriteStarterKit", 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..e6954c36ec99ffae6b7d1b888900ede94f0a6925 GIT binary patch literal 1073 zcmV-11kU>a0096205C8B0000W02>4V02TlM0EtjeM-2)Z3IG5A4M|8uQUCw|FaQ7m zFbD0A)t!(#i6AQZneY19!Ml$L;*}15AVN&6pe6XC0tgS5io`~{f-{5g^SJ5(+e>f zB4eKEjCYZ$N?0}r$;}CkNO}Z};kUccokyXz`GqmB8&A^X=14XDhW^?L2hPH_wMgZA zp^ykpz!-n&I{MW?$KyeaFtY8P=;!;;bqk4Yu7aFcU=v?T0cqo@6x6)srY5P3*I(w2zZD0qyB^j!l2UUwD9^NnRh% z8l%6jK`W*rbEl<6!j6FPzDd50hn_Obo`Ni$15-=ERGPMX1Np-F2KXnQdh5=k$dNA~ zFK2iNX!jF1R-0Pj%|c}RdSu>o=l`H5r%gf@%|tgWck-tB5BL3lb)Xj-kQL>Dqu@`# zc=l|4Y7Z9XBYU>_aePxrMkqhNKVb=YO}NEjR`y!5@Y$@|^D1k}tm-A~;;R9=SU z1#BfhH94i&4+%w1??8-`Jm9arw=d}x7XojO^Ebq8&(mlACDsgs7VXBLfL8?j`u#Nw z*%J?S&h{rTsxWn{Z*32z%|x>0@3a%v4ZZ|qWC1#14BUM%bn)sCTx6}#%u->( zE(2#xhI0)=pT`sE-c!hz>-;N`>E@SjKz&Q7A2k*^Ajra*sA*%nQ%aD6ykN$@4pTzcFGdRUJ;m$@m}9iE!Z}8DEve<= z{b0`d9X%@gOoH>0fM_oG=$vD=XmVCbZ@n zG~R;ykHY!rSGCH6%x>mPb;{3$C9{zwvmCu<{O)?}RHRJd_w5kc-KaeOaprfQ89q#8 ruh*kSmO#|V5{MdE0#PGNAZq*z0*ycOJAGBt00000NkvXXu0mjfH~{w_ literal 0 HcmV?d00001 diff --git a/windows/runner/runner.exe.manifest b/windows/runner/runner.exe.manifest new file mode 100644 index 0000000..153653e --- /dev/null +++ b/windows/runner/runner.exe.manifest @@ -0,0 +1,14 @@ + + + + + PerMonitorV2 + + + + + + + + + diff --git a/windows/runner/utils.cpp b/windows/runner/utils.cpp new file mode 100644 index 0000000..3a0b465 --- /dev/null +++ b/windows/runner/utils.cpp @@ -0,0 +1,65 @@ +#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(); + } + unsigned int target_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, nullptr, 0, nullptr, nullptr) + -1; // remove the trailing null character + int input_length = (int)wcslen(utf16_string); + 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, + input_length, 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..60608d0 --- /dev/null +++ b/windows/runner/win32_window.cpp @@ -0,0 +1,288 @@ +#include "win32_window.h" + +#include +#include + +#include "resource.h" + +namespace { + +/// Window attribute that enables dark mode window decorations. +/// +/// Redefined in case the developer's machine has a Windows SDK older than +/// version 10.0.22000.0. +/// See: https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute +#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE +#define DWMWA_USE_IMMERSIVE_DARK_MODE 20 +#endif + +constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; + +/// Registry key for app theme preference. +/// +/// A value of 0 indicates apps should use dark mode. A non-zero or missing +/// value indicates apps should use light mode. +constexpr const wchar_t kGetPreferredBrightnessRegKey[] = + L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"; +constexpr const wchar_t kGetPreferredBrightnessRegValue[] = L"AppsUseLightTheme"; + +// 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 registrar 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::Create(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, + 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; + } + + UpdateTheme(window); + + return OnCreate(); +} + +bool Win32Window::Show() { + return ShowWindow(window_handle_, SW_SHOWNORMAL); +} + +// 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; + + case WM_DWMCOLORIZATIONCOLORCHANGED: + UpdateTheme(hwnd); + 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. +} + +void Win32Window::UpdateTheme(HWND const window) { + DWORD light_mode; + DWORD light_mode_size = sizeof(light_mode); + LSTATUS result = RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey, + kGetPreferredBrightnessRegValue, + RRF_RT_REG_DWORD, nullptr, &light_mode, + &light_mode_size); + + if (result == ERROR_SUCCESS) { + BOOL enable_dark_mode = light_mode == 0; + DwmSetWindowAttribute(window, DWMWA_USE_IMMERSIVE_DARK_MODE, + &enable_dark_mode, sizeof(enable_dark_mode)); + } +} diff --git a/windows/runner/win32_window.h b/windows/runner/win32_window.h new file mode 100644 index 0000000..e901dde --- /dev/null +++ b/windows/runner/win32_window.h @@ -0,0 +1,102 @@ +#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 a win32 window with |title| that is positioned and sized 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 this function will scale the inputted width and height as + // as appropriate for the default monitor. The window is invisible until + // |Show| is called. Returns true if the window was created successfully. + bool Create(const std::wstring& title, const Point& origin, const Size& size); + + // Show the current window. Returns true if the window was successfully shown. + bool Show(); + + // 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 + // responds 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; + + // Update the window frame's theme to match the system theme. + static void UpdateTheme(HWND const window); + + 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_