From b7153c5f444fea3b8a2a26e268dc8791a902aaef Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Sun, 15 Sep 2024 17:04:13 +0500 Subject: [PATCH 01/27] jaspr-project-converted --- .firebase/hosting.YnVpbGRcd2Vi.cache | 74 -- .firebaserc | 5 - .gitignore | 34 +- .metadata | 30 - LICENSE.md | 9 - analysis_options.yaml | 65 +- android/.gitignore | 13 - android/app/build.gradle | 58 -- android/app/src/debug/AndroidManifest.xml | 7 - android/app/src/main/AndroidManifest.xml | 46 - .../kotlin/com/hmz/devfolio/MainActivity.kt | 5 - .../res/drawable-v21/launch_background.xml | 12 - .../main/res/drawable/launch_background.xml | 12 - .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 0 bytes .../main/res/mipmap-hdpi/launcher_icon.png | Bin 2202 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 0 bytes .../main/res/mipmap-mdpi/launcher_icon.png | Bin 1453 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 0 bytes .../main/res/mipmap-xhdpi/launcher_icon.png | Bin 2924 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 0 bytes .../main/res/mipmap-xxhdpi/launcher_icon.png | Bin 4639 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 0 bytes .../main/res/mipmap-xxxhdpi/launcher_icon.png | Bin 6197 -> 0 bytes .../app/src/main/res/values-night/styles.xml | 18 - android/app/src/main/res/values/styles.xml | 18 - android/app/src/profile/AndroidManifest.xml | 7 - android/build.gradle | 18 - android/gradle.properties | 3 - .../gradle/wrapper/gradle-wrapper.properties | 5 - android/settings.gradle | 25 - data.json | 159 ---- firebase.json | 10 - fonts/poppins/Poppins-Bold.ttf | Bin 153900 -> 0 bytes fonts/poppins/Poppins-Italic.ttf | Bin 181972 -> 0 bytes fonts/poppins/Poppins-Light.ttf | Bin 159848 -> 0 bytes fonts/poppins/Poppins-Medium.ttf | Bin 156480 -> 0 bytes fonts/poppins/Poppins-Regular.ttf | Bin 158192 -> 0 bytes fonts/poppins/Poppins-SemiBold.ttf | Bin 155192 -> 0 bytes ios/.gitignore | 34 - ios/Flutter/AppFrameworkInfo.plist | 26 - ios/Flutter/Debug.xcconfig | 2 - ios/Flutter/Release.xcconfig | 2 - ios/Podfile | 44 - ios/Podfile.lock | 48 - ios/Runner.xcodeproj/project.pbxproj | 728 --------------- .../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 | 122 --- .../Icon-App-1024x1024@1x.png | Bin 25986 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 606 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1203 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1781 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 911 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1791 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 2694 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1203 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 2420 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 3705 -> 0 bytes .../AppIcon.appiconset/Icon-App-50x50@1x.png | Bin 1539 -> 0 bytes .../AppIcon.appiconset/Icon-App-50x50@2x.png | Bin 3101 -> 0 bytes .../AppIcon.appiconset/Icon-App-57x57@1x.png | Bin 1686 -> 0 bytes .../AppIcon.appiconset/Icon-App-57x57@2x.png | Bin 3470 -> 0 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 3705 -> 0 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 5911 -> 0 bytes .../AppIcon.appiconset/Icon-App-72x72@1x.png | Bin 2202 -> 0 bytes .../AppIcon.appiconset/Icon-App-72x72@2x.png | Bin 4639 -> 0 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 2298 -> 0 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 4929 -> 0 bytes .../Icon-App-83.5x83.5@2x.png | Bin 5409 -> 0 bytes .../LaunchImage.imageset/Contents.json | 23 - .../LaunchImage.imageset/LaunchImage.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/README.md | 5 - ios/Runner/Base.lproj/LaunchScreen.storyboard | 37 - ios/Runner/Base.lproj/Main.storyboard | 26 - ios/Runner/Info.plist | 49 - ios/Runner/Runner-Bridging-Header.h | 1 - ios/RunnerTests/RunnerTests.swift | 12 - lib/animations/bottom_animation.dart | 85 -- lib/animations/entrance_fader.dart | 70 -- lib/app.dart | 62 ++ lib/components/app_button.dart | 51 + lib/components/nav_bar.dart | 99 ++ lib/configs/app.dart | 17 - lib/configs/app_core_theme.dart | 80 -- lib/configs/app_dimensions.dart | 62 -- lib/configs/app_theme.dart | 40 - lib/configs/app_typography.dart | 52 -- lib/configs/app_typography_ext.dart | 41 - lib/configs/configs.dart | 11 - lib/configs/core_theme.dart | 42 - lib/configs/date_ext.dart | 3 - lib/configs/space.dart | 68 -- lib/configs/space_ext.dart | 36 - lib/configs/ui.dart | 66 -- lib/configs/ui_props.dart | 75 -- lib/constants.dart | 15 - lib/constants/theme.dart | 5 + lib/jaspr_options.dart | 40 + lib/main.dart | 107 +-- lib/pages/home.dart | 28 + lib/provider/app_provider.dart | 51 - lib/provider/drawer_provider.dart | 7 - lib/provider/scroll_provider.dart | 42 - lib/responsive/responsive.dart | 39 - lib/sections/about/about.dart | 18 - lib/sections/about/about_desktop.dart | 174 ---- lib/sections/about/about_mobile.dart | 132 --- lib/sections/about/about_tablet.dart | 173 ---- lib/sections/contact/contact.dart | 17 - lib/sections/contact/contact_desktop.dart | 42 - lib/sections/contact/contact_mobile.dart | 44 - lib/sections/home/home.dart | 18 - lib/sections/home/home_desktop.dart | 127 --- lib/sections/home/home_mobile.dart | 109 --- lib/sections/home/home_tab.dart | 124 --- lib/sections/main/main_section.dart | 53 -- lib/sections/main/widgets/_body.dart | 16 - lib/sections/main/widgets/_mobile_drawer.dart | 89 -- .../main/widgets/_navbar_desktop.dart | 97 -- lib/sections/portfolio/portfolio.dart | 17 - lib/sections/portfolio/portfolio_desktop.dart | 63 -- lib/sections/portfolio/portfolio_mobile.dart | 60 -- lib/sections/services/services.dart | 32 - lib/sections/services/services_desktop.dart | 51 - lib/sections/services/services_mobile.dart | 43 - .../services/widgets/_services_card.dart | 120 --- .../services/widgets/_services_card_back.dart | 109 --- lib/utils/about_utils.dart | 7 - lib/utils/contact_utils.dart | 21 - lib/utils/navbar_utils.dart | 20 - lib/utils/project_utils.dart | 65 -- lib/utils/services_utils.dart | 27 - lib/utils/utils.dart | 65 -- lib/utils/work_utils.dart | 19 - lib/widget/about_me_data.dart | 43 - lib/widget/arrow_on_top.dart | 77 -- lib/widget/community_button.dart | 31 - lib/widget/custom_text_heading.dart | 37 - lib/widget/footer.dart | 34 - lib/widget/navbar_actions_button.dart | 47 - lib/widget/navbar_logo.dart | 29 - lib/widget/project_card.dart | 161 ---- lib/widget/social_links.dart | 49 - lib/widget/tech_widget.dart | 26 - linux/.gitignore | 1 - linux/CMakeLists.txt | 145 --- linux/flutter/CMakeLists.txt | 88 -- linux/flutter/generated_plugin_registrant.cc | 15 - linux/flutter/generated_plugin_registrant.h | 15 - linux/flutter/generated_plugins.cmake | 24 - linux/main.cc | 6 - linux/my_application.cc | 124 --- linux/my_application.h | 18 - macos/.gitignore | 7 - macos/Flutter/Flutter-Debug.xcconfig | 2 - macos/Flutter/Flutter-Release.xcconfig | 2 - macos/Flutter/GeneratedPluginRegistrant.swift | 14 - macos/Podfile | 43 - macos/Runner.xcodeproj/project.pbxproj | 801 ---------------- .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/xcschemes/Runner.xcscheme | 98 -- .../contents.xcworkspacedata | 10 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - macos/Runner/AppDelegate.swift | 9 - .../AppIcon.appiconset/Contents.json | 68 -- .../AppIcon.appiconset/app_icon_1024.png | Bin 25986 -> 0 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 3733 -> 0 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 486 -> 0 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 7840 -> 0 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 981 -> 0 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 17077 -> 0 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 1876 -> 0 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 | 874 +++++++++--------- pubspec.yaml | 106 +-- test/widget_test.dart | 0 web/favicon.ico | Bin 0 -> 15406 bytes web/favicon.png | Bin 428 -> 0 bytes {fonts => web/fonts}/agustina/agustina.otf | Bin .../fonts}/montserrat/montserrat.ttf | Bin web/icons/Icon-maskable-192.png | Bin 5594 -> 0 bytes web/icons/Icon-maskable-512.png | Bin 20998 -> 0 bytes {assets => web/images}/app/1024.png | Bin {assets => web/images}/hi.gif | Bin {assets => web/images}/photos/black-white.png | Bin {assets => web/images}/photos/colored.png | Bin {assets => web/images}/photos/mobile.png | Bin {assets => web/images}/projects/android.png | Bin {assets => web/images}/projects/covid.png | Bin {assets => web/images}/projects/covidB.png | Bin {assets => web/images}/projects/earbender.png | Bin {assets => web/images}/projects/flutter.png | Bin {assets => web/images}/projects/hereiam.png | Bin {assets => web/images}/projects/hereiamB.png | Bin {assets => web/images}/projects/java.png | Bin {assets => web/images}/projects/medkit.png | Bin {assets => web/images}/projects/medkitB.png | Bin {assets => web/images}/projects/messenger.png | Bin {assets => web/images}/projects/quran.png | Bin {assets => web/images}/projects/quranB.png | Bin {assets => web/images}/projects/snackbar.png | Bin {assets => web/images}/services/app.png | Bin {assets => web/images}/services/blog.png | Bin {assets => web/images}/services/fiverr.png | Bin {assets => web/images}/services/open.png | Bin {assets => web/images}/services/open_b.png | Bin {assets => web/images}/services/rapid.png | Bin {assets => web/images}/services/ui.png | Bin {assets => web/images}/work/cui.png | Bin {assets => web/images}/work/dsc.png | Bin {assets => web/images}/work/flutterIsl.png | Bin {assets => web/images}/work/st.png | Bin web/index.html | 102 -- web/manifest.json | 35 - windows/.gitignore | 17 - windows/CMakeLists.txt | 101 -- windows/flutter/CMakeLists.txt | 104 --- .../flutter/generated_plugin_registrant.cc | 14 - windows/flutter/generated_plugin_registrant.h | 15 - windows/flutter/generated_plugins.cmake | 24 - windows/runner/CMakeLists.txt | 32 - windows/runner/Runner.rc | 121 --- windows/runner/flutter_window.cpp | 61 -- windows/runner/flutter_window.h | 33 - windows/runner/main.cpp | 43 - windows/runner/resource.h | 16 - windows/runner/runner.exe.manifest | 20 - windows/runner/utils.cpp | 64 -- windows/runner/utils.h | 19 - windows/runner/win32_window.cpp | 245 ----- windows/runner/win32_window.h | 98 -- 248 files changed, 827 insertions(+), 9012 deletions(-) delete mode 100644 .firebase/hosting.YnVpbGRcd2Vi.cache delete mode 100644 .firebaserc delete mode 100644 .metadata delete mode 100644 LICENSE.md delete mode 100644 android/.gitignore delete mode 100644 android/app/build.gradle delete mode 100644 android/app/src/debug/AndroidManifest.xml delete mode 100644 android/app/src/main/AndroidManifest.xml delete mode 100644 android/app/src/main/kotlin/com/hmz/devfolio/MainActivity.kt delete mode 100644 android/app/src/main/res/drawable-v21/launch_background.xml delete mode 100644 android/app/src/main/res/drawable/launch_background.xml delete mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 android/app/src/main/res/mipmap-hdpi/launcher_icon.png delete mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 android/app/src/main/res/mipmap-mdpi/launcher_icon.png delete mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 android/app/src/main/res/mipmap-xhdpi/launcher_icon.png delete mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png delete mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png delete mode 100644 android/app/src/main/res/values-night/styles.xml delete mode 100644 android/app/src/main/res/values/styles.xml delete mode 100644 android/app/src/profile/AndroidManifest.xml delete mode 100644 android/build.gradle delete mode 100644 android/gradle.properties delete mode 100644 android/gradle/wrapper/gradle-wrapper.properties delete mode 100644 android/settings.gradle delete mode 100644 data.json delete mode 100644 firebase.json delete mode 100644 fonts/poppins/Poppins-Bold.ttf delete mode 100644 fonts/poppins/Poppins-Italic.ttf delete mode 100644 fonts/poppins/Poppins-Light.ttf delete mode 100644 fonts/poppins/Poppins-Medium.ttf delete mode 100644 fonts/poppins/Poppins-Regular.ttf delete mode 100644 fonts/poppins/Poppins-SemiBold.ttf delete mode 100644 ios/.gitignore delete mode 100644 ios/Flutter/AppFrameworkInfo.plist delete mode 100644 ios/Flutter/Debug.xcconfig delete mode 100644 ios/Flutter/Release.xcconfig delete mode 100644 ios/Podfile delete mode 100644 ios/Podfile.lock delete mode 100644 ios/Runner.xcodeproj/project.pbxproj delete mode 100644 ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme delete mode 100644 ios/Runner.xcworkspace/contents.xcworkspacedata delete mode 100644 ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 ios/Runner/AppDelegate.swift delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png delete mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json delete mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png delete mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png delete mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png delete mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md delete mode 100644 ios/Runner/Base.lproj/LaunchScreen.storyboard delete mode 100644 ios/Runner/Base.lproj/Main.storyboard delete mode 100644 ios/Runner/Info.plist delete mode 100644 ios/Runner/Runner-Bridging-Header.h delete mode 100644 ios/RunnerTests/RunnerTests.swift delete mode 100644 lib/animations/bottom_animation.dart delete mode 100644 lib/animations/entrance_fader.dart create mode 100644 lib/app.dart create mode 100644 lib/components/app_button.dart create mode 100644 lib/components/nav_bar.dart delete mode 100644 lib/configs/app.dart delete mode 100644 lib/configs/app_core_theme.dart delete mode 100644 lib/configs/app_dimensions.dart delete mode 100644 lib/configs/app_theme.dart delete mode 100644 lib/configs/app_typography.dart delete mode 100644 lib/configs/app_typography_ext.dart delete mode 100644 lib/configs/configs.dart delete mode 100644 lib/configs/core_theme.dart delete mode 100644 lib/configs/date_ext.dart delete mode 100644 lib/configs/space.dart delete mode 100644 lib/configs/space_ext.dart delete mode 100644 lib/configs/ui.dart delete mode 100644 lib/configs/ui_props.dart delete mode 100644 lib/constants.dart create mode 100644 lib/constants/theme.dart create mode 100644 lib/jaspr_options.dart create mode 100644 lib/pages/home.dart delete mode 100644 lib/provider/app_provider.dart delete mode 100644 lib/provider/drawer_provider.dart delete mode 100644 lib/provider/scroll_provider.dart delete mode 100644 lib/responsive/responsive.dart delete mode 100644 lib/sections/about/about.dart delete mode 100644 lib/sections/about/about_desktop.dart delete mode 100644 lib/sections/about/about_mobile.dart delete mode 100644 lib/sections/about/about_tablet.dart delete mode 100644 lib/sections/contact/contact.dart delete mode 100644 lib/sections/contact/contact_desktop.dart delete mode 100644 lib/sections/contact/contact_mobile.dart delete mode 100644 lib/sections/home/home.dart delete mode 100644 lib/sections/home/home_desktop.dart delete mode 100644 lib/sections/home/home_mobile.dart delete mode 100644 lib/sections/home/home_tab.dart delete mode 100644 lib/sections/main/main_section.dart delete mode 100644 lib/sections/main/widgets/_body.dart delete mode 100644 lib/sections/main/widgets/_mobile_drawer.dart delete mode 100644 lib/sections/main/widgets/_navbar_desktop.dart delete mode 100644 lib/sections/portfolio/portfolio.dart delete mode 100644 lib/sections/portfolio/portfolio_desktop.dart delete mode 100644 lib/sections/portfolio/portfolio_mobile.dart delete mode 100644 lib/sections/services/services.dart delete mode 100644 lib/sections/services/services_desktop.dart delete mode 100644 lib/sections/services/services_mobile.dart delete mode 100644 lib/sections/services/widgets/_services_card.dart delete mode 100644 lib/sections/services/widgets/_services_card_back.dart delete mode 100644 lib/utils/about_utils.dart delete mode 100644 lib/utils/contact_utils.dart delete mode 100644 lib/utils/navbar_utils.dart delete mode 100644 lib/utils/project_utils.dart delete mode 100644 lib/utils/services_utils.dart delete mode 100644 lib/utils/utils.dart delete mode 100644 lib/utils/work_utils.dart delete mode 100644 lib/widget/about_me_data.dart delete mode 100644 lib/widget/arrow_on_top.dart delete mode 100644 lib/widget/community_button.dart delete mode 100644 lib/widget/custom_text_heading.dart delete mode 100644 lib/widget/footer.dart delete mode 100644 lib/widget/navbar_actions_button.dart delete mode 100644 lib/widget/navbar_logo.dart delete mode 100644 lib/widget/project_card.dart delete mode 100644 lib/widget/social_links.dart delete mode 100644 lib/widget/tech_widget.dart delete mode 100644 linux/.gitignore delete mode 100644 linux/CMakeLists.txt delete mode 100644 linux/flutter/CMakeLists.txt delete mode 100644 linux/flutter/generated_plugin_registrant.cc delete mode 100644 linux/flutter/generated_plugin_registrant.h delete mode 100644 linux/flutter/generated_plugins.cmake delete mode 100644 linux/main.cc delete mode 100644 linux/my_application.cc delete mode 100644 linux/my_application.h delete mode 100644 macos/.gitignore delete mode 100644 macos/Flutter/Flutter-Debug.xcconfig delete mode 100644 macos/Flutter/Flutter-Release.xcconfig delete mode 100644 macos/Flutter/GeneratedPluginRegistrant.swift delete mode 100644 macos/Podfile delete mode 100644 macos/Runner.xcodeproj/project.pbxproj delete mode 100644 macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme delete mode 100644 macos/Runner.xcworkspace/contents.xcworkspacedata delete mode 100644 macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 macos/Runner/AppDelegate.swift delete mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png delete mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png delete mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png delete mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png delete mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png delete mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png delete mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png delete mode 100644 macos/Runner/Base.lproj/MainMenu.xib delete mode 100644 macos/Runner/Configs/AppInfo.xcconfig delete mode 100644 macos/Runner/Configs/Debug.xcconfig delete mode 100644 macos/Runner/Configs/Release.xcconfig delete mode 100644 macos/Runner/Configs/Warnings.xcconfig delete mode 100644 macos/Runner/DebugProfile.entitlements delete mode 100644 macos/Runner/Info.plist delete mode 100644 macos/Runner/MainFlutterWindow.swift delete mode 100644 macos/Runner/Release.entitlements delete mode 100644 macos/RunnerTests/RunnerTests.swift delete mode 100644 test/widget_test.dart create mode 100644 web/favicon.ico delete mode 100644 web/favicon.png rename {fonts => web/fonts}/agustina/agustina.otf (100%) rename {fonts => web/fonts}/montserrat/montserrat.ttf (100%) delete mode 100644 web/icons/Icon-maskable-192.png delete mode 100644 web/icons/Icon-maskable-512.png rename {assets => web/images}/app/1024.png (100%) rename {assets => web/images}/hi.gif (100%) rename {assets => web/images}/photos/black-white.png (100%) rename {assets => web/images}/photos/colored.png (100%) rename {assets => web/images}/photos/mobile.png (100%) rename {assets => web/images}/projects/android.png (100%) rename {assets => web/images}/projects/covid.png (100%) rename {assets => web/images}/projects/covidB.png (100%) rename {assets => web/images}/projects/earbender.png (100%) rename {assets => web/images}/projects/flutter.png (100%) rename {assets => web/images}/projects/hereiam.png (100%) rename {assets => web/images}/projects/hereiamB.png (100%) rename {assets => web/images}/projects/java.png (100%) rename {assets => web/images}/projects/medkit.png (100%) rename {assets => web/images}/projects/medkitB.png (100%) rename {assets => web/images}/projects/messenger.png (100%) rename {assets => web/images}/projects/quran.png (100%) rename {assets => web/images}/projects/quranB.png (100%) rename {assets => web/images}/projects/snackbar.png (100%) rename {assets => web/images}/services/app.png (100%) rename {assets => web/images}/services/blog.png (100%) rename {assets => web/images}/services/fiverr.png (100%) rename {assets => web/images}/services/open.png (100%) rename {assets => web/images}/services/open_b.png (100%) rename {assets => web/images}/services/rapid.png (100%) rename {assets => web/images}/services/ui.png (100%) rename {assets => web/images}/work/cui.png (100%) rename {assets => web/images}/work/dsc.png (100%) rename {assets => web/images}/work/flutterIsl.png (100%) rename {assets => web/images}/work/st.png (100%) delete mode 100644 web/index.html delete mode 100644 web/manifest.json delete mode 100644 windows/.gitignore delete mode 100644 windows/CMakeLists.txt delete mode 100644 windows/flutter/CMakeLists.txt delete mode 100644 windows/flutter/generated_plugin_registrant.cc delete mode 100644 windows/flutter/generated_plugin_registrant.h delete mode 100644 windows/flutter/generated_plugins.cmake delete mode 100644 windows/runner/CMakeLists.txt delete mode 100644 windows/runner/Runner.rc delete mode 100644 windows/runner/flutter_window.cpp delete mode 100644 windows/runner/flutter_window.h delete mode 100644 windows/runner/main.cpp delete mode 100644 windows/runner/resource.h delete mode 100644 windows/runner/runner.exe.manifest delete mode 100644 windows/runner/utils.cpp delete mode 100644 windows/runner/utils.h delete mode 100644 windows/runner/win32_window.cpp delete mode 100644 windows/runner/win32_window.h diff --git a/.firebase/hosting.YnVpbGRcd2Vi.cache b/.firebase/hosting.YnVpbGRcd2Vi.cache deleted file mode 100644 index db8388b4..00000000 --- a/.firebase/hosting.YnVpbGRcd2Vi.cache +++ /dev/null @@ -1,74 +0,0 @@ -favicon.png,1616348255926,234cb6e6a185eaee7d6d506eb3b0ad6bf5c53abf5288ba73f544e9fe58d50847 -flutter.js,1652650839861,5abe5970cdac2922082089e347a5958f54f682b007fedf8bcc43e64b68d4e077 -manifest.json,1616484542799,9a03cc61acd577dc667cbd9f55ef89de0322602fdcccc8bab2b3c67925023ecb -assets/data.json,1652648977958,809b8ed5be969c6617c7c5b4621063373f3b195c0b2862d1eae853f83fb36cd4 -assets/assets/1.png,1616420590556,2bf46fc7ff02c09bb2e419ca69544e4e37718799d7e1e475e525a5866b4e4850 -assets/assets/cui.png,1616390815152,91fb432066d87af0be146dcc24d1a15773324a18584847dc4f72cdbf3c9eaf3d -assets/assets/dsc.png,1596479234822,e86d1f4351ef76210aad25cb55ca07e09dd15c6a87443567649102a847b91258 -assets/assets/flutterIsl.png,1616297994774,34262c8ec89ccfcbacd59675279a7c2e94ad9047e92262da179c41ff7be8d12d -assets/assets/hi.gif,1616265563558,b5021c4b31a7b52ac68d5854a6852f5366788007c1db87727f510f28811ea3a2 -assets/assets/mob.png,1616592753454,4bfdea916bd17e17fb867d6e0fb18d554061e82b16189de4192ce434b4eb7043 -assets/assets/st.png,1652648977958,0e98355706af02ca9a0fae04642d7b01b1b6a7387edd9cfd2b8b00f1fc6aa259 -assets/assets/web.png,1616592740787,cd0ba535d0c11fe5d1ea1fa933899d1f6f34e98604050e17e3dfff3d7c8a03af -assets/assets/fonts/agustina.otf,1573903900000,b943505f7f56fdac4d2ce3bcc56fd9d38c647bbffdd4450f65891b1ed0ed9427 -assets/assets/fonts/montserrat.ttf,1323716400000,4e92a7a25e549cb377b2919bba833929a5e522a1b979c26ff912a6c99ab63d3b -assets/assets/projects/android.png,1616391399651,cabf763258cf764a7acf2bfeb400feab14db63b6da3c45fe469598f19b011116 -assets/assets/projects/covid.png,1588051998000,b4c6dc5b32f481da1312323e65c1f42c0ef545a79213046cc2b3d81be59217ae -assets/assets/projects/covidB.png,1588105661652,a426ef1aad9ea4afa584b42366cfee486ab5a701a26989fe210c745da4543252 -assets/assets/projects/earbender.png,1599812238000,1cbe3ef3192efcb7594bc4313554ca3b36c4e74fd6edaf4f7796bac819d69294 -assets/assets/projects/flutter.png,1582430832441,8362f17c4d41821b36b8c65951ae47ff281675c6d556b0929c70461bc286d631 -assets/assets/projects/hereiam.png,1595074399263,8a851e99e81022e02bf6b4e451c1693b5f2f62577e17c61b6022868d5c97763a -assets/assets/projects/hereiamB.png,1596704259521,eba71c061f3f7fe3dc853386e54a971bceaf0f1db18fd9d5aa9fa0b4d9fbed3f -assets/assets/projects/java.png,1610036695331,1f996edeb2359b82231067bfd4327e404a011c60fa21f21a3147d227a2c1a885 -assets/assets/projects/medkit.png,1581417246000,49bba8eebfd77b7d435b799ccba1405d064938def9bdf027279927846638e773 -assets/assets/projects/medkitB.png,1588256827048,7f2b40f917919d42dce17b937882209dea63a40ac0932f622edf49781f251ab1 -assets/assets/projects/messenger.png,1606365697638,4191cfde63df860da8a450d498ca8a141896fc29a0bd4fb22d25105322154c58 -assets/assets/projects/quran.png,1593960234000,c9ad21438a20e95268e044c38200c7d5b5f46c460ba3cdfb977ab7bffb0e04fc -assets/assets/projects/quranB.png,1594125740979,bafaee32cf3f794ed339795eed3ba4fbf2871abe7dc3895061949fe621ff9c7e -assets/assets/services/app.png,1616375813903,79cd7cad66c61670f0296db2162b9b77f7f2238294ed2dd198f1baa2db63d82b -assets/assets/services/blog.png,1616375813903,03314d8400f3869fd183b2b3edfe9be1f5d34ba37e38fa9f755806e695ece123 -assets/assets/services/fiverr.png,1624220215713,2182b843dc5d7ccaf891c0151889a9f42abfbcb2b941067ca7233de75fea37f9 -assets/assets/services/open.png,1616375813903,98a7f73dcfe6998bf289c2c2636ed03499801b6d34fe771973ef29393307cc8d -assets/assets/services/open_b.png,1624218149027,46de4cb61f30e5dbbe5276f90b40f4b927b0458671c6be102f88f0e2651c0bb3 -assets/assets/services/rapid.png,1616375813903,d3d1be5eef30a317ecee8d391d000994dd2f9229b16bd9f4991a0a19369757f7 -assets/assets/services/ui.png,1616375813903,8c38eb7137ffb44bfc03477e92bb9257cc0f8d0b192c7a195d09b2631132874d -assets/fonts/MaterialIcons-Regular.otf,1652298877736,6c5b450bbaa24bf30f1a1c111fe2be1e9c2cb23dde6fa9ee8b3609e812302aed -assets/packages/cupertino_icons/assets/CupertinoIcons.ttf,1636172663243,007720e2ea8128f223e5f1a08073b8f40df49b41dac35727107ab73dc4488ae0 -assets/packages/flutter_math_fork/lib/katex_fonts/fonts/KaTeX_AMS-Regular.ttf,1639776710355,3bf9acee5a76d2f609dcbcb3a3d96d00eeb5d1bd92283513e662be83cb8790a6 -assets/packages/flutter_math_fork/lib/katex_fonts/fonts/KaTeX_Caligraphic-Bold.ttf,1639776710352,b312df29f12f2603de0e9b91d1fb2a04ebba600a68fb33c4972dde73a0d7b40e -assets/packages/flutter_math_fork/lib/katex_fonts/fonts/KaTeX_Caligraphic-Regular.ttf,1639776710350,e9e28f08c749a959102593d44db58b469eb3622d4b5303bed8ea87a9b2149c68 -assets/packages/flutter_math_fork/lib/katex_fonts/fonts/KaTeX_Fraktur-Bold.ttf,1639776710347,c531f5627210b883c76a356543eea29d0884bb35d2758cc2ce761fd3d7043086 -assets/packages/flutter_math_fork/lib/katex_fonts/fonts/KaTeX_Fraktur-Regular.ttf,1639776710343,15a470fc0c5498c8c4c63ed2b1f931c2d06f0c2d630d59095d0d810254513e1c -assets/packages/flutter_math_fork/lib/katex_fonts/fonts/KaTeX_Main-Bold.ttf,1639776710339,b558bcc0e7571651efed4bc0eabcd4475f0ca527070f9f33f44e71938ed1fd21 -assets/packages/flutter_math_fork/lib/katex_fonts/fonts/KaTeX_Main-BoldItalic.ttf,1639776710336,8edf95454821afca8661b7c264c6c2778ef12f7dc91b21065a4500b9e893a225 -assets/packages/flutter_math_fork/lib/katex_fonts/fonts/KaTeX_Main-Italic.ttf,1639776710334,b5312335c50be335e405b7a5a627d0248e712394acf967d09578b6af2ae33f71 -assets/packages/flutter_math_fork/lib/katex_fonts/fonts/KaTeX_Main-Regular.ttf,1639776710331,d777789e493338e96e0881c91d295d19b31ca987f5a7391d89b0d55a276e9c78 -assets/packages/flutter_math_fork/lib/katex_fonts/fonts/KaTeX_Math-BoldItalic.ttf,1639776710327,5b46482d2b7e8a86a3ef772233505993a41f25258be4c0699f8a3993607d09ec -assets/packages/flutter_math_fork/lib/katex_fonts/fonts/KaTeX_Math-Italic.ttf,1639776710324,4ed6f8fc64d0f2a490e86936472cf5aaadec3f12974751edbd71997a22d643d6 -assets/packages/flutter_math_fork/lib/katex_fonts/fonts/KaTeX_SansSerif-Bold.ttf,1639776710320,6d8289f8d666851bac5a02683fabe164ddeb595418fefc1c7200b320e766215b -assets/packages/flutter_math_fork/lib/katex_fonts/fonts/KaTeX_SansSerif-Italic.ttf,1639776710317,65db5549f3f2581ca33e226956b5027b00a8007bdc534e17bb14d4b78bf8a31a -assets/packages/flutter_math_fork/lib/katex_fonts/fonts/KaTeX_SansSerif-Regular.ttf,1639776710315,0231cd4d462055eac3716198dc2aeea4500bbc06135bcca5759674111c1e9219 -assets/packages/flutter_math_fork/lib/katex_fonts/fonts/KaTeX_Script-Regular.ttf,1639776710313,a0a879067935625c6c0faaebabb9f021c793d3b866d28f31e76bc477b03b4d6f -assets/packages/flutter_math_fork/lib/katex_fonts/fonts/KaTeX_Size1-Regular.ttf,1639776710309,f95b4f688fb36159b508c0474b98d79587d6c50dc371b8ff6310489bf4584e1b -assets/packages/flutter_math_fork/lib/katex_fonts/fonts/KaTeX_Size2-Regular.ttf,1639776710306,4c571d1438b114d51890276d8087212a13b753f9efd0b994c6f477c7e23331b4 -assets/packages/flutter_math_fork/lib/katex_fonts/fonts/KaTeX_Size3-Regular.ttf,1639776710304,037d26167aca2ffb59287cbd10587a08a1c1b6e8cfa310c27c96b74018ea3cd3 -assets/packages/flutter_math_fork/lib/katex_fonts/fonts/KaTeX_Size4-Regular.ttf,1639776710301,61a91b8777fadea97cb14d5131b59bc052b78fca35d90ae975f85eb6b2cac762 -assets/packages/flutter_math_fork/lib/katex_fonts/fonts/KaTeX_Typewriter-Regular.ttf,1639776710299,f5b3046a59743966b2d134d81be5188d18411cfca90daab9e8134a135274074e -assets/packages/font_awesome_flutter/lib/fonts/fa-brands-400.ttf,1650359469050,b6658796b6dde892f9906bc9419f6e11426d2cdbfea9238f1c05d5b186c501c1 -assets/packages/font_awesome_flutter/lib/fonts/fa-regular-400.ttf,1650359469031,0ca734ba74aacfb56a101688f4201feffb0a2d941d438cf0f0cfb37fc2ac0020 -assets/packages/font_awesome_flutter/lib/fonts/fa-solid-900.ttf,1650359469023,a83672e8865abbdec0810397a8ae0dd3fdd07553cd8082dba0b3a42ff8711390 -assets/packages/wakelock_web/assets/no_sleep.js,1633932263315,a7abe2706ef61650a9ddd24f8d7447c5f5c54bafb459136ec6a3dee68cedbe01 -canvaskit/canvaskit.js,1652298992344,d4bb233aafd8e7a814829511530caf2ba60e688681dc5f14fa3cc0e2275e332d -canvaskit/canvaskit.wasm,1652298992668,3d20d7c09f028a17b2bffa47fa8e73313af8299f1cf19e34fb9319770656d7bd -canvaskit/profiling/canvaskit.js,1652298992676,700abcf7f3603f0adab15cbffb4a3bff9845531c3a2f3b6894a47d1836a56cca -canvaskit/profiling/canvaskit.wasm,1652298993033,00021620f0517e1a025c49490f33b5a5eb0624d877ce70ac75bd95c65539a4a0 -icons/Icon-192.png,1616391022075,e4aadd7dc7f848d151e08df4a85a87502eefe0fc41994d7f72eb89cc9eb175d6 -icons/Icon-512.png,1616391022085,b829b1181eda3b6b1ee598a72648ed1ed5444e7bcd903660857036943cc481fa -version.json,1653396000906,8e7ca521fe4b89b43c52bb5d7a73313283ec9c1ebc8086904b4b6ecabd3c8ad5 -index.html,1653396001522,a922e049c00da4a69ea4d6c2b5e007d0a3dbec47cbb2c89801dd9b9a9368bb84 -flutter_service_worker.js,1653396003192,ddeabd9316c6128b2956c04938a83522142c25dba2815d8847c552d88c5568de -assets/AssetManifest.json,1653396001428,75debdbf58d8f6abb668fa036a1475defc619dab694f8537e62ffd004e0f8276 -assets/FontManifest.json,1653396001427,81c0b7c2576cf31cfb8f32737543dc3059eb349385b0ba62a64071c7ded46454 -assets/assets/projects/snackbar.png,1653294317463,70d5c39fa1c563d962dbe4822a7dac1b77ccad8d7ad235923772e04836309ac6 -assets/NOTICES,1653396001285,867895ae4db6d227e101871a941251fd1fa0626b169538a8ba833ed3c0f5d09c -main.dart.js,1653395996117,6e016d4536988468205404018b1f274d4d168a09c91da3e8f105f9ed41cf93d2 diff --git a/.firebaserc b/.firebaserc deleted file mode 100644 index ee9221fb..00000000 --- a/.firebaserc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "projects": { - "default": "mhmzdev-666" - } -} diff --git a/.gitignore b/.gitignore index b4fecd5b..3ddf8a8a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,11 @@ +# Files and directories created by pub. +**/doc/api/ +.dart_tool/ +.packages + +# Conventional directory for build output. +/build/ + # Miscellaneous *.class *.log @@ -8,6 +16,7 @@ .buildlog/ .history .svn/ +migrate_working_dir/ # IntelliJ related *.iml @@ -15,34 +24,11 @@ *.iws .idea/ -lib/provider/github_provider.dart - # 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 related .flutter-plugins .flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ - -# Web related -lib/generated_plugin_registrant.dart - -# 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 deleted file mode 100644 index 70adc633..00000000 --- a/.metadata +++ /dev/null @@ -1,30 +0,0 @@ -# This file tracks properties of this Flutter project. -# Used by Flutter tool to assess capabilities and perform upgrades etc. -# -# This file should be version controlled. - -version: - revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 - channel: stable - -project_type: app - -# Tracks metadata for the flutter migrate command -migration: - platforms: - - platform: root - create_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 - base_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 - - platform: windows - create_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 - base_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 - - # 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/LICENSE.md b/LICENSE.md deleted file mode 100644 index ab7cfb1c..00000000 --- a/LICENSE.md +++ /dev/null @@ -1,9 +0,0 @@ -### The MIT License (MIT) - -Copyright © 2020 Muhammad Hamza - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/analysis_options.yaml b/analysis_options.yaml index 61b6c4de..5e93025b 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,29 +1,42 @@ -# This file configures the analyzer, which statically analyzes Dart code to -# check for errors, warnings, and lints. +# This file configures the static analysis results for your project (errors, +# warnings, and lints). # -# The issues identified by the analyzer are surfaced in the UI of Dart-enabled -# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be -# invoked from the command line by running `flutter analyze`. - -# The following line activates a set of recommended lints for Flutter apps, -# packages, and plugins designed to encourage good coding practices. -include: package:flutter_lints/flutter.yaml - -linter: - # The lint rules applied to this project can be customized in the - # section below to disable rules from the `package:flutter_lints/flutter.yaml` - # included above or to enable additional rules. A list of all available lints - # and their documentation is published at - # https://dart-lang.github.io/linter/lints/index.html. +# This enables the 'recommended' set of lints from `package:lints`. +# This set helps identify many issues that may lead to problems when running +# or consuming Dart code, and enforces writing Dart using a single, idiomatic +# style and format. +# +# If you want a smaller set of lints you can change this to specify +# 'package:lints/core.yaml'. These are just the most critical lints +# (the recommended set includes the core lints). +# The core lints are also what is used by pub.dev for scoring packages. + +include: package:lints/recommended.yaml + +analyzer: + # Jaspr has a custom lint package 'jaspr_lints', which needs the 'custom_lint' analyzer plugin. # - # 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 + # Unfortunately, running 'dart analyze' does not pick up the custom lints. Instead, you need to + # run a separate command for this: `jaspr analyze` + plugins: + - custom_lint +# exclude: +# - path/to/excluded/files/** + +# Uncomment the following section to enable or disable additional rules. + +# linter: +# rules: +# camel_case_types: true + +# For controlling Jaspr specific lint rules, we need a slightly different config. + +# custom_lint: +# rules: +# prefer_html_methods: false + +# For more information about the core and recommended set of lints, see +# https://dart.dev/go/core-lints + +# For additional information about configuring this file, see # https://dart.dev/guides/language/analysis-options diff --git a/android/.gitignore b/android/.gitignore deleted file mode 100644 index 6f568019..00000000 --- a/android/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -gradle-wrapper.jar -/.gradle -/captures/ -/gradlew -/gradlew.bat -/local.properties -GeneratedPluginRegistrant.java - -# Remember to never publicly share your keystore. -# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app -key.properties -**/*.keystore -**/*.jks diff --git a/android/app/build.gradle b/android/app/build.gradle deleted file mode 100644 index 7196c8e1..00000000 --- a/android/app/build.gradle +++ /dev/null @@ -1,58 +0,0 @@ -plugins { - id "com.android.application" - id "kotlin-android" - // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. - id "dev.flutter.flutter-gradle-plugin" -} - -def localProperties = new Properties() -def localPropertiesFile = rootProject.file("local.properties") -if (localPropertiesFile.exists()) { - localPropertiesFile.withReader("UTF-8") { reader -> - localProperties.load(reader) - } -} - -def flutterVersionCode = localProperties.getProperty("flutter.versionCode") -if (flutterVersionCode == null) { - flutterVersionCode = "1" -} - -def flutterVersionName = localProperties.getProperty("flutter.versionName") -if (flutterVersionName == null) { - flutterVersionName = "1.0" -} - -android { - namespace = "com.hmz.devfolio" - compileSdk = flutter.compileSdkVersion - ndkVersion = flutter.ndkVersion - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - - defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId = "com.hmz.devfolio" - // You can update the following values to match your application needs. - // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdk = flutter.minSdkVersion - targetSdk = flutter.targetSdkVersion - versionCode = flutterVersionCode.toInteger() - versionName = flutterVersionName - } - - buildTypes { - release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig = signingConfigs.debug - } - } -} - -flutter { - source = "../.." -} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml deleted file mode 100644 index 399f6981..00000000 --- a/android/app/src/debug/AndroidManifest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index 467effc9..00000000 --- a/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/android/app/src/main/kotlin/com/hmz/devfolio/MainActivity.kt b/android/app/src/main/kotlin/com/hmz/devfolio/MainActivity.kt deleted file mode 100644 index 6d2d6403..00000000 --- a/android/app/src/main/kotlin/com/hmz/devfolio/MainActivity.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.hmz.devfolio - -import io.flutter.embedding.android.FlutterActivity - -class MainActivity: FlutterActivity() diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml deleted file mode 100644 index f74085f3..00000000 --- a/android/app/src/main/res/drawable-v21/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml deleted file mode 100644 index 304732f8..00000000 --- a/android/app/src/main/res/drawable/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/android/app/src/main/res/mipmap-hdpi/launcher_icon.png b/android/app/src/main/res/mipmap-hdpi/launcher_icon.png deleted file mode 100644 index 054c1c94c031188a7d1ffe02552b833b6bf0340d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2202 zcmV;L2xa$)P)@wP@uG>NL$*nz4vOnhwpo&N!fYB?9Q73ZT6Q`l6lTIv;X(r z_rC9YZ;T-V#E``Js9)f}PD~&fVgkt!6G(=bKr+Mxl3~OPgi%Z=5P*Qk4Mw{FI=w!s z`$wEW{hdzes5%L~moI>)u>tzqTfy&gLE7SSD177HsO^myfpDZW9X<#*cW;Bx;J|%t zw!#Te@cLVz)9IqNJ7NU7bL1On*s)b~U2itSgiTvPZ!#;g8?`_^)fa$t1tgYDR`ftE z@HX9s`t4hoZMkb+16$5G#kQjs$e54_XDgP1W7d2~UAP#8(urVB9Sw$f3l%Ql^Ad;X zfq>fugS|a4*xdz#T^%sc*#Z5|yU^d-0>0KeAQYEC@rKQcUwk+Xd$vK)=M!DGjW2?% z6)$kvj#?mVb}pDRvY_*iQ}hoB&vzr4>uFCu9qpr;^wv~^^Tbc$2J#N$*S`&V1D_X( z`fmL38B3Q#Bk8r_*P=z3P!{z)EN<=JP5vt`NF+b82ofhv<+iU#-mGVzgSH>O1Mlry ziXSW#l_b9x3` z|6n8dn*I^pi_?p@cm3pf?Z=KX+cK9|aM>OXmj}}s4B(hHlm3O{_j;het(AFSf(riU zE^*A*DdFJgOrANH+x`%m1&W@=o1%zz2zxQV|7oxMo_Rg}nPs%&)Iu|X+;!L34PiK2Ljk?T0wwQ%toV6DL@f~RQg)FS==kjynojucG}E#JUPlKV z8enJecTZH_%b}DK46xsa1dXT5pAc0JQWq|v^(kJW5(wj)YnwNMyS_I1pbP~Juzw^k z;o|5?td&Eiml{MYQ16vXaBLU^;;PpbyJL^Tux1Piv zSXwpO6F?tl1UGS_{_ZZ({d$X)?t>`>pD&fZ2xXILplEU=Ljqau)6199LkemUkw8sf z9fJPWJ9McYHEjl@%v%7XrcNiR!?^oSOPpK%Jh&JFB~70NWgl)={E{7~tKjnbS47u! z#yEIv*8%RO{6WZCM!$g$HfQy#bU)0TlFI!5Fy?UAv5RCv5nq7luB&BUw`AvNDh?uR z9e?LWoQ3tS+yMm2$?RvAnKc*26+8FgZWcNfF&W{(~O&j@IZDgwD`*#$B% z7(n2xK?fyPMg$X8tx-oHsZGL+EE@Xr5DJJh_#w28fe@7hlGr3HF6GYKbPqTo_AtKW z;uZ+&K%NG6AjeySMzGe5La>AmNR)Qfgj*nAOEazZu~1{1*(l)YcmwVRh}s66?cDZd zpU-PRDuTwTVJ}c#gC4?YwNa5+oq#9lwT53Hi6Xr@GfS1S1D^Gp3Nl?X4&W)STASi%;1OPczhPbksmnN;S{wwPgFt!na+7H zuM-`;!|C7n*-l8DIvuhrRw{Znmq7ReEOD^c)Ns&4;O<1$@(O7DbO*D&>GS>IJb4_F z=PsZHy@5_A-2&>XsiyCevr1fzj1(?`q;^qFscB$xC>zpJj9Kv_wEcJlytf;f?Rea{ z`O5>M>j`C(xxx*;5hPVe=PYrsFjy>5x@9|DSo;$Ad%7dK2ebX64V$^%MX^A^!2!uy zu`RDa@e4f&+qis~viA_wZrubu5(lX$dObL1&4c`PZ-RA9HrF#13*>EXqNNB{-N3DJdDOL`28TxnRi}`{=&aK-?t%l6ri=Ej|IS zCiuez5=ICrh7wXJ7RcAkE~Mk|#?KH&3W^27ulaN)GX(p6#DQ8#+*1sW+4Je40UX{V z1;qj-6DK&Q@^`u|9G8$7_4nxi7r2&rgE^l5jbuj5XW?2A6G(=bKr+Mxk|8FL3^9RZ chzTUazi(jRC@GBIU;qFB07*qoM6N<$f{FwYMF0Q* diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@UtAZ9TB2HKq5pXAujO|`NK#e@ih{Kh{nVj6CaphVvNQ= z)W6UeLx_qQ$_N-;M09g*4)y{ToEzJ^ZtL2$>)U%TwEJ#t*K@xv4wC(nFUz_8&b{aN z-E+_5E+aw!w=pv2+kkYjKw!SHKwz#wW69*jc9?8$1@FM$5Sp3-+kuxro0B`M-Yr2O z((7`<^3Zt@YONYghsMkBDnU+N1VLm;k{s7x(uzKl7P;d z2c`S#pzp)?QcfnRGnl(!LEUqrWyW<>dOZ~H-G|nvKpo=Z$DahVtrF~KPcyes84Tor zS;0l3hV#$n*n37>1*o+;^x^|2zU1Wm`}cr0D;up(fg&JD669>!%pN(~UwoRAE!C^g z3x}q?U_Wz;8!LL~5ww03io+<4+wSg8Zp^X*PhjkP6N&Zim~5)30u$L~Q79(hvyXs( zY?SRz6e2rdKl=kG=kMCh&4q(Om?)9JTf(-ONi?WiWJ!~X9PstXZ-i`oSd`qZbj}xp@;xG!0`mCR-^SN zT7KhXS~@6&A_BolC-{c0b7PjOl_=fN^fb7-I%WpQm(N_YUWpkDiU_#6E^)F-rw3!H z4W&DIsU0HZ5JzDsE&+`tGbX#QUIw#3HWwlg35Q7`7h*=p!Rnt#m_!$U$~l~^&74eQ ze}L?$v+WNUB$=58g4IVpK-)Ac0qX0HrgJd-{YjRz{9_JQiAI7U?mc(cMQGY_7ivNJ z0pu9{@eFwy>0(S?`DW^xOOB)jsPR4T)Wgup69}s!gj7&y;ThfVjX&fm++7RSZDRQ# zDS@GeZ*CZ`QjrR?0?aF_L7Qu3eZb)HFSvILYac@uVboRRy42`pPwZ!BAam^F=QIxr30u^Fh$%Esp)>_~j>_0O{0hb%#Jr4st3uer@7(wb?mPMoM+1 zIUp$k>Jn>?ehjLN|NiVE{w@bCA27yKc=|4LvZ1&%E#oN?5}^HWvT0qN9h_{b!e?Ob zKtCtz3kuP?$siU+SqaVO05dXyQTRtkIawpvyd;7U0l#CEmC;-YEwBUh0)SiGoSEcJ zJcJ0)uP--V(rAU6kg(s!$&ywhvV1~_5$NsWWK)@q9AJD891rZ($!riJ;EHP@%>pGf zh1y``WO+}Z6k1@4&dIcZi;z+x z9almVh)-bb0Fx3!1X=4hz%`ld9~lDsxkgxg?=J2=8m_~>X?Bg73W^DsY@`R)h((b_ zq~6gLE+IQP5F6`xyPkxn2;^?rMkI;#%l)5!#%}1cYf@LZXaerICdOP@g*H42n&C^I zdLFvpcqKMQ?}j>GI|S0rvV~T)8gf<^A-gmb0lKB}J7BJ?#@fw+-v4+=*VTXQQ+|z` z<+$2xf$G=aMc;6s2n3wt;2Y+9U_;ST)B^FKiLm_H7a-@JtuWm1ElgeMVIPS8GlRNV z0qF^7m5K$5fT!`526GeDXeU=^waCgS^fq-)CFuqo}u=K?4K zS?lhE&5ak>K}*yl%qP&+sP(v}<^RU5^*I$_fxvv@wkPl}-GR>LcHZ7a00000NkvXX Hu0mjfH9@p4 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 09d4391482be68e9e4a07fab769b5de337d16eb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 721 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy!iOI#yLg7ec#$`gxH85~pclTsBt za}(23gHjVyDhp4h+5i=O3-AeX1=1l$e`s#|#^}+&7(N@w0CIr{$Oe+Uk^K-ZP~83C zcc@hG6rikF&NPT(23>y!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ diff --git a/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png deleted file mode 100644 index d5a7885666895d9b82266bc76f8c484f21efb0be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2924 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 R@cyZ2z|!=RNwu*j@jq(4W=sG8 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png deleted file mode 100644 index d23675857f2fdbf5477652b6d33de769560b1f09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4639 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 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 4d6372eebdb28e45604e46eeda8dd24651419bc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` diff --git a/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png deleted file mode 100644 index ec9b65a18c347a31089773237a1820589b2f0029..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6197 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 c - - - - - - diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml deleted file mode 100644 index cb1ef880..00000000 --- a/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml deleted file mode 100644 index 399f6981..00000000 --- a/android/app/src/profile/AndroidManifest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/android/build.gradle b/android/build.gradle deleted file mode 100644 index d2ffbffa..00000000 --- a/android/build.gradle +++ /dev/null @@ -1,18 +0,0 @@ -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 deleted file mode 100644 index 3b5b324f..00000000 --- a/android/gradle.properties +++ /dev/null @@ -1,3 +0,0 @@ -org.gradle.jvmargs=-Xmx4G -XX:+HeapDumpOnOutOfMemoryError -android.useAndroidX=true -android.enableJetifier=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index e1ca574e..00000000 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip diff --git a/android/settings.gradle b/android/settings.gradle deleted file mode 100644 index 536165d3..00000000 --- a/android/settings.gradle +++ /dev/null @@ -1,25 +0,0 @@ -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 "7.3.0" apply false - id "org.jetbrains.kotlin.android" version "1.7.10" apply false -} - -include ":app" diff --git a/data.json b/data.json deleted file mode 100644 index d7b35ec4..00000000 --- a/data.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "name": "Muhammad Hamza", - "email": "hamza@mhmz.dev", - "subtitles": [ - "Flutter Developer", - "Technical Writer", - "UI/UX Designer" - ], - "blackWhitePhotoURL": "https://drive.google.com/uc?export=view&id=1np1Or8kvpEmH5ghkFN5GJGqU8VAQRUCH", - "coloredPhotoURL": "https://drive.google.com/uc?export=view&id=1wE4FRqC9bRrzOqS64b48--ykLK1yklTJ", - "socialLinks": [ - { - "platform": "facebook", - "url": "https://facebook.com/mhmzdev" - }, - { - "platform": "instagram", - "url": "https://instagram.com/mhmzdev" - }, - { - "platform": "twitter", - "url": "https://twitter.com/mhmzdev" - }, - { - "platform": "linkedin", - "url": "https://linkedin.com/in/mhmzdev" - }, - { - "platform": "github", - "url": "https://github.com/mhmzdev" - }, - { - "platform": "medium", - "url": "https://mhamzadev.medium.com/" - } - ], - "aboutMeHeadline": "I'm Muhammad Hamza, a Flutter developer, Technical Writer and UI/UX Designer.", - "aboueMeDetails": "I'm a Final Year Computer Science student enrolled in COMSATS University, Islamabad. I have been developing mobile apps for over 2 years now. I have worked in teams for various startups and helped them in launching their prototypes and got valuable learning experience. I'm a former Google DSC lead and also CEO/Co-Founder Flutter Islamabad, Pakistan.", - "technologies": [ - "Flutter", - "Dart", - "Python", - "Java", - "C++", - "Flask" - ], - "services": [ - { - "icon": "assets/services/app.png", - "name": "Mobile App Development", - "description": "Android app development via Flutter\n- Splash Screen\n- Firebase Auth/Cloud\n- REST APIs\n- Maps integration and more...!" - }, - { - "icon": "assets/services/ui.png", - "name": "UI/UX Designing", - "description": "Modern UI/UX Designing\n- Adobe XD\n- Mobile & Web designs\n- Interactive UI designs\n- Responsiveness\n- Promo Videos and more..!" - }, - { - "icon": "assets/services/rapid.png", - "name": "Rapid Prototyping", - "description": "Rapid Prototype via Flutter\n- Working MVP\n- Quick & Working prototype" - }, - { - "icon": "assets/services/blog.png", - "name": "Technical Blog Writing", - "description": "Technical Blog writing\n- Medium blogs\n- Soothing header images\n- SEO friendly\n- Researched topics and more..!" - }, - { - "icon": "assets/services/open.png", - "name": "Open Source - GitHub", - "description": "Open source GitHub Projects\n- Awesome README.md\n- Well documented\n- Header images and more...!" - } - ], - "hireMe": { - "whatsapp": "923460159889" - }, - "projects": [ - { - "title": "Awesome SnackBar", - "iconUrl": "https://drive.google.com/file/d/1EohcZdd5mg5dqHQIn24k_G0dpqQTFYwV/view?usp=sharing", - "bannerUrl": "assets/projects/medkitB.png", - "description": "A dart package including a wholesome experience of snackbar in your applications." - }, - { - "title": "MedKit", - "iconUrl": "https://drive.google.com/file/d/1nr1FHUkACm5cg2MpXKNftUeKw888NcJt/view?usp=sharing", - "bannerUrl": "assets/projects/medkitB.png", - "description": "A Phramacy app developed using Flutter powered with Firebase as database with Doctor and Patient panels." - }, - { - "title": "The Holy Qur'an", - "iconUrl": "https://drive.google.com/file/d/1jpkSQyGZP5EWPCIfRz-dU9TARXHN2P5o/view?usp=sharing", - "bannerUrl": "assets/projects/quranB.png", - "description": "Application of Holy book of Muslims, Al-Qur'an. Developed using Flutter. Powered with live RestAPI given in README.md" - }, - { - "title": "Here I Am", - "iconUrl": "assets/projects/hereiam.png", - "bannerUrl": "assets/projects/hereiamB.png", - "description": "Here I am is an Alert app that Sends alert SMS holding your location (Address and Google Maps) to your loved ones." - }, - { - "title": "COIVD 19 - Tracker", - "iconUrl": "assets/projects/covid.png", - "bannerUrl": "assets/projects/covidB.png", - "description": "A live trakcer for COVID19 stats across the Globe and my Home country Pakistan. It uses APIs so the data is live." - }, - { - "title": "Messenger Chat Head UI", - "iconUrl": "assets/projects/messenger.png", - "bannerUrl": "", - "description": "Tried to clone the famous Chat Heads by Facebook Messenger using Flutter. Its basically in-app not exactly like the original chat head." - }, - { - "title": "flutter.dev - Flutter Web", - "iconUrl": "assets/projects/flutter.png", - "bannerUrl": "", - "description": "Flutter Official Site clone using Flutter Web. Try the live site here. For the time being its not responsive fully so there might be responsiveness issues." - }, - { - "title": "Earbender", - "iconUrl": "assets/projects/earbender.png", - "bannerUrl": "", - "description": "A concept of Music App developed using Flutter. Having functionality of playing Audio." - }, - { - "title": "File Transfer Protocol", - "iconUrl": "assets/projects/java.png", - "bannerUrl": "", - "description": "A simple GUI based Java application that sends file from Client to Server but not the other way around." - }, - { - "title": "My Order", - "iconUrl": "assets/projects/android.png", - "bannerUrl": "", - "description": "A concept app for self-services at various restaurants now a days. More like a Restaurant Ordering System." - }, - { - "title": "Hidev", - "iconUrl": "assets/services/open.png", - "bannerUrl": "", - "description": "Its my end semester project. The whole design I developed here is an inspiration from my favortie Flutter Developer Marcin Szałek and his blog Fidev." - } - ], - "contact": [ - { - "param": "address", - "value": "Attock, Pakistan" - }, - { - "param": "phone", - "value": "+92 346 0159889" - }, - { - "param": "email", - "value": "hamza.6.shakeel@gmail.com" - } - ] -} \ No newline at end of file diff --git a/firebase.json b/firebase.json deleted file mode 100644 index 0d25a779..00000000 --- a/firebase.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "hosting": { - "public": "build/web", - "ignore": [ - "firebase.json", - "**/.*", - "**/node_modules/**" - ] - } -} diff --git a/fonts/poppins/Poppins-Bold.ttf b/fonts/poppins/Poppins-Bold.ttf deleted file mode 100644 index b94d47f3af31505f3cfcba533da52b881b6a1b33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153900 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 G$NfLB&PKNY diff --git a/fonts/poppins/Poppins-Italic.ttf b/fonts/poppins/Poppins-Italic.ttf deleted file mode 100644 index 46203996d3943540d81e516dc03e54ed112aec36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181972 zcmc${2Yj2=xj(LVXxM(Wm-mwQlr2lLC0oN9miOK}wzES*LKdqb36$H?GSX67XbLUR zmeSHf8_K0{p{1;DZfJo*%j~!p3Z>jKV!ir3=e)0^SF)TqwExfl!zWmhW$B#fJm(qT zXNd@rNF)~>5mBOn4u2q+W=P8tk)J*SuX;KL`iIA^n|~3WKOz$8zSJ>1+CF?!_kIz1 z>x@WLcA$T_zVZ1t556oS7n zR~DCZM?=Tp_s2yd)ipbJFD;69&#Z_@ z*N@=&b-NZ1?V;}=g7Ewncz@vqi@R37KcQ_`%kjMda4Mh(yJo z7m49rBH}&rN3c7IC{4tOlp>M3NL@q}87X@?p_XdPrNnzIL)^~ZebGgumJ zcAK@S++-~?ne6Zko|Ku2B~p{kW@+T!E|nUL7AT zWCoSrUBOhC{U&FfeN@(`ymGp4hDz^s5xK^fTFKXg;Y~ybVaQgiC$>#>Yqctw*%@@m zRQY;wy}!a;SYvTFjjr^yt28Y`N|II*6Wq$_2Vvy_SUFnwzq;P2R903lHEAspbPR~@@B$nRP~KuMvKNte z+>|Z-o~2htTB~b%H`DT+;~m{;IsLWWw9n`34%(XBLnO1m|A2v=$sj*Vp1iKKw4MY~qewDz!*W=)dz^ zC0Z`|a)-E+EG?eVF<;EMDVx~nsu|)=xpH}odfVsFW~Hf$%P;N@p119os-Hcq$>?n)tPV=^sm-&y>3*`y>78XLS9={(;vPs-vttao zpFFv>ZCFM!!%nS!;o#C>rY=om^ACEJN{hcMU|&L%gcVRff)%s_CE@F1$68!&k6tYJ zX0#{;x%SQp7bPu{5+A^#el>Fet-fSjS;#Q@mcb0F({X`;$_VW8t+P(JleC$LUE}x)X^8Bn0dh3QitN1iO@%5H@&O zVnTP1Fxd%f87CNABy7}(NGT=vSKe1qFJn4gT6b4-ouPy&F7BM9GNuEDn&z*2`^@Zr zZ6$~w5?!9b1BwyF;GquBsJ0~h4~Did6<{XA<$DQ832KM1?1n~gu zY-qm{@65~ZtO@PRm!;RUw-i^1(+YCkrb=;oeqOr7Ez7XlY+dQ3tlA`1wK|BSnXp+M z`=*3gadd4SLwl|N8Q!Zg@)-3J?6nW=m1AqP!!^f)g*QGHsR_yP*yU{$93na{3pz`D zWT%Y|k2oz$8tiSUFU(uld~Nm ziZYD08N(;!)B|$zL+qdqL1dcG|qvXkpwk(rfgv-B|y)a+r@(*?II<#dfzkv7*x>Wc} zsb`U?u(2<#Be9)e0G8Uo_Y>h#o5NPgRE7pZbs$sMU&}y9@6TJ=4NHQh&=10r@IC*x zDF67H=?9sQYX?ljPOMejPOw$;F>HdQP10%+n5CR)_AgsF@lD1b{R`V&usEHL>hwy7 z!%q|3ivf_%79<9Cb((6SeXiP2n3+kUDji?zOC)lGF1!)p* z=mrp#<5Y-jc6j<_9WuwVk8p3`Mo@tPw??IqR9Jm==7ENH|@+h=yfK zMa9%Hk%52xLF)hDb!4)`>$F0oMM?_J^9s1cQjy4l?kJeu6$g$p#5C|7c`^vbF!v_v zJJjo-Yqi=N8EIi>1m)P+VM8nV%IL z@>+{4Nf&(l4EuCs2|nHc4jz1b)W8;~(_c4Kb=OhyeN#ngxvtK(nyO-keY&{4PO0u3 zbNZ}R=5#N7P7mviEWqc0xk*a!Izh@Od|XNe_J}*rGtq8Fw!?z6O;%Lll#)mX)m6Er zWK$*RAcpNuhw}-gQ?klpRa%?FY${I|=jXZ5kAnO(i5qDDceX)P9{FEU5Pf@s836i_ zKV2|Eu@QjzDDh4B)Ug%78>v!LO-ogwQJ-$iwfj2kG)YZtnxlSp` zkg7YoDdmd4$wE=u?&f9>Em2F@k1XYRc~ZN$(QNCNrDv*?rBy+vT%M(=sB3FfDyqz+ z1MDJ=zJIE%rl!r;YS5LGpe=+S!&{h)ZUI;wIFj>0d6P3v(vP{ThMJ<>;Kk0<;>k5`p3CpqX~cVGZy;Ze{0?+khDb!k#qyytP>P^R zItN1adFbtJ6`HUeV%2I>TY9POIwdj_HhGU0H02NCyxRhH4buNxdpki$ogkO2t75%S{(8 zP0k?c-r^aMg{UvA47yb+g|xh>y$<9rlC!^nKQ)PpiEWaJ3IA%2)$KXUfABvr3xuw0pNQREL8+`D|VD(x4%C$02DuJ=UpKwfM%| z?0253Z{9Rw$oFq)ZmIuWFvw<%JG7cKTjyAZR_*iw`jZ_A(*$fJOVlLt@dtnxTpnFD zpf$*(7Z-u8DCJ}i_&!)7aT_9IU=9`rG$B8>f21sT$fj3S9T`~KBhEElm!)T4mXq(Z zdyLwB0~)%=*F2e_^tV(t1yqTcvDr^2#m%8v(5mwRGY;h%H-NWTyhm@dLyA z@2!_F3OTv1Trs3z0^ts!2ZiZQ9`;5$Hl z#ts&o9!^Btktzm4A<2ov4ksPq*OdO~fsyjcOG4v2!EJR^H`4OU8FKYC_S*`w*;UV2 zhex~J_D#NYWbM6VZ|e_&n>vtAN^K1~U2ibhnXav^^Y=O%8tX@Gu$J7&yW~5t7Ap_B zAy8!vpppQ;VcZA50?dkV9|X$q3dTad!~EVrWPI1slSW#r00g2Gm#nPpBZtWjf5&jZ zR^gc?<@Dgt53}%*P>fj#`>u_sn9V0F-^aoU$o~g+$UAjtYc68cnD_Yvr>7D+= zLH7AfZDvWPCbN`3BL}RyWG(%$4HMk~z=L);sUoTtIH{y$kGp>}o$ji?pCNY2O&zd= zZb!ptOL|NACk&-S6#GR(^H_IAu5~1{y?w-!uCcY%4>k}!bZVKR9O_f>o%x~=;tXsD zDdHMB;oyWP7dtw^H8q+zwQeVGH&|U_^}$oSM~`;V%#6FrLhCMNsLc%fJbSH%vN??i zSgG8%JaPTJf^I6S>P)BUAT5?pyU3H5ruTXc`HP?JsTpx*Wc!9PD5jDD&6hQ3wmwU zdzj)N#T7Yq)oYId0NL1w0Z3vTuZtpzniT5xQG4E(K4|m?8msC6TU02!+7AU|&>c^X zD`BA^n>ljeJ6~qE7~;qna21C#OD&kG4ufmfv_1RkP40;*vY&Q2Lh}smb~%T&{l=^2 z=Qq(iY~e!;HILU(I<>ccpuXBU7tCht!PctorCno019EANqH6M0`06512)qynxrm&K zxb=sQ0b!j);V0G9WN7$+Vn9B8#Xw-ElQ#a~Sf-xcA}1eaP8Tl|uPsh%)ZT$@!@UQ* zP4liS{bk243I-p9voMJ2$yNBCOgN2H42-{nWlojWqfx-w)ew~-l3L2nAI0}9Xlu|Psx9nKTo{7XPeI0Gt=c%NJ{JKD;OE0@pg8$Db?fKo45E4`ICp+_5_1> z!+9Y!aUZNqgH;g+EJQUCa@EA97|a6qVmNjqmC$mV|gB|-bSB|=X(u&3DS1>E25$k>4B*4frWth`2LaZ8x}58(L;Uu zjO;C!iw)mBc4I;KO@@3EbNF3T6FOsi(6@QskbmhVcO%vYNl8sYSfmj#T!NxQ#sE)b zqY0~j@Sk9JrkJ?YQj?%xM=EoVkL>z{L@e9%i)^yK#vLMh2>Wt-*C?gAWq%_*GuE=L zGsBJb?HiWse($!n0iQ;n| zpoIm;n{!w}b+}AHtE|U9RGc$o9oj1m1oGQz*&qM7 zqt& znvB}g>egx{Q`g`R*lQasvreKqYL;9Gl*txVMwvkv3V?-TZ6GR(83-u)My&wr^*&Zi zrFrLU{hKJ&l?y~DFMJI{b+gJAbIWiB>9mvwDlm)OTiK%4G!NHKhBTU~=3IGx^!4D#f2=9a~NeQs!*UFH>! zb!k-1zF8mp00HZqA1*9@BN%)mKdad_=|zS#a17XwAf}5&H3|0yUB{T|FX8|aqs>lp z?sd6DN-@mw{R5_=oqp%6m1YJG1Ok%~zW5tMJk#IR<@{?!I(z+ipsVGtmFf7xJYjA% zPdc*op&czw^RI*KVU=sN_8oJJUfteZ`%aw;s0Os64gmjFb5z43B4#OI0}yU8W(crp zIIkT6Ar^?hL?sE3jXJ;_KRE2aU9Q;oInvyq)oKm>^L@eWia{cu{c=mAN?KMMbn#@{ z1!OY-0Wl(tP^rX~ayrx^hLvHG!MYYfh5PSUsP~M)vJ{t%&X=*D2RG=o`^)ZU|2E_7 zZ>VT&hx3DADq2aeM*}N)E*N|+(BUYn3%GeH-G;xnEcuF~@H7|1fQ7_79-CcHnU5V9 zE-TsBwc`>Ak**xys$$p|8Or$D(~6?U3Gwt`^I|&|+t1av>|ZG;l2&w$1%koh|CC8{ zb)CcJv1S5GviHf0;G2ul_hQ)@x7)yktOi58hR?!>Xx3VZjIW7zP}~%0XPnC!DR+Dh$GlY z&&AFv79zpy!Y@LPbfOqTtHi@AV%?W_PipBVYfEp&kmBId#G<(1hLMXERI}MXJWRTG z2FP4k?#NN{t*KsJ&bA9K(CQmn`u)oXX9f)U_w;rvm1g@&ch`lkGz7f9&RrMs@9;L^^0Hnu*SYHVx{qzy6` z&5g{^C9@-&6)F}uVe4y8t27}(iobaF2Cc?y@AWKRG~1VLd~&L9IvAYZ;sCZSiQGiq z17D4U#sZJRi11p26tWkDLW;AvaXv#d42$gm@*d{1I_6ZpPfF(JbkgHHbv zsI*q!W(W*_LNOD}*0*nN>2taIAU3b}Z*A#uHFrsoaetqx*+1T)QrW$uewC`lKM{b( z?V~<8^s2~H)D`64z^cZu7UHfVNGgb}OlWSoNC60htU%Bnw80p^krF+1h5Yz|0U!I4 z&hBlHkxg~>p0tjJ-dy#7-9JF3xdz&-elS4hZNV8zG4v}dTN-rMHOt7BT9c=O(eMI)eH~%s{jB}kF*fA?>3WJ&MJkpvazVO0+=Wr zG~iJ<7^GCVSVvR<77Mar@Vy129R8z@B3x+TH>NU54qQB<${jTK(VdREuF3(gjv)?Y zhcD#-BH}5nw^pSaUTG-(3ZZcaYPxEh+x*uD5ndR%4da5v2;+e0%;jW_$ckTgW0$#Ce?1vSL%>3)V$m8&O zR-_ZVL&YePgx|j{@)Gy?*m^2Pjy(T4Uyei~Z$%b(CFJ5>Cq5H-j}y9BV^oS9h;D1F zT!FbAGii#X>!X>&>tmSI51H^M*J79h28cFo2)slxDolL>sMLTooIPqCM1v(U=dV0^ z59690WSKO>2DVNa@^A4C^AM(7)#&K)s1=RQ zUI?{-z4J2ZgvDoJF&jQ^IH}=P*jSq;h{(U?e4g8Qw~QU|ko593LL+(Wk^Nfm}JFW8?>zTsSCPWao1| zkO!0iPm&+V!)Av3(qGnslb}pNM?H}YO9FWSlqBDSPZvNwmLlnS0Fy)-4>9h_IDHOG zl6+kL0$`E=M&V3H&sot(%qWxO3wY-MP#{L34T$OStxkzXk}ojf9)`GV6MZA|`Sq|! zM2he48Vjw#AmJO05giXdB8?I^CQ<{C6kMQlf{-1PqvPuVk>L;ELQs&CkQoCbQ50k? zo{p`-wQwX}z=j~n$6*y4f+g7>KKUdNA{WFB2Tj`Jgy1elRH#PN2U3HRcxf94D9a{B z$2I~|h9AHpB#Zq!4^$!z96zV{Z9W%NiPv|2aOFHY$qho5;m3JVcRzU@aIhjtA@SKI zQRPY=I}nE}$?ea^(aMxaC353PlJi|a(P;q=Ct~=dAXFgDX2@1K`ydBTJ|zEP6tKj} zEXy1=8RC&jkOe)WCGtv)Z-@vi{y@T<6PhHiWah5!K6G5Q_^V8^zS@H@$>tSb=P+QB z7g?x<5&PzjbYi}HpX<=(2HUkNX}Nha*uJfG(5D78Qm^S6tQ)o>F~>g7W05%Q5Z?xh zTM12M477k2M<+;r4=~5!v!aq8O@gL6c`7w5x%v=rI|3#b$syP{0P!U}Q~+PfMIYB# zYxvLvn55l8y1#LJc3%vN><$Q^NQa-Xbq)8n&RoWHy>g_d10j&o1O!r3R_&}&%4-|^ z9nE#MQ=K3XvPJvJ-(kV0$6-AXeHuU*NOe+N zHVg7BK#1)J6R7TGw zy`CjIl`(i}=jZ#oO8j|$sZ3|DoACEE|Fr^nF~Pfz=Y`vu;HNvB@lv8(lEwQDTX z@b`vht;*M1_xE}ZMqGh}|F^(tL7{*oTn;2y3Iq|sbWwZLP9A;ytk~h>>>uOM;n`5b zKnyZO5@m&a2uNh$j56Tw7^6imoD{*BJXlElciBtKOG#KE`2{)q)i_Z2TtEmDvaj(l zA>y;$BnsvLSclAM6jT%%fC&zT^h@;Ypnbue*2@fCIkfLej1g{AWw0;G$!p~7{~(a? zs6MNExOT|evCn&8OP&BB#A4+SyibM^7qqE3+=R?0{=OqYhqNp6i!4c?QBxpESuPezzf$HhZS`)Q{CaA#;! z9nH@4x7$Y=0S64$k2(RV1sSt_t7q#(mJt$U>{C`nZid4LEZuiNSZJT z7Pf%>)7^Qhn8vRM0-3nrgQM*9@zW{mc6U?6Zrw&)RZ9`>#P z*FdBtqT9yuO&q&qFA#qHWh-;L#3-cFB4;nlqkV0ygOC`(KHIr{2V~JeK*bBVo;&EM zf-M2ENB$?r(;`S#iOaIYePKh+BqbgR5orutyAGyDo{;}cMZD+;q(bvx3nlDP9?Nqh z(fYB`JS|e89}CfY2HBJ6gX*oWz@?yL$Q}hTM+*uF;)}uG!5E?^@W9GVCA`Rq+IGnR zg9hVvpG*MsOc!;JY>RlH-0Pjcu?@SblFFo&f8<9m3Gbtbig|BAAl!o^*;Zo)=#4i~3xzz9-(s;k~r-1D+ z)^;1lyoyBw92OSG>@d1ij7kJBb{56#axrjIEE?ip=PVOT==PsK_>CS7hsRsO{xBy6p07C>!Nc80ktVNQJ~7 z;k$KG1J9CCCkK*qay2S#zD}hju060gxG}^HYDz)GBoOT7`t#wmbxha}uVq zIZy{|QYbnudXg-GrGP;t{P<`JGGg;5D{^!>6*>BB8(Ljuwl0Twp)6YqFX`C(;eU9k zs9LR!%qMR})*v|jV3(mYDvyG4*c!!LXv`;30-8boc3B-wRMprWRK}d|XUzR2b_r2k zQ(9dx(bpC-<Oq?NA;&L7s-^-@wm1 z@$*;V`8V-%D7PX*iF#V z3NGVq9fhO7nG?L*9N$ zzO$>=RcfuZ^)yxyY^PJ94o-!fN>#^HQ?awOyrIip(EvJi1~|q{zJd6V0B?aXA00YM zz7fuWmq_$WlES}~a=$K$zJ(|~I?TThzZZ@=@;s;r(`O6J+*7+)sl#Lc!QAGqs{)fP`p>rVgB3_(6H)g{mEzCg*oNEEU! zlMnnzwamWX(YCA3USB3o%Pdf(GnoyQa&>K}Vz5&ot!p;J%UK0#c)7m3aja<|sFDG> zx+DJt%;rBu$bUvS8MyFBCV*iZw?UAljp8z#9YV0w70i`}uEUT{xwOwXs=at&bWEJJ zcaKxW{wG6pQ7ZNnLl!bukh$viKwojcPCs{adGlbmzVI{325Y-!$_LUm^4CbVD3hv2 z=Ok5I)W-Th(dsjA!!M4&FOE=VFttS5a!4BA$poVmC)05rff3 zZ$}?o8ht?g(P-3a;a@TTvyT7S&j0M-e-83L`}m&&NxygV&n^7VBK{|wVK0dAZ$rho z24rR|rzKW)exFjgGV1LRcTuIqlSUQ!?Bv8YR1dCXipnmY1RZ;Z*iN8`H-&QiDeyC> zsKFhRuVM(aGKGfr;_>}dA34@mSVLjE?2QaX&yZTLk+fJdAjg9(j(jEZ2QUvLz-BmK z)_Bpb+h!i$bJgOB6ZhQ*A|X5S42~08xvXRx<^c{cNy^Va5jRMxwPVyQIp!7<0mvmZ zo~?$U#8B{;nePuQK^4Jvx1fq((2*{t-5sckAn3?8Fc6zhT}kkZBEw@h&JXJH16%o8 zg38{SOy>wx5@?+5l5`5`smO&iDkjK-tfLNewLxa_#RO;zb}luM_g_CoL4iS)Q~lNq z@ik`o!jD%}P+j~>@u!w1jfLk?R}gs_3PVqWAf}#jZ9cJGVfoC@62KehFv2M1F>g4DvX{ zC3^at1OcW_2=H*$ya3>f78>N5KAe42rbf+2I{g)*zeAZ^ zZ%|k3?{o0=29edsERN|R*@oS?xE*JSV(n6J(cqM^r5C+1YY_LdR~;~;!Tm#UQ||F} zoLB9EYglp1i4!MPLoM2KR3Jp2p&$x}Q;INiBEF1f%woSfs#HORLdsXH3ZXQs6UcB zyl;+)9fO~+g~EYs(KsMqkf6Wk=)sAdw~c>e$B~a&lyLE_nI}K@xtr1#`_j+1Fd^~> zoUveno$=Si9tY+UuL*+0Z#sUUuaf=cJn7qy!h_ULUt`09nuQxtM$@6!h(Io+Mw%@0a~Ce;M81bBEFirD zFI)@@kA(}d9U8OSIa?fB;~=tq^Z0?GJocRl;$X%XGp}6o%+%2R?at6#2IY3O4(SGr z$L42Oh?^V3U64$UR(1P7h)(z99&>+vW!pr%TG`a@tnOY~>?86}hM+O>B^*UW*(Y(> z7K|{&lu)>kkWp0x@Qq0jMO0rhvv+6*{gs(-cMPsu&#-ir_KVkFe~W%=r=X@GJMu+J z1P7NZiU$$7?~H#XpLNIq-LbVnVZ%MBut9ZX>Hv}y-|ZMVXK};K<+_t6PTZ>5(Y2-2OGT;pgHk0LVTp^NbPT!Caswob8wYgB&oi4$K@4K=ToVO+^WWFL+s zLS~NOtm4ujA&w{%DquBOcr?#MtQSaB>>b~S7JOgtw|1JaOWyh70?J6%e_R zmvIFI2hgX`nYaof21TJNi2hpk(M`m6T7F!rx^Sv*f-c!Fr#{7|zfexbY9Y?BZx9EF z&}pcL2xjU|2ZO&)*Hl~l!fFUWT5v`rVX_iy+OJUJWBUi|*`HoO{6Ie3+PhCV%nTgt z2u$j$!v7Pkg<#nCXkxLxb!Mn*m!qZnZFEIEk^6BmgbhBNGiaoci)`g@1~O*&BREGv zgua$wAKm))j!QRI6j4$1hWP8`-o9fbw;1pe`LmHha8CLSI0z|2Oxffk{;= z;gzK>m3XNj>y10f9$(6835Zp$t(J(KqOON~o{vL)F-3*2fM^^UjB(_57A03qTzULJ zkBNPDjyRF?r-ZtR9eLqxa%y|{ZD9ZtMDI_)%v-$q9JLdX_i*imHlEH4!Ke-iOK9G*hNGebX#jB`d1RI575jd)kggdwBKi_R!GsP(y=ekyic58F-4AE$%cPBJCvVPPZ4<< z*Hh#|W+db~Mz0=lG~%*^nhJvy!l3vPayF73*Hl0i@<6dN^Pf{clrYZOCa9}86l~|} zD&BVfwK9$B?|NQXRq+$O;g>fO_2Z5#R9Mk!{!Q?8R8*l>w~ao93oFd19K{LzgR;Ww zxdh1=1I40qKw8`egR?9IGMO)~;6nt|rt94Jv9ESD<|%I6xGaSn{YGQ;ZyZU^0tODy7IdHLAEo)Y#^SYYOl_;21%m?*aitgYfT)Ueky#$+2Wt`V{LfM1$ir}?*^$#E zDm2K(6yilZ@EIq}VlFpI{fjHxc&$NJ!Rxd4iBY*h&+hiXgsL=kxxv#W{lnL78pQ<% z%?+nh6dWibXCV3dEr@EPU^`w%InbvRIaPMV@c7npsHN1XC6G5LSdb9_vSSB_@&fFK zO9aty;>iW#Z+mF@p;1eBC6&<;d})HcKF#KWBHQ|gZYki)$P>Mz>a_H4a)opY>V(T_CeGxA*(ElJo&r&mgT{0BW}?#imM4{yzHr87V4k4aRFXOz?vDV z)K~!4(sgO}&hn0W9$WK4!v&PkTq>d?ZzO%s= zm#PVuU?)`0div*RzH-)RaO29^o_VGjY*95BeE%Golvdo$(A^9a&;F%S>}ZAJS++g4 zeqj5B!7O96iWXIOYz`9aV?>To4wm1{V0Hznq%G7r+!O6@#CC*1a;&gxa2a;0v^)+P zPg2xHP>%x2ARZsH#DMWwISPiu@23*+a8!|UVNbm*4v2GLxS%9uEef7q8!U~%;MkhD z5N8cEp%SXI)uezDvGVj6Dz6QerBwQ#ocYR@gCDCfrK9{i;!mEXHU&}sO`L_8g&Pcj zX&8-!ByzTvkP?t|_~TSS_bBnOf`!z%AVRrYb=o+}9hMRMC)wA*wa$+G3>T|_eXm8~ zKLMzW^XyQ=A)!|(G&I&!tYr8tAI$zZ6Ji7Bs9I^;YI^ooa&6&CWR<--26AJinX+(2 zh^%Y~=8hMy2pjBd80u#4;u4sI1uPrGyTdm?CIr4ld=U#^1VprmC7HI!)r^@i36(7E zO@EmAZkqZm)hwQ^rblleQWUiCcy}jvz8fxRSpx-fZ~`Z%&RNy69tysp%9iy2a4>&! zBYz-21OW>bPPqLJP*RW*n{YD-bTK}}H7+;5wHDoOWwVK2D%r2V?Fh2JNQSn><*G;G#V=<=w8M83wbRca zqC~z&zK+Rb;^O)!Z`lY}8p{qSf?11dQ-oAZzRrYw3~_LUxQ#iv4x(L8T&859!vs{r zEcS)gfZ5?Ih~eoEfL=!SaURWvRyhKU^lW%GuC9o;=Q#_eJ%)-ZVtsnn;@aW6;JQH& zl>JEz+s2MuvgwUIx%JR(yqpaq+|Nyo#cE~FiE^`>kT{6E4^oapy4&JJI)AJiFZ6uz z?$!w)p`gLf*)i|%W-Pz5*poc&jcQe6kpO}3D?nKiMTZdi#tZ%!==aviv9r|Dq(H#K z`!F8>3Qj%`_W>2ua82prTGV7mjc21!5E2&8%O8qE-^Ayl!1vw6H`MIUfb-YD-fSLm z;UfDElJAgSbPc|Ekhg&3J6yX&1RT=O!#6X;Z3kuSmR-atd4F5)et^G6j`W~A_3N!8 z>^Ep)sopU=7`mVp^m0$+ySTar)fjWgE)RyB6YRE-m%8f-_TFv8Kc(j=vK>YZ$Fp3Z04X8;(=D|!)^=>UjL z{T4P_$^pVr|0Y(J5Or!ee<0bbSzD=-h*wkJm7ld*CnZjesQ)xJm627zBh}G@ow$j` z!_@{3Z$NN0ml|#dq*_q5lkTkh)A+qQ`9>;tS~e9ueu7-Tc!xqzHF+&A-Z4XSPvDBU z8IM6jX%D+A=?dLFQb|0}a!2U1jNr0xw zN8mIKkY69o1B^*Xyg-CX6ET|zk#f)Tgj7;`h{RL zdnO7-vpb1P2iVh?UmwHuJrMs!9tcXD#ONIcra3->=R#~TR^*fJwXjcbA>NXmz0$|E zx%g%Aok_($lt{;3jeT1$B!CH%K}<>E81R3hNEWxg^#(2=F9Y6eM8famcj{rUxeCF0 zk9%+_;`w&%3Gcn{#EJV*O%cik`#E2?lbu+`7QYo>2!Vp;FGWnRL$|Jrneg2VaXFOi zq&3(6W$K5Sa=wb^YOZpJ;_7&iQ2HJ&+p)|PK6xX_7xFyM74JYBA5_W%3KD>IQVka& z3!%s$!j0&3lVEj-|G_0K7rTlRM%~-zg~S@wf6t zJ>Ew4y`OKND$K%lJ^CyUs_TKW)W{R$lkoX`FA-tnFa=I-lEQ7m)jiPGJU1mqehow3 zCVyUagve9;2?!y@EFbpbvyqSq)iCZ zrfdeYLDY?1=J%MgFU&dMH}>Wj@C{k&0w4}sc5xk^065qY6jvsIz0VHIT@yWn_2Ic6 z#ArZHUoLm@yy8$V3Rl+QIl_G?OFLK+!Zv;v49Y!!NqV7MC+ z%t}fx@C>Zb>2C8k`WNK(6cRvu;`Q(+DhpNuM1V1MKm+$~N9S(!>O(@Rpqz?dHndE1 z>9x({SyS!o<4O1X&$Ug2Z_KY!+S)dC-kq>zLZVDUxopcTO-ZDYh%w_1fy~=Y>C82~=m{C=Y4VSy6!+rqqyF^lHwHAdNBc7M;k!Zbx3UL> zn~#Iy(dPBiLS0&mC&d7g2YW2_b@dkkCD@A-caQa>8*D#(9|F*g)GMx_Op(VOzf zX(KNu;=R?^Ft_BWpxHV_x|%x2Qy=%%)tf4F*}s+;W6JWC;nL& zewv{#fhM8st7gZR;Vk`ymrH%(+5U8$BWUiaK0|zYd{n1*`+f7{x_tLkPR9cPz9F3J zHgR;~$dG6*dM9J`6VauegFR!mie)WlN`wmYwKaX~rRfrf**79jbw|Zdza9>iWG?@U-e;N)Yu8Rg5()X00zM_@c1)_0tK| zw&CU!Q0ttWx^HdRkeFZ3?3ED5_Ya!cAMYf-&kVQqK)%1&+Z32)94SP+_|LC~E6eid z+U)(xik)u%gkg0enFxfO{Rd4fm|JHD$s&V4H0NROPZIFIt#59%SJk#uvmYhym1CG? z%rJwZO`?5C3}XWzh!^&;J09hjv*>eBasaMy{dtTqhAH+Z7%E(2_e;m)y|L5u`=c$^ z&`gLljo4A!HJwr*N?os>d8Vvj&g~eGja_wzX}S@bYTqgBr+wzRWMVzRHP>z|6AYIy zmm5_LtqZN> z!;cP1i+`C-nyYd&Y*gx$vdS=HLFZ~4Vt#Wp6bz6Um6N&!#9-W&pO%tLQ13>#UX_ZNbgJ=dv791f~Pv_ zs%mR4fUB0;g4hWZuwc17&x@3V$=I>U;5#>NQG8d)_wQy-is@~#C?(mEwQ2sS#Ke3ZsaXh9xmvdbhcKF1i9@kv_jYV?e! z6aYP1$e5ua|Re+Tn&=E>=TpCKA67BTEtrs9XaWMgZu%Alk{@9u9>=Iwt{0 zPXW!L3&a_8@P7#g;c)afnX+8xFgt{Ug&4H>{pehnIV(+2Zo79q#GM*+jiM=~~5H3KkPDmLv(| zU?eKSWkXUpl_ZjMto~>y&Dt?v7XDRP-dr1bJB*Au^M67Hq&)Gykb(g+MMW}YvnSP6 z4Y~@R1BJZrIrg;#$~@0?k>nT$Xvi%kiZO}S4u4n zhD*#}IH#u|$&Y&qgx%?yN$KZH#H(j|7~i0RVJk3YHVJ)#)u50>0-vDXON_TBgSQW~ zHOjiW1BfW+bO2E1%8+OU1BB5km5m3%qg<4lOj4wTkfhX|r@{il&;-44lzeDTO3O!E z-$-CKj+?}&8$vZ!^D{}@bY7C`+`fePPrNTNu>&NN%j!=p^Toe-HS8+`?5rWAE#20d z>^Ouw6Uh_agdB&l9HUNU_e{01-%XN5AmwW+YRuytbI|@T5I_1DhHml8!vj%wYtt45nOCN&)aAl!Il4N&#{is7m z^?1TC6^16`bASPWHal9HTKt>Gvy2iLUDGz+w&s4;R@FB4yCgk*6TnXURvwYbvYGbo zx*_Y6OFjv0NVjxW_L$Keq$Cdv!9X8Kc7O-wgpnKA@<93uNp&C%FOK8M250r(ZTz4l zUMrUCqZbv0(buAuw=UB#PH75{Q|ikYMB|he#5&4l^N*&aCG}Q*0ht4}Kch!qYpKuF z%h@2}!_Y9<2P2qP?@plFThjn-!u+M&j0Ojqzck%%DBP=4H+#li$upGGxLHi6pjoSg zAb=q!dV0IrPbFVQXuK&t28}ln`;B2=6im36*;+jreDyvllsN|6{py@XK{Hi9_xmz^S%63H-Fv6hVuM5 zm@t&*vOl9P&JsL;O^iB|O8bF8JzyLlK;%fWyb_oS8z&Xiej->jiB@7RgR2OUUkIut z^s1J&Lp-3Ye1GTmi|IS$nmuEoF-qRRzOaGWMKVhz@$*Xdj|~0vhsOkDB;R_xe*uQX z-9#RLTA@2Ik7||eOa8QQ?Tob>6;7jpc|h6U+5G!g^0Ru-s5-SKv?21=2Xg->k-ob^ zvw`8=i?lRX9~y31Y$hcw4JvU3R|t;y(F^1bKsW{3kj7$h9B^_z1je+4YLO%wBQqqC zxJ_8{?d{qH)ACq$V`TjKz-A@$7z|xKbG?9$)HP2r>O)I}cxJeH(HkAHw{1SZfFd@+ zia@L2bY~*9F6-R2O)SaL1bXmXJ_<3Um;?%;IPzAYPy)7eUe}cegS4F97V~LLsn$v~OslZ1f;~FbRv^h}>8a>$#Ix~`7IYD|sgg71KzI*4Sr~onXGM87h|v?vTwtk=m3U4p*R& zbK&2Y<<7Z-qheCY&7C{*PJ+}&GA(fm-6xd_OWTw)S?06%Ln-(RwJ@xXpkPGZhsnYo z$RT|N$k7L+z?SSfk-PIJ5DMpsg+wah0(&V5Rj?+oN2RkpiH*C@MmOn$DAX4&OQfCT z3v)22Iu9!4MUgWf2no10?x!nAXal|uIfD;|qV((vT$Gxi?@I3kg3gGxfoeD&2Q$GO zSddjFtrvY+GMZujBT^nPE4 zA~9VMc8-O!Qp6p>XjyCJozE4Azn2yP3kxJ6_lYvmns}cqi}job^ZxnF=Mor~`fB)V zh?s?wU%c_7ejzad<)RxzUqebc+62DbZa{`e)WcXOO}-pKavy{0 z(v)OJw8oUj-@Fc-kk-B-IAMOPxOHgg{EjERK>p#jl;=}PK7zo9*UQCw8#?samkuNB z;lujGgE}|%usGN_5ZcHg2H9}(DI#p*m8`-;jaB0dYrqLEAMC4em?aRqn+6>95`hg` z&iUhTR{SG0Ee!K7gp1Nx)%5AH&=6`!<*r_IZ>QmNR10t16ESEbZ}5 zuNm|xx#XjJqq89U=jnrx`f?wd`>25-k@W5C9)ot@poZ%9H&5o~7t`t9IcrO&V)d;l zIpp!7k&u+fPX4B|w8i0=VkmDDk~v&v*wR#^a5Q9iQ*3VJK!@V9hhsTm&^$rj-4l)0Lr-q9Kwh7$`|t`%CLQU2dh)>cmwSVH^jk07IY06O+U^ zx)N*23}LS|q~xJ%EUcsV3`>9U?I?5V#Qf!4Zb{bCMYLxsGY2MRZWS~n5P#~m)kmTf zbByN}7E!9J7rJKC$F9FI{6chcCL$BE!$2J8GwmI|*@=2YooT&baOM^~U9(E>uYsoC z7kHe#>~EuUG!Y3fz}kwpT};S$fOS0bYaA8|OUi)j%D_$?5iN5(r;P^$F(J;28qgaK zbXNj7lE?Q-vOog&{GjOTznk*Bb12gt8{k2%+^c(?L>r9LBew zQmA*1v<@f=CmPp~MlRO6jDcU(Sn|u=VG)XC!S-41bU#Q5xQQ%lz7ZnZV93eiV(r@4-rXZ0DmF> zCoKLmyk3YC)%av6E-JJ!iX{m$@O+}wLj`F1NPoxpM8FG1TMGzi{5uYnt=%}*NSEB?f*t4|v>7h!?!n8+zCrd6MuZynK<>~Q%e zb$5(3$Y4%XXb+kf&ps|-HbgQ&soS7}jCLoD_>D>`Uk#cATvO3tv)8hx1vxEk9i>8E z<4J}{6DOIHC)o#*TmV`vkPSL3+6Awz0a{T72)d-;38lQHNeHXpibl01C*qN=O%`hO z=%QGAa`&VT23gsAGoS!keQ0iE6X6~;B0(=0iOf(Zb4_FxbL;>ht#(VMA^g)Q=ka8{ zdSQ5h=p8+*V5^06d~3W%m%Dur9(v!|CRZ%%n&_8HtA%{XgRS3Jm~E063)-sm9DN5v zfV_TlEj=;a;`D^+ELhOBN-RLx9(A4osYk z(Q(y5H@3uI5E7DoJr>QyxvF9*kPc=};@pvVO0J*=Nm~?4)J=F5fWkA7CbR$EwR5bm zU;EO-4E+kaV33`0 z0N}E`@{&-zeg4fUSNfgT*l#PyW>-C99Ukp=+c){Rj{5et{-8?GPCv!MgPrNx+B$!) zlWVZg(Rd2BVU5x_cC`i6M9}tnTM_pnqwJxz1C^Ee;pSA!7h{_gC#_F(8g;kdp;6T| zL0bB^QY;rzA|RwM-U|z?NWlhzByGWJQNMC=JRw`WS&)BCTW(FcrXE%n&A8^-;1%fi z++oxa1u2#ljHXxPO73@P1W5`y<-}S<@In%#9T+O>5fDLbWpF%4Ij(q_n``CK?3fZ9REfVQI0Kj69%UbS54VCF%A`Y%N(idx`EX_HY zYW?JYUR=TcEZtYDRA%kZ39zB9$GVs8>;a&pwv zOc+S;jVn8J_6eiiK++Xq0A;tUzM1n!y5DtQ-0LQD2^2e&p;cbh2XrNaY@ zl0PUE=Qx0=8a#|ZJ0u@M#{I=fi+}>f#s&Jrz z&Ql?^W@^dR6-cq^;PCjYSg-G2n(vj{{Pr|ejkUsG&Xo($Pr&x;phCYrdHYeWU2nsp zcm0-!+h49p3jrxRcSTc<2JzCxqB>33_wZ>uAQkE+89U8`y{Q(YXQEachZHc@sr?@j9Rovdl{)!*M+z18?iWv$gG3RQArD$KF zR)adfK&~t(cT^MVU|LTwyK0cgXTKbq%*-+9UtwcIAfk2)PYCg6%%H()81E3o3QVxE zpIhup*AwfBxWbDNLntfR*SYf&$+6UPr_=Jkmy#B@Zy#~3D?B7ym zI}Xo2mtrTu=K}m>Y%EFXkMNRF30o|;3JFmjyj_obk?awwX8J9pnoIU|?SMpqbR|-( z?Dtcxm_7|628L*3W!oN21K7V(z|GN4wP0cTA-Z{yH|aC5=myAM5-hqLW_n@$$*(*{ zdBMHI)pp4%{~N#Zfjvg{S4+fIL~H~1rRs^AdISD8_6*^dY4~ldnF_|40lH4k3_$i{ zKzu7~0(ZVXzjz3z;s8j86a|3N*F7Qn%Nq(}ENv5Oj?bc4LneeD!po@+O?yTOW#hFVhU#1nJtt3X`KU?3T!E^Dh5Rciolp?g`A%RnVWiRBJ4h{ z*&c$sQ6gDX{$|JIZ|k7kw9T8aFR^I#*9Uqb`&_WO_Qf1>DYYoJ*4H#8?TWpz=Q+Hw zUZ>g8-AZhW$z-g5X=ET4fQiT#`UpU2-b09=6%NA3L|*jNxEq2IE$$(QNWU8ub-Rr< z$NLkSEYr`g9=uFP^RheqzjEq;S>DtI=3kGS{3wOU_O-e~N!toPy=y#ES^;iPr%E~L zcUe@D1`F{{vit_u8JU1p$jy%{9qzpN{UtOq1|t~35U^8$g=+`H5BeOG?Dn+JDa!Zw znnoJ9sea@Kj48Onkll{ZPOWp*#?ZHghui8_J61BF$ANn#6I~(bYS3o4xy!pO2~+-N zJBWcGd&NNJh({^6we>o&#L5wm!g6gmtir{v*W8`t^~StmtZ|Bj2o=v`F}DnzPizDr zz1v`QiPZ;B?cR5@vTVUNyeDx~VVA=`o2MPMS6OIX_(4Wo&#=$4*J>!6)5z#s1}pb1 zPh1bfb(_knI@4)7NQ>puF7o81>AhY<{^DnQ20~?37Cp`I76{`7wn?RK{X=->=PwKvs;s-Sd~C*}M# zlgR{7s=OWNj3o4xzqChhIsG<%mcZPO;*+jQTz+q-jjE|*2&0tzz9 zfNT!p2I2^aiXtN*%Am4{IL@dbGmZlO2WCW((NSoV`#2lS_=do!DJnuR0 zdCz`+r)Dz9=D0^JhR%k+j;}EoVe0c`XzkvLwqicGXu~qsB`7t8%HHCgKr1`wX(V*Y zIM*)G)!s2v$w9wk%Api4|BQj)BH)d0u}t>X;cjD9lh4*`*GpGq4zv;!guubXfR{lX zAa#&)1nghV0CCQlR7EF>2+H$8Nm8MiJ)&mz45gPX`9_Y&h@iq=-;~98c4)!6`6SB} zZs8s`RMj+0^cjWYqsQLk2@k{K4p9?xd4^m#xzf?Z0o@iCAUe+Y)Ad*GqsaLQ$9w?Sf+1M*xfb?U zM|>LTM$_2MG6gj;T3182_jJpZ7!e$uU!n|#(b<|22PiPu-->xs4!sq8Gl9qx=~{re z3J1~r8!~3^EemHSk9=n0{=<^}u75pu!pjEOk9mh?ap13I5r9xau6G^8hU*IEI(zw! zO-0L=WUvjaGxw??K9Pl7xYUcEGWJ#CB4)AESMG?Ym6HAC#BxYo*F0K(z42RC<<~|l zfS3*EV4;P-BAfKq- za}|9AesahEI2_+As9Yh)gnkf!qp_>dljTyw;GOWr71_OE8a@O%tM8{}6_obU(dI}- z-f;Z@9rm`2X#l=8_NYO3*;L;YogWbhAukkc9Audzn2?8!ff}7@bYFw@(}cdYtIwN} z?rvLAu>S#6{{vpD?}Nj(L)J;+5~7Tggx8XfP&DUVb*`BY6XW92rJUxKsb2M6D5+F_ zD!l(vdhb;l{n_chNk$9JD`(O1b0fLjJ>(Lz{HH7;ZDJqGzJHokUj@a1jMMXkYHCQR z4gi$O2lnS>wM}0#9x~0McEXB1Sxy(v#h#l%W%2Twv%uc0s_d7 z;#qq!dd|J@2!l$z0q7m!oPZq`Ja4T|1iwH8r?uOQneRiVNX@sl*o;Av4Dfk)NW#l-1Z@D z*C?O@eTHR5lKBp&_7xNt78~2qt6Xa+{}f?p>#7ddxLZ1_Y$@SBp;#sO4@ikr;idsu zJywQewuPMHC>v8!N_8bnG-xZ5D8sI?b6MuiAWQ!e4KO5*CGHb(s(vNx+6p0@$YHT zrx}&h8?E3++*A%B{;zR5{ytiDj7W%Vdq!N+L?ipl%jStdikm7IQZcQw0|xdLp8`vF$A=1HYT$ z5_-O&)n78vGeNO+|CFvfI|WO|^GEYIk;>~rIIrGM&#W40d>lPZNfEPvOSq$_gWUz0QWJSUY>f5&PAK24_XDqQbEpzj_h{o&_ zp#^KKOJo4`MDmO`EVbU6@Yq6I=gWe}M9hf!7VgrKEZ0LSAJxUc`0>g`!z z>9$tisBtj!`i0qL@)P+3-(ZQu+S2Y-lr(P`^Q3t;9tC$6xdtybxc3e@BkOfTbydFk zU=HgFHt+3SSs&3@1}X!Ah(FEXY^fV=AUe1<&Rpg}Afc6;y~f@yPL=bfYdca9A$%eV zW&JK9W&S-OWsdSqjQU{ChnJJmy0A=td~Y+(oUgLX^%s{p$El}G`j?=fhcsa1wg1kEa=s zMZEB5=CjZZGKe%$V)wdaMtu9r#T6>vrkG1%65jE}?G${13`q-#I!;d7~kg$|)`<^I!}=at-wCLKhw z!B7e_G@^@36dq=&;ohl(+Cjq|9~?NYC5L(^53xhWyRJHP1~Lh^(tJjBB3#*eZ??4ZBKP8&XVWx- z#}J!i$zN-KS9tyY(U5oEIovyPR71Se6-d=LwMK#+%h|^622I}bk*Ogzr+qrp+*4;Z zE*?Zjja6!$-ip3Pmp2rEV`qX}+YiTXiU-Er)I(e{iUnH@PL(~bH{#YDVr1CtE#3m- zKYwPVp!=%G0;4L1HccYX6uW0OA==FR`gxdrU)M5~uSM^$5Oic^WrA*P3mq__hw$LR zxkzz#L9vZVv*j$!81(H!2Sx=5>?_Yhh`wIRAN;Do2BnnoI?O}$2pjwEI_~}StEgcF-fwf#lMPYqVs|>O$ zYAi(PF`I=~pxplh5nmT%lL~vT7++)vhA3(cs>$~HR|<-0?Zh>G{sYal{`P&A*pphO z_E%A#g;*F}CDWD$D8GN;ppJ+>JKi&VnU)&wbk4Qm2B)tam>Dq_sSK*33YIC)$?B=e zF^4Z{Zdz!~HXpb~b1oRX(&1AZJk2BpSWj(7=dyHxk+ngCu6?9-7{!D+7t+ahf#y>1 z3Q^M&e~HNjF8K|rA;lYiI>aOTk!9L2FgTD?FzpUc(3)=h-g;X9;eGnpKe6Nw*w+Vw zks}&vBs6ePyKHaiTV<(cd+S6xdCywvSa+sr$rWn>>5Bv{rj|*IB~))RPOqn~!QK5_ z>-6=&-8ovr?cdJm@$1qX+`Wx^hzoy+Jxcx~5P?PWb)d47%3o?cu&Lkj3bPuU)AgOb<<-TOhL#LnXJ22ZTE}Rr?C$!?ylUrS zL59}~U!B1Sf%vSm~4^Ga~uAG-^I#$Y=`%-9^^Q;ui7&EL)b2aw=D5fO zzg7H?#xwaa6!Bl6@(a5^Ft)%DG*Qsfn?jt8J!;=3QKvoG4~QHGSo(!uMc=i2VSIUY zoS^)z{fG2W&5tgB_2BeKVRl*uQ@WQ)>nN{fnUbQ;E}bDUVHfIz{MX z>>8y~dmUAcer)RFugOrN@|w+ z397vn><^M^FgT-@q5^9zlh$?YfGM+YHtb7RmDko)uqmveJrrum&`%t6uXkDsrY>ta z77U(ng8lI~OC&o7Bpa1KTT$0w!tJZf64j+jCg#%nMGHwqug%5X_T=EIt+diZlc28V zI@-FNjlIF#yfH^;f=(N7H+j&ldi1eTmi&hH+qnmeDki{#XsK%+NzWqbxe22o(A(`P zC%S!`)6qT8J7MLUb<2x%)$}k+Hr|{852k2 zAQAbvI0}a{r**h*vlJX1KhiBp{2BQPi{r=RN6$s3!`9UwSt9#s?bNlsfdf9;c-xvK z_A$v(H?*7g3+E*NVXV7pwk?$!3pQZ~=5qFEBs(*Fths5iHOIVuHG58aYT?W+hW3$~ z;U)w31MwM*0&4Ybg&dy9XF>kCwL6I&l zMgI!WmA}(eD0&8xQBcr{f&IB&`$)@ z6(R-Fb4xOsFeSbU0va1so3z9}axz9%_$(dKF4*yO(_$xg;c zERvpDmW|}3q6ki2vYSqQ#mQ-~@q!P4MT9ZN%Liho{!8(*)9-KogK&1@?d?1DlN?@( z&Ctq^lQU1l;X`|-k>-@TAlvpY306uhv_k3u|I4_|LY>gQM7_LY`%-GwN$H9f%a_mJ zTN0^7%}blNu*}^T*SyrUSF(xaipvWMleRA5=b}b|NGlW&rUj6MxZo)v$svQhJ>?t% zCKy3r#*Rqk>d%VZ3X}q=d|PIyZ}=NvmnY@W?vTup!TK>4n_j#bYbUXR5Z1*l^4f`g zoZv`iCtR+~?L?={QuyZV*M?S@ZTW?SXV{y@&~4rA`&laJ&9SiRtyV<7SZsOb_Jv_n zfxRZF2vzo1XZa%I-A02iph}}SAaeDkAVclYI=Zyygx~}7jbh^Lx=^A)f$WZa5Wu0i zHoL*~Ynsm!9koFBL}M!7*K3OQAyK)gfx1y?%J8=$ID zkJHCiuF_GX113%3+T}FcR(n57QiaiHSjvD4Twk1CFdF>b9s8zo%pLQ&L1<&b?Rhkc zYHMH`E-rV7({c427dTW|ZREP&aRe9_IRx+Zqqv>Z9T_^PqlX7AZ1KLc4C|}-l$L1u z_}-qWbT(S8rN5V~8SnHOEaRIUGn!gLft3k!o_{ts*sJOtP-)=X5I|0Jocsa|`hIh<&k*IDq57J@kKJ(GiQcD3ycjR7g6L(gVVpFp5L}90aFV z(oR-;a^WgaNwE15ZSeyakvv?mnaR@MLCs_yzzg&>R&-Wkp~lT*fEqZ}V=x5kXC^t- zyI?7}^4x>L*eyz^1=S;PU^i6U#6k(O-$>l$NE6A=j;d5}d^GAUW)c!$CO)4GWYJ%H!v46f8xFb187b+3zy&+v7?sLaGoB8}xJ%=fEG0|iptsyh$FunXE~$@oDgV+F!pGeRSX{!WM|Rk~7MY}z z-Y^W{M_&||t&#U^vtDgJlAAyxzf=vmUSLc92)B+JGDSTG@0-uQB~=72v4kyORzklC ziIgC>tYnNzv(4?hHm=4@kA37%?0i`?ouyxT;~Qn)fR4;2v@SzjMDo%8wS#?-M`^AO z4VyAs1073q=7O{9#0$aT3tip@o!VN{)yf4TDiq8&fFkP__K1tYY`hcN=~5>OBYI7) zVge(N6c=MfCVGu>*paUzYhHe`7Z!(nF5Pg+L};8!t5{v-;Bm2HHh=jBV!ss#Qr*3I z^1A~|uw?5_^89n@hBFHY&0^##L$p!8Y~_`D&zZIS?EbYw1MNCPa}D9|7b!h8PrMwA zz1A_*HM%?t>pr0Aet9s*i*~CZx;b6;4A8w-Xq**kPUfoExAs%M5%*Kjj$w@Vt0~%d z8Dsv;@oVuK;piAk-?OEU!Y>ToH*YDv{2X2kte7+8&iY$8Yngy6$DI`*IUEEu$ROog z%K7Ku#9<8wS0VcEpm~1!Z5MLwHhkX5~Ge+6S2m3~jncIh1bF_-3 zpMCwgtdj4N^yCQO^x@Xtuhe<=&&2*f6H833dv3VrXmf9ST3-+JS6=^k3RF;o18C|G zc_AdT2q*jt@ivma3p<{`;ZQihOwx0^(r$pak(PHvp~mlP1z;i$fnzg+WxTtF+i0nm zsk54~W(2;0i?ZmcUk4;7LTx1XRV1mdM5hsQrUKT6V(T#YEBrd)vdv3bdSN?{G48Ki zad~oo5o8HqHmc#+UZHb2Da?kGlPa8Ej63X5UC89#I`6L+Gld{ozF1u*)!69jN*!iT z&BI~`J(=ydPhP^sf%)s_7|W;64J;Y!BJ1gf&9}7-^ZIi}Ly&+9DvSaRUvD(j!`hIg zQwVKiEyqzhHHBloee*@xSDba#P7grO%Km*AZ3C8w6vE-dpr}@O7bK2Ujork!H4wYV zU`t@~H!YzC{xxWkOl)CR8zn8wgUb{_$Hp&;Sk<3jk9GpJ?-n2K*rt~md7Nq5-Lj&- zQQFiDW(Ri7{2KVu2_{vnr}9Q88AHVU(l!^ohXa%FI%? zt8uT`kL$cgrYtPa1a4i&Oq#kfAPB@lW-$_o`H7ie>^I)wj0v`gfW=1xU4Wf~Z4;LXAAo>XzH5Cj^2+uY)w_CB`SaIgH=y&zz?q3yMGo;-3 zhn@xA@mH9&lRzL=1ZPfqLy?4ie_-RFw9FiZ*sxt33XDG%F&QLo_XeCXY(%)pE+HO7 z9R}FSOJ=n3I4A=fMFGN{8{6@X8>>FpefC=2(o0!nU6sFw=p)=~9idSQZTqGcBjFEb z>93nd*nhue$^RC{cqDl3Xp9HpwbwYC&+cn*ehhYa*G~ll2bzaF^rqD{vmrb@(mu8F z`Cx2DU(LhR06IHIqyvb=m2^o{yWn)~K%cXX#43#|LdUJ9i>csTmeA-iOVx+_x1?=h z)Unc|qcj4yH7UtEAWJb0~c zq{-u>B>dnTxc=b6@JdYDq0J?0`LYmoy+2N@6~T$q*oC3?R)S!<;mE~x4JwV(L+S5O9J$7s@3ux?{n8sm-D8C| z%F#O)Y}KV?WaOn}6xh6#Z5jP8lW}z)92-WIE_{)C9ggjU1i9EBARQ_cB?&o=0#i{w zT#QFbp(Mxs0q5^TW1+&INIySo*p$-m8Y#)0brcm8{{2G#Dy12>6V+Zyb7H=Fv~=jQ z9#gbJOFfRp3}ZL1=N6YST3eI5+F#P_PGQw`oh7YJ#G8=;Lx#7jprt1E^wVWkDbwqH zU3y(>KY+tFH)QC#W^yyVX!bCcG8D`TH(2s|8uCj#MHMxH@|M!-T5v&)7oH`r0eTUj z0BR?ZMl1Ndkb;oSQwjqSC;&yzguF(3d+y)+$5RPUQzUK7A8K}X&TE79!@0ThZ9UUe zYQLk>O{QNl>(0~1KE#6b-(FMCq?S~+bk^^!?(2&E=C1OFu9l39rf>?S_CPCNZ-AHw z34%(+7bzs@LpxstH=}`%q_%Q=M*bJ~2`CWmNoZEI}XpIcN$o4#-+WQta^)MM!%E4(e?0;cwdVX;xmKq{5iVo%p~ zP7_^Jk+;lN8?d&NR@K5S^fu&V9zTT#LSd{j_6qYYAkhm|VbrUKsxfh6gFG{AM&j2Z zl|+;=gTG^%6u>$}W~q(&s@w~MaSH#NxR z0zjQdM+c>nw-U+81Yl|z%ua0h*=NDK$i7fXJ^?gVfsEm?*X^j0-xTWbQfE3{nJ&@= z6$tMAJbZKE-9zhue$-gf?NIlug>v&}o#AOJt=n#`fyaLw^wl6s-X42#w8?9G#!M5X z*V~`VP9fXvpuz&pTDGnw*Ig0){+-ngV?l$_J!Urc)aeZ~%SVIJw<~BS@7AIM;+fb( z&N~V!QwN^rcb6C_$wk8bbJ} z_cm_cKkFD-rv*VIZ%3L>E~=z94wo9MLXxS(lojz(2Ny6lDp3&qVwE7AL7C9LB%q|m zj$=73yO2)Z4su!yy=^|>Ey}qf?FPfK9PkJse%KWYbEzAz|IDcK;WYi)KzoErzjU}) zceH1oNr{qFj&7CapL^FS?h@>i8qwLtD*^BCc1o?GjI&gX&Q zweI!|!%#2iim&_ZR_hl!?bYc_p{>;gb}Dbr9x4k?n}_-Z@;>Ces|ZvX(|RDX>PW;|{`K4e7Am^a5BS}$w2`Rcu+ z+ERGrLBCd8<7{h={_tjNHv$0{AA;=Tj-0-&W)7tp6Sy6DAv>8|rQ7 zpF?dqas@24^&(So=_fH16pSUOu@mYmxKT>*`A)8e`_i@!t`4`A{bg1MYwoO>y9BAYQEj;>RE_ zkkCybPCfjkY}i$)<^rT^t)<5SqL+H0gwkCe3CyHdUe>o0bB4}ln?E>B_-CPj6K!MZ zM_v;OIHOnTqf-Ljfq)TS>%RJMW)?DGkyXF5zG-KE1${%4Vp+#x9$a1>Haj@b@XF2# zun9x_&Kw9d_eD7DIUi(y5fT9+nE;aeE-%s*vQV{1wX+5+2HqixPkX^oziO9Ln?9wbn|{fYxzrct>-qoWZw1X8zCGn(KmDC)Z4(&8L7PPr$vFP2%w z7z8{D2i?D8H)C4v6D80wI|_M5=wytYmVx|ki^=A!=d=aq@4AvT zHU66f_ZKe}O*skN=>hIY_E08G6pQ9VkRP0cm6yMzY?3bxMP-V_ZPp6LrR;+jwDWT7 zwA?49%sb9AFON;>-_@$?*eMxH6L6rFi-VJ}Rk8h6z5`pzV_ec<_5hEYzKW~E`Stif4;%2f77&|eUc2_ol1Wa^-= zn98_vtZ$jhxPHzzf4wEM(}vLqu4b77yFep|HhUZ0!!X>{P!WV~5E0ZDpb3nc-es-T zr8A8$Plt5Cl1QY$s@^Rw!F^4zOHy6!vUOG>XA;I^eheJ5qx~H5!5`^(OfoGaSkzL* z9ui8IFe#H!C3^_x$4&t7*EyDc5YNk)BvPI@GBfCr>WW5$0JbjC4agUMm%bK`--SxW z!tvo!xuh{}s!N5(l!yys7Rg@} zZv26z-`G4OIXzBPNO8kXwQ?s$TVbYF`DP@Yy2i=9Lnub7xb#bS&y+ljO4fRpc=9dl z+X`i@`U-MqFjyWXFL#^5Z(@bR885Pet9@_Gu&O&{weO9eE9iv$IBwRH6v9umaSCV} zQZ!R5Ns8i`&Q3Q_kF^k1ru1uYSt8`QktlT$d|@1krr1S>Op$1^l{fX1^QVVvW8XbW z5MN_QTNH{=_fXC^)zrBXKh_v@0cd`M<|om zHP_Ukn{q~KC%g5=skQ1l@7~`9W77_#1Zo^e3E+C2x(p5+jyI$fLbE4>C`nbB&zmRkg^bb|D9 z#;^~3QLI!XU5tsHbZ~zVi}5|k+x0Li?w08jS{l0#d8yBq(a2IP!L=?BA6|s*8@1JZ zN8{xz`5JUIj?wzNE^VY|$8bkuGzEy}8wD$HrUu#@J^MP$7MoX-6Iq$;F&L*;>;t+K zTRq?37=ZG@lqoATjr$v8V<4{pLC0H7c&+M6pm!LGlt-nnRg6Cp9H?D1Zf;e`Qs`H8 zo~*8Q>2>6NQg+-R7Vx0I^BiQk3(JKn-nNx4EEpn>BxSEPO%~?T>Qs->IK9jl_D~aO zyt0?92Ik{f=ByMJTdBCUNnCs%Z*~1^c;?!sNTyVLZ^>(B7s0p1$aYn<&9h435=v^j z;oO$>wHqYtLuUIO`b(g2obbj(vn}K~#fUFavq;mU3OS-QNs{kr`HxBs^ofdf4}eSp zWao!*^`}IlJd$mMbYtBa0Z~Dz`Mf+-TsSPZ%NM>+e-#Kp&1#8+#530yM@oi_6xQ<2 z?2|)lOj`aorNo@!h?!*Rn=mm2TN0z!KX*5|GGfl#i5_GL>gg{4J!pFjHr!H2KY4bM zBTZ(~l9oNs^JOWKKiOSw(prQp zAQbZ>NH6Yp%Zn+Wl_f1f6*4AJg%hy(QkMNiCCP1r2Oi{V`_u%4O0erwX$(@X5m$c_ z>Onsky(=UA5OZHY=U%(cZ1&_q@lu@|y;Va#v;FSR&BI&=xz}#%+>3lRei5jubtu)^ ztTT-)bCTTKm6cCZnhuBFP-_ity$CdhlA6da+B&eC022N-FlT+wrF*WIvPaZ;etN!e1&gTBK^IP0Ga8Yb|D1KF7q{H00BX8!mT|>e_ff;B9$V72>UAX=s{zAkF5B z^Ecd)nXBY)JZZdrE-XdDa#S_{HlX&t4Qau{0>e>BL;zfY-1*;3D5Zl`;M6c_NGi>R zMC_0A&stbmOG^v}3c(+X^sPcVXts6jT9ZZK>Mg8PG}}`szj7_@=0V}*x`w%x%Z1s$ z{yf>&k)b2}LmI17Z;GrU$7O1*w=*kG$vs$8>#J6*sTDeJR5h+HC-P!JJRb*Mt?W6y z=UU)a5}W*2$|qkv*(SfJl+DKz(v75ghdi8>jo9 zDWOsk`0_HPt^1M0=24;ijgPQQ-)6cXOej@ENPmHcNeJ~Dr0jZR*+yvBlI&*{`nFKa z%8gOOun?rc5NQ3P@Z9)ZtGsz2(VR<4GGeE*GDD=GRc%MZG_c?J;N|oeMYw5gJx~nm zTe-NEYMWivvhTmbs&gP}Eqs=sr-xxz>&A?f<~?|ED<#eifo8huP(~SV_0YY`xPX?p zLQnUXG%9m;?;N+Xl@ETZAP&-MtDEB6TYm~1K{yOT+Cgy65+VXFc_wIZCF%6@;;;>( zHJ((iD~R69(qE2G+C(3hl7_Am#%@+8a`+k(XTUx$PTk~4+%e?7{DJ-%oVbj`OTZ=6KjsR59s$j7QfLyC>CQ*{p6mKt866M%&D20&`T3-N!GMmzgl<4y^QnwjT zSs2X%*dJ6J6fcgSPT4Cb{=y$rr9gZ;KO?*o@oLDZa7_bS2;$cCJGY^~5jOAsa`sO| zWRiJEDy0nt(a*9>RK|nncEy8Sb4D!s)47qX;$5);+|QF>!VtjNG;hL$+UFK3RcI(N zBPc5L2qjG=a&eaRk1!`u??~`It^U|J^p3CbuO(CyznO8MA)m?y0A9xpBRBP}9`0|~8``U^EqcS~>J*^hPp^(Z^N6QjXR#Q) zY*@_n=`kBln?D}}mO=>|Dp!VM2HWT01zlb*z zKLwcYx-*N(Rujj{B<$p!O39vLf0a~d2R z@{kw}*ol*b%EyT4+G-L{T`CzdR=&9&E}WB&=CKtoN`+#`x_LP?>TWrf7bePT+fumU z!&tFY0>GVkMK+};zy2g6dIaOC;fC~bQ#K_ zi7TiScS!#}K8TW<{j}7Qo-Q4)M~kOW$@gXX@K|h3aaH`%=B8??7R)b50zB}F{BB^T z>}H_LjqNDcdlvTxq;puXqe)(lLG@tyNSX4M&VzU+R{tq)zyU#vf5Fwi0yWTuhx(Q> z$|L*Ib(=S8nFIVb=ja}RK!`YSNp0>H>9E=L6%B||*d8+xMj8D28rby=^EB&TtCBv| zpMkzXNYU+=rX6Kf+rNzBQY$Wn;zkI$`@lF8O1o5AtS<*f?cDsR-7KB89V1l#f=a%> zy<;8#y7P60o;??EB?C6+`0T)u#PYAHa5wyUoa{QK;E@UpnVbvg|@MV}JJcMP_Ga4nCEt z&epf}Pllu^2UG^RlfDxRDFTr$g>nI3)Q6#$MvFyVDj5_7|CK|@#~nCaBYdI@%=a-U zGR*W%A2qR$)^(`Kg4}|f_Q}1(FxBSkT!dc#7SE_*D7|B?ZQ&rG(Yx|XN#ZG~zMgMf zxZ1LLh^0?#zA5kl_vf5$vF%M$Wfi9~4ZW4t<_SN-GWXc3`)b#QGfgc^IT;NlDLS=O zbvK-rrC<2&lLcTv3C#OT$|r&zv+?c)@3@!Jyl&$2aO5Xt8maS8Gtn|OyTVi+V`&fW zF8SU4#{ul=VH*R0vAvlx1!JFUv9C=Q=llwKN^+J?{i?v!60ld}G-4f%pwMyv#={HO zB86g=9SAz?z~L1JIm@{GDc@&^YFU(30AX!kZzh|^`I8N6H~%keDZF9a5=%h`Bg0z( zur|&%H}OY|9c`!@T24EMk6D|5y$a2fSHh8tAnn1KJ3)}3gP!xyq@0YuJ}~Ka`k1mK zgmicDXPtN>+5u;5sSjsW-nDu=wpl_O$ofK>rIbG&9ILsb))wmF)3Eh$7#naetkAh} zi-ON3q_NTc(x?whU?vDV98C#6s47KzGojhz&^eW(n>(;7Et-ij4mKY^$FA-$mE5vO z-k2006Y!Y$7LQBT$~Zdy6SsC?Vyq=olXoSeWYYf*l;vXYo@cb^K*(eRvluBXAfs3n zCmVNO{zx)E6r9)iB2zOeB(smczWKUMb-cdIlyhZdo8jyppM7bps01YUSA}_J>TEp& zit%d@hjloo1><>g=fs}6P4L$d!}q|bDK7~`Tq5WhK2g^(X((Rz^K#H0O_|G}DlzO# zD>;z>i_`3Mv~VnpRZIple}!2{+#(?3aM|Loz>(}Qsf2`Lr~D2QSJ`O+RWaFdsb{vy z<}?(HJN%=%;{R4uO1bx*oWXy9?_RdiM zO&4As(~Kq*h3yxri^M9zHX|7<5gpzYa0d@dgdQei`|Ci63ei(l;0|%o*CqHetnyJK z>19Zg(_HwKF!WC^^Rd?O{?z8_nPsd=La#*!ZA^2Ev&WQk8iAK=|+C~DKVR249t}o)zl*GdDUDd+mjth%WG5tTuLMOFnj6d{` z`Mzj?dTMED?Mo-fk>?>wAOPkxq5Ij|#2p>CIRC1^(%jw;s{|+r19%IBvM^TgDi97G zh`A(*DyFF5Td6)|;zX76(4`O?iUkcj3O-)nM7gK(+!sT{Aqa(@ss>U8oK9PYbd0=kl*m%&QF{fmB0`ncQZ=wpv z!e~*+uY*WK2_qTL+STG8j@*u_RVWul1pV?+jv`~iJFO) zSqqoi{1MI6?Q(Z$AHeeESc**T-RnKEXC)M2dM4Z7gQ{G2pdZ~NTn?h9g!nGp6YOv& zo8UgV6zv*(zZcq~;(N1Y8H%lBmk^XST(=;+Kx47O^H5DmJP#-^(v;T`nv-3ls%>Mn znx}U{Lw$4edx&0dUwY^2HXaEo?wAaEcdPt1V^3{h>L=RY2kJd`r_@iu1T&8V!G$n0 zYlmD7_fqkjg!l%zunIAil34~b^2mz-as@rZJk0wpGmCUeYgLz=GUm3;^f+b2P(^O+ zZEN9t8}WXEJ9B8Zx^A&kDwlCeK2&roKmwl>TpLV<8eL~I45$oo+kmjD<`YX>RPK@! zsAeP=nT*2R9o(JqNmA{t3(B9S>NV~AKa`L@QkfI`A8Wx<8}X(n+1rB5txhyJ<@^Y4 z2sito;*Y;l>psc9T28z%KaiqAf{hea3j8FA=Rn*!F-LXIQV3Rj@(2OxsN{^1-8>%I z;BO!0pyNtfWkExaP*U&S?@nXtSem5s8O%y)L>-vBTfNqZfE3HkHCN4sH&bBKIz!k@YMiZy?x+1{-yo^C?0 zWxD}iJUEeAlxE6wx5yPjTx^N~x9sH_M@>b!ZLAqd#f3ksR-iuR0GSv-wa@LgPYRr| zDfEM|V^W1Kng~-?s;^u%~J^3iCqE!97+A$XD@4Z5J zN_+6Eo9YS>8?-;W8)~5Z@I>-%e7<8#!32r9V}Nk(oq%9)P8eb<=czgEs!NhNWG1@9 ztuzYb8<&Zif_N3>wWB|<7OeQYCR0fr=cH|XFsCBNl2ehJ#9KRNGsy#JulX>%AEi?T3OJ;)ozI_1pXIAwQ z6PtUdI{Mwesle@x1Vt3ub%wy0EB_OJZftk&P06UNA3>WxNSM}O__>sk>B(B^*(NN51(C

CNsfxpM+rp4udOtx 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ξ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 diff --git a/fonts/poppins/Poppins-Light.ttf b/fonts/poppins/Poppins-Light.ttf deleted file mode 100644 index 2ab022196b0fad3910d38ae050ab6814be931799..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159848 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 diff --git a/fonts/poppins/Poppins-Medium.ttf b/fonts/poppins/Poppins-Medium.ttf deleted file mode 100644 index e90e87ed69a7ebb8d965ec248fb86286423f103f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156480 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%0ADRs4C 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 Ckeh!1 diff --git a/fonts/poppins/Poppins-SemiBold.ttf b/fonts/poppins/Poppins-SemiBold.ttf deleted file mode 100644 index dabf7c242e938c49fccd0cba88dc2fdccb2f65ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155192 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

+}kxPNz^nkw^%> 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 - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - App - CFBundleIdentifier - io.flutter.flutter.app - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - App - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - MinimumOSVersion - 12.0 - - diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig deleted file mode 100644 index ec97fc6f..00000000 --- a/ios/Flutter/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#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 deleted file mode 100644 index c4855bfe..00000000 --- a/ios/Flutter/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" -#include "Generated.xcconfig" diff --git a/ios/Podfile b/ios/Podfile deleted file mode 100644 index d97f17e2..00000000 --- a/ios/Podfile +++ /dev/null @@ -1,44 +0,0 @@ -# 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 deleted file mode 100644 index 2b85eb28..00000000 --- a/ios/Podfile.lock +++ /dev/null @@ -1,48 +0,0 @@ -PODS: - - Flutter (1.0.0) - - shared_preferences_foundation (0.0.1): - - Flutter - - FlutterMacOS - - url_launcher_ios (0.0.1): - - Flutter - - video_player_avfoundation (0.0.1): - - Flutter - - FlutterMacOS - - wakelock (0.0.1): - - Flutter - - webview_flutter_wkwebview (0.0.1): - - Flutter - -DEPENDENCIES: - - Flutter (from `Flutter`) - - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) - - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - - video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`) - - wakelock (from `.symlinks/plugins/wakelock/ios`) - - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`) - -EXTERNAL SOURCES: - Flutter: - :path: Flutter - shared_preferences_foundation: - :path: ".symlinks/plugins/shared_preferences_foundation/darwin" - url_launcher_ios: - :path: ".symlinks/plugins/url_launcher_ios/ios" - video_player_avfoundation: - :path: ".symlinks/plugins/video_player_avfoundation/darwin" - wakelock: - :path: ".symlinks/plugins/wakelock/ios" - webview_flutter_wkwebview: - :path: ".symlinks/plugins/webview_flutter_wkwebview/ios" - -SPEC CHECKSUMS: - Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 - shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 - url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe - video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3 - wakelock: d0fc7c864128eac40eba1617cb5264d9c940b46f - webview_flutter_wkwebview: b7e70ef1ddded7e69c796c7390ee74180182971f - -PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796 - -COCOAPODS: 1.14.2 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index 73cc0be4..00000000 --- a/ios/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,728 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 54; - objects = { - -/* Begin PBXBuildFile section */ - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 2FCCF8FFA935A8B445DC4E41 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B4E793C0C6AB97E98694E0EB /* 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 */; }; - FEED0212033556AC925A5CEB /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 12A87F37D11233017354E357 /* 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 */ - 12A87F37D11233017354E357 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 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 = ""; }; - 3060FDD15586F68F0D7AE3F2 /* 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 = ""; }; - 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 = ""; }; - 59685AE62412C435EAFBD7FF /* 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 = ""; }; - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; - 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; - 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 97CDE82F3A7B0863147C2061 /* 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 = ""; }; - 9FD54355D597485FDDF4E996 /* 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 = ""; }; - B4E793C0C6AB97E98694E0EB /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E578A5AC2575E436FAA45104 /* 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 = ""; }; - EC83D4BB5E359B0C4BD6166B /* 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 = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 2FCCF8FFA935A8B445DC4E41 /* Pods_Runner.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AAFB5E0FDFF8B2B562FA3F8B /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - FEED0212033556AC925A5CEB /* Pods_RunnerTests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 331C8082294A63A400263BE5 /* RunnerTests */ = { - isa = PBXGroup; - children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, - ); - path = RunnerTests; - sourceTree = ""; - }; - 498A42612B78AFA8232BCC35 /* Pods */ = { - isa = PBXGroup; - children = ( - 97CDE82F3A7B0863147C2061 /* Pods-Runner.debug.xcconfig */, - 3060FDD15586F68F0D7AE3F2 /* Pods-Runner.release.xcconfig */, - EC83D4BB5E359B0C4BD6166B /* Pods-Runner.profile.xcconfig */, - E578A5AC2575E436FAA45104 /* Pods-RunnerTests.debug.xcconfig */, - 9FD54355D597485FDDF4E996 /* Pods-RunnerTests.release.xcconfig */, - 59685AE62412C435EAFBD7FF /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - 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 */, - 498A42612B78AFA8232BCC35 /* Pods */, - DFACAB034407534F5505D052 /* 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 = ""; - }; - DFACAB034407534F5505D052 /* Frameworks */ = { - isa = PBXGroup; - children = ( - B4E793C0C6AB97E98694E0EB /* Pods_Runner.framework */, - 12A87F37D11233017354E357 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 331C8080294A63A400263BE5 /* RunnerTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; - buildPhases = ( - 71DBEA66C5D687C838102DD7 /* [CP] Check Pods Manifest.lock */, - 331C807D294A63A400263BE5 /* Sources */, - 331C807F294A63A400263BE5 /* Resources */, - AAFB5E0FDFF8B2B562FA3F8B /* 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 = ( - 52BC02EC555F5ED3E74029EF /* [CP] Check Pods Manifest.lock */, - 9740EEB61CF901F6004384FC /* Run Script */, - 97C146EA1CF9000F007C117D /* Sources */, - 97C146EB1CF9000F007C117D /* Frameworks */, - 97C146EC1CF9000F007C117D /* Resources */, - 9705A1C41CF9048500538489 /* Embed Frameworks */, - 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - C5997AD0BE01552A37D8756F /* [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 */ - 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"; - }; - 52BC02EC555F5ED3E74029EF /* [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; - }; - 71DBEA66C5D687C838102DD7 /* [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"; - }; - C5997AD0BE01552A37D8756F /* [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; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.hmz.devfolio; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Profile; - }; - 331C8088294A63A400263BE5 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E578A5AC2575E436FAA45104 /* 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 = com.hmz.devfolio.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 = 9FD54355D597485FDDF4E996 /* 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 = com.hmz.devfolio.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 = 59685AE62412C435EAFBD7FF /* 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 = com.hmz.devfolio.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; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.hmz.devfolio; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Debug; - }; - 97C147071CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.hmz.devfolio; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 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 deleted file mode 100644 index 919434a6..00000000 --- a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d98100..00000000 --- a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c5..00000000 --- a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index 8e3ca5df..00000000 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 21a3cc14..00000000 --- a/ios/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d98100..00000000 --- a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c5..00000000 --- a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift deleted file mode 100644 index 9074fee9..00000000 --- a/ios/Runner/AppDelegate.swift +++ /dev/null @@ -1,13 +0,0 @@ -import Flutter -import UIKit - -@UIApplicationMain -@objc class AppDelegate: FlutterAppDelegate { - override func application( - _ application: UIApplication, - didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? - ) -> Bool { - GeneratedPluginRegistrant.register(with: self) - return super.application(application, didFinishLaunchingWithOptions: launchOptions) - } -} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index d36b1fab..00000000 --- a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "images" : [ - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@3x.png", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@3x.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@3x.png", - "scale" : "3x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@1x.png", - "scale" : "1x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@1x.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@1x.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@2x.png", - "scale" : "2x" - }, - { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "Icon-App-83.5x83.5@2x.png", - "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index c1712897e3b358c415efd1fd1229f9e37b9abb71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25986 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 i|9#oQ|MnJD)qf=A1yDab>!M-1rZzg9g+9 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 deleted file mode 100644 index 5be198725a962d25f7e3d69be3e19a2353bb79d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 606 zcmV-k0-^nhP)loNY#jqRr?!*y>FSl z>mJRY!N4jY$RHaTkKfBIJiH8g{WHPrD;0SRZx8Kb;L*@V(eUm59fr@>uQ13&B``2^ za^g1-*%e=IUSnVt5(aun97XQU!M$Kw)X@!_R_q4;{_vjR=gSuiLYB4+jEsyZa_>$a z1&1-OrVjB2f?NjzJQ`Xk;(veqVEBCPGJ~M0CBxtE-@y@wGgAKl`^WHb!AypC#}9*D z2LdlPuZMdPtmfBmhW~&5Fnqdlk>PZ-AA`}H6}Vma@#0wqCKeV3rOZNx`?Dr7{CxeA zLA|<}frXDBuK3litqf0rsX#6T_Um(CGr@&w^Z2`lpJ=+GRj8^pjZuY{ox s2Kcn~z!(?6Fi<`&6{lii0M$!u0DkenvE2O$e*gdg07*qoM6N<$f;_|*-w_J^W1rFduMvjy&Z9U;GdlAKFf2? z`Ssj$p65B&ILCw=SjMFW;OQpdVznfI(Y{`UfBy|Lg8>w+tVPA|K#)amt@IDHDeZEwO_Sp`F30n&*CQqd?*c?+0%&m`*Ql&>KdTa>9`XOpZJ!o_Rze+{BL{yB~|?t z0Ub?up|R~F3>-TmteT;)2u7O?L+!^TAA5ZRcM{rr18lp9qSY&^xt-gO3rH$ivrcHD zg1?@T0oqpa0i(TtBhu3)+3v@lR0XFBaG|CyU6k4ORbFnNk&f@AXR~V=O4m25o=-Di zBn!|~QVL5&rJ_H*-m#M%lI^&3|uRCDmuO3>)3?N%Uo>=LAIYnrBg|Cx9(FMJTW#Rvjblq#+CQq!8D7Db+5h7 zh06&@FcWfMa9F9<`39^U_XK^2U8fKeM7M>=I_Vg z*Ply1?k9Glu)0QZaQ|lq5g!^5o{MVhQMr8w3Ou*4K)sQLCw+c^bF;J17Zl*`FOIV+ z#x2FUtDhdo_^{3I*|i7OeatRb9(XDNlaxVN$`Ylf#G=)cO=K(1;i)WDfRUbV znN3A1Pw9AEX6wx+4Okhe0-W-7$!s+x7F`)+%Jch$<`p#9?69uz@CUZbUulxX&3vR1 zFtdWR|J2+itnMly)QG;6$6c({zwUskXhg`V5}@}^RRf!yE&(#mF6X4-Bf zP{z`k%!)sl3mEZT(p+MZXwve{Tj4+SfnZYj3Y5VD%`CphpW9faRKR*1z1e8 zv1+7z%eMLbsNxhal)20)G_B$SuK(mK;jiAfG@lZ=vn~~wsGDC{7pof{@E_hniD@&- RJa_;A002ovPDHLkV1iYpNNWH9 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 deleted file mode 100644 index bbb013047aea271a5fb5281c6ed0a7d83f2aeaff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1781 zcmVJ z;s=3*ham#R7pMqm6%-JOAg|JHg|^hvcH3=tx4Ye^b8g+H_s(UzGkdFP=`YzYr@b@h ze`n^LGc#8oC%|2V{{MF1zh+$USZ7@DSZCA;#-tMM^FyGe2|}G65bo)Qyd_IPXR)O8 z{HPI(LfgKsf!0HxfxrG5#G_HsUi|#aDT_r$g%~;oLr_3)S$EW7$sI~$$+vq-v*6N$JAEJf+IdJoL#XT@~W3X*1Y>f@i>*@ zF|wuted4-`czYr2>4s3Z8^T>((BIw$!M0Y&duSO`AWn5~!Ak!z79aZ#7ePp_ET>`>`XGEq8IXIGfTzHNn2Rt2hrSyRD2pVBvJ` zIB}G+JC{Ad<=aqH6nuql-0lGLgo(^;_1$nmpy`IVd$wmOQnQ z;U?wm0$%qds3O?kaGjJzQHc#loo9qSfBX*da9CoqPA>(cBP%T*6R09sY5f{7V3Deb z70>yzl+8}+c(qVPu+sV!Nc}7iJgMM0{~Kkq&z{5Oml7j3!dOzWf~Bgzp^k2A)@;64l4#~mI|4q{OAf)f2m20@$8&+_bywM9A){%X1 z-M{^@2O`zb>7Zo8>tMfUE_V~d3T}9R)1X*Hl*%lB_`VgBRrdf;ouisPw#4k z8D-43c?mRH?ckm7NWv``uUzB^oa+~(y4GxgsBDz+=1^_81jiy_@n%2{@1+@H%*uuU zsoRIr-+r6By*t4r*x%@acvxCL^Hx|1uvn4rt9=TyC|$S&D;~OM+QB@jklPXKj8f=6 zb4p_KoI67{{Q>c+RxP*$d#_%iYy-E1{B>_u)dFbQvqNITuL_#??i6qPmB6j5Ua&Fs ztDa!aTfzj6d*^}CIf1(E$I}iJHR6~gU+GgS30?imOwlb0gb_+nqwmc zv*2m3y+P7JEf}+N#4C`j%K4-)P=6aYQZNh7UHG8*8?B6ruW8j}T<}p)%8W{fsHg|)96@fDRwsyrGR)HcwEs7xbdGFf1ZZoS7o3o;0~I*JSQdOYZ; zt%kLy6PoNiBpg1%oyUd#YJAARifwW5x?FJEtZFUc^0|Gn9Glnti;H($IRB39e}Q&h&xXbs!rdD z(id;wnX^Mws$jZ!8q?ptK$VgPxkk%%Wa<0?`_NBjryf5c36z9V$$Wc9Bd`thvN0{$ zr=|P6R1+WHv8y630s4~ijY0i#jE}-)nE^#Wzskt5zb3=zcQ^0(6DN;X|#xi_pllbjc)|Zf|2( zb$SNmQ5wt+4nS0Eph`*(4N5b1{PinXx=iqp`m~tZ*|=+F2Bu4AxlRIe%u{GPS;g{T zU-JjaK$byiM={l$VfCp@GO&bLa5~sMQKiKE$ac}3`Aka?kwMH~{8 zE=wZmmHBt>vxg^I-=n9Ymfg#4xCMQ2=_&{2w$Ct~KgDcg{SCyH?w5pdp_;55_VbHo zF4G!GH1}sXV51o2l}jb4XBdzTEFH-elN?3bwh1^ zJpo%|ly;=e+Y_+ITbhtndzIPr42B?*LqokD=wc^Q8B!pR)=5KicN1^{tlcJzy?l<@ zp+PA0vFvlDF002ovPDHLkV1m~0vzq__ 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 deleted file mode 100644 index 331b6744d9f8d3a64e789edc6ba7041a74639d73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1791 zcmV$bF9Ev3g&prME@r&hU)#)L#djPZ=|h%rGiMi5LuB~fEy2>&P; zV;~TS5D_CnKnW^`A~&V9w6xuJdr`XG?%6$^dFGM#c3!tTvk!#QPxAixy|=&j`_9b! z&2MH_9Y?@@fcpOq;7&0rbfhsVbfj_52#v>L5NLOR_u5qmb~+*Ka)GU85oAuEk<#z) z386QSAA`nCpFt1_<;k931D5jXDf_tVh4!C24Yg}lLOc?=Wz*Plz`kxHC{(JH{iH1P z`j*X*`{-gY7MFoSp-B2Hu0f)K01S3_LM#*lbJ>)X0}>MP`JisY8j(m$@v60uVacTO zm9o%Szz=6$Tn_q)gFEEv|3GMuG4>yX0;4Et{u`~HgStxGB($(uhJ0=f0 z_Uwf4fcrl?8onx{3DoEs?CKEzCL;q(lS`?C!c$4d54#fsfP$Cbp!UT>m35VBHB5T- zE$)T*JH#(n=?$RL>7nbF{m`&+o#=T(VG$^GI_jWYXa0ggG*=4Atek}sA$_CqFikI5 zu-29hrO;@>SX4~y ztMA0`ge~3P#KzaA4x9Qa$N0cYF3lYfeA3XKM`tLCH`pcJ<;N8 zZh}y6kI0rey%N+WGjnV_vh`>pEQNyW^hv^It(waeQzB^#jYY!T8Zi;GoxVr=&;Cu= zvSw8?#g$0fLjBFxA&v@rAqsT{N<<}8eqzxG3|u@XvMEs^!dgNmlD1HfM4@0n*;a|l zKN@`38@aMlnAGrsK$)=SjDef}I^`VeLb$8TzdR`k#lxz3>t=2;k0Wuzar4*_?n;*%zaHc+9!o_f)jpAsVTHOcpNESp zUn9!0JB?v-2~7Fu3+BQ;sn94ASNGw2w?ryYS%(viE`KbyJoC3UgQxbQ=rylZ>Q7_2VYM?0rW-Z7@pSmt2D~tXTX_ z*9e=TU=p>TWF!@8n_n~Jy?8u^Dk7=H_Ed?dlM`?{2%9c%EVZ9xFb{gaqZOiFugJzN z%^3EGf*nr6rp?V`4NVeepROlO~0dIDPTsH|j?FRL5FbkDju`ul6MuP!} z4Gt31hRU4&(o6`m(19ybLg~LxDUldFmB|T{P+a=?n(7HV%Na}Jxe8}P!#SNfQwk<; zen$&L{eDqTC{SPqhCL#Mgdpq}*R^uOB-C49OAI$Xn)mQVHgy0-6X5^bZ-=-`h;{aS(C3e%dIz;oPlG(0VTs^lhskfRhNdq+#b*;kKBq;Q zxb*$?)c&c2;riCPe2BYnnHk3KQYyH@0oT5F>>xPM-b&bT01;Hh$PMmAtu043 ze^f#Z1w~+~n91!U8BnIpLKAw;DTV7o$Q) h8lyr-8uyLRe*xAUK**$W+vETM002ovPDHLkV1hT`Wc2_5 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png deleted file mode 100644 index d74871e1fb3808eeb4a09e99ef5a8440da107a26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2694 zcmV;13VHR3P)!VX_t@HsM>{zWc`cKDEM?03O)ebE_ z#)>*s2b@Z^v{g#mp{4SMwxR{{AP-)7k;f+4-DH!^ZoKDWFooZ}yPMy+KTO%r%o385 z{LbC){(kqKd(XMoI?8|)O0Zt-27HuBiK~#5xC%*$tB{nq3Q38pkd(LzNr|hFl(_#T zHarZ&J>4+WbpaxMy%1sl&swku(h9Dd@HMYladBcAs5uUuZ@mt^$KHd%v!@{%3|zA3 zuDk^bZ~L4sAJ?R~(V;NZKlM0V*!3!^e1+XLy&Pse_5(1PExP<%bK;K1VoquZA*af8i`;3=D~yAejxx?{UgSfq5rqu`oaO5#hGxaYS14ovK8 z$-V2qRXPn!CR5Vaz`ifW9@B6~I}CNS@vr$SSA*5%*3&di!tDA@zj#_`ch9VVqC4*) z^QTMP^x4(W@Y5eb$Ih3*$;8c^J0F}SKCq@|fZ6T<)H*ga1S10>hz<-uG!%qLpbsLw zY&7KfuD+e%tzAjeFE>GKa6o7;|MqvmY|+=xjz^ccIZKv9 z!_!ajL1FN86Ms#F@%OuX+6?x=*!46^lfbE3)*ZYiwCAn56*8)CAoZzB+_d}x$X@a( z=-K-=ReQiQvy$vu<2k?WdG@a$FJLx-DN*{Uz{D%*~=HuawkZ=UZ!^91o__t74#5?C>r2cyL?~(el=j4+5)50)u`#lx68x4u?r<1;hDHC*i5M?yi(ZU%j2%$-l>D;|c3 z8Du{`U?G`)>@tCJ+6Gz6jMMxotPUP-!m;y)@L%)GO!4GF=< zP%dt$v7RZcy?BC9W*)G=4c2@h_Qk~2A`%Ed=i6^U(H(b^wFOZwZa}gUhIlIIB87g; zatKzzxUcex4}Cw>-34tswnNK{TlqrH|FyV$*A;tVEf!`XMx#+SGy9kHZ|u4G{7q8O z%lcaxw(J}Too-^GVI6eu+XLNuck=}$B=bi4flimWIL+)iybpQ~?T1i99Soj73lV=0 zug6NXZ~NdI>-01sDUPkbTl43*8ke_h6}i6&i`(|Mm!SE%XCb0-*BLozP*AdVy^^)v zq{YR%vSIU6(DK3`C!L5|(*!%tw@E_7n zMxvO$br17YlGWn{M?n#!1*6IdlliFmN~?>D3}(adFwOi-|R5%~~jA@gNp~ z$hw9Yi#J0J^+LOQ#w;>n5sX$uxO`=X3yUNyF2=1lZrPUbsEP$3vf@1N?5adv#|0nz z0ZI9)lc-WWSrQi4o|T={g@g4qQoFZOdn!5+aElX9ehQu>M}8rhuVhd*{f)PVn@*UJ z47Z+_c2Q}C6W>dw2W8?0Yvbh1rj(HR3b(aN?e@HUGGED{L|j}`;Hez}?in*lQ!Ti^ zLWa$oLFOwNl!zNT(*&`>L7|ZKZIFozjrTJlTX}*fBP`FMZw6S)K#-ijt6M{#HeL2unio zsS#bd7%g&_t(1rh{7i_J z?OUOE%~yoKgGGa9e*bHpa4q@LTHS3T6Bj>iX{v?I%rH@?ik!vEz?PFI-9+8^%#*xU zxcKh-z&*YE;sgUvIcYfuUGMCMmKXlOx3pG2yM?4pWa45e(?~ENeC#mupt9Bh7iWAA zY`AzVjD(JzJD~mVFY&t*7wvh9Xk4+hEh`5y=guQ(6PdWdID?tW-QiL?U^0Seo z#8pU2T!o~>RY*!)g`~t)NJ?CVq{LN7N?e8f2MH^D(!Wlox&QzG07*qoM6N<$g6^?E A9{>OV diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png deleted file mode 100644 index 94db55a61d59ca344ef1fcd86ed078562e4d2f50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1203 zcmV;k1WfyhP)-w_J^W1rFduMvjy&Z9U;GdlAKFf2? z`Ssj$p65B&ILCw=SjMFW;OQpdVznfI(Y{`UfBy|Lg8>w+tVPA|K#)amt@IDHDeZEwO_Sp`F30n&*CQqd?*c?+0%&m`*Ql&>KdTa>9`XOpZJ!o_Rze+{BL{yB~|?t z0Ub?up|R~F3>-TmteT;)2u7O?L+!^TAA5ZRcM{rr18lp9qSY&^xt-gO3rH$ivrcHD zg1?@T0oqpa0i(TtBhu3)+3v@lR0XFBaG|CyU6k4ORbFnNk&f@AXR~V=O4m25o=-Di zBn!|~QVL5&rJ_H*-m#M%lI^&3|uRCDmuO3>)3?N%Uo>=LAIYnrBg|Cx9(FMJTW#Rvjblq#+CQq!8D7Db+5h7 zh06&@FcWfMa9F9<`39^U_XK^2U8fKeM7M>=I_Vg z*Ply1?k9Glu)0QZaQ|lq5g!^5o{MVhQMr8w3Ou*4K)sQLCw+c^bF;J17Zl*`FOIV+ z#x2FUtDhdo_^{3I*|i7OeatRb9(XDNlaxVN$`Ylf#G=)cO=K(1;i)WDfRUbV znN3A1Pw9AEX6wx+4Okhe0-W-7$!s+x7F`)+%Jch$<`p#9?69uz@CUZbUulxX&3vR1 zFtdWR|J2+itnMly)QG;6$6c({zwUskXhg`V5}@}^RRf!yE&(#mF6X4-Bf zP{z`k%!)sl3mEZT(p+MZXwve{Tj4+SfnZYj3Y5VD%`CphpW9faRKR*1z1e8 zv1+7z%eMLbsNxhal)20)G_B$SuK(mK;jiAfG@lZ=vn~~wsGDC{7pof{@E_hniD@&- RJa_;A002ovPDHLkV1iYpNNWH9 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 deleted file mode 100644 index 5d8aca23730315480515678c2386fa44c99de1ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2420 zcmV-)35)iLP)l z?1+khqoAmCq(T{6K@dbsO+%KKtt5R}Uz5Cj_jfMFdDwe@eR=o%p0<6T&if;|{oQka z-`wTgbI*OotOArM7~}uC0p~j<0VOF3C`m~`NlF4rQW8*-l7Nz2lmepbn~BFD6$wM~ zOaSy2E7+G^QcztNjey~iL6|vu1QxpAfbftHl7SgW$KzlwuYispJzj9V7rcPkbQ*jI zz5}P9I$I>2P6uo5-3PY1hJx$ApasOC>O1glMZ71t<@F!F186EJb;H~d0_0h(_A+*xfXl!67s$=9)Z4TSr9r5oW?>Y-%($;Tk8%+ow- zue$;4%M0`QcoZz4POpcx_k9nJf9e)CG-YtMwn;soODY-x|I@$Xmg&qESn=^sli5O~ z+!#k=6I}M-&!BJL*O-IK8y2{D=#*gtnGClMEO)J0C)12~Fm?DDNQXn*vf68Rf~B&W z%oZZ;2RfQoLB~UnLa?_7f_*(~(a@XBU~o9VTviU2>RO1;Ohfmc+quu1yk%gmt(R>E z1OFI)WnSi@jF^TGeT2kLE+mdLE&%Rzm$DC!x#NEmK8y1o)r1~7H4LHNliV`ThK*of zv6942E=Adi1mElymN{3iC9^aA{Il2%xn($fss2#86i2|Ge+tW}77!f1(=Qz6mg#La z=KE=Z<^m=aCpvm+L|9I>fP@DJSd@j=%PP0;0He)LV&}inT)Ztg~mJ0Shkx1T-O(Ztd&{V*n z$^znUqY-fKAFpwLkMp0WV-Rq(ZF>=E0rBKNaV7xqsYysjLTu<}l%6;H;!)u< zcq}@7>;+lVFr!jOIvj?{!_PoubO-`}{R@Qt9a7U-Ea2JDDQ$a^f)CcG|MVP-zhN&( z&Yckk40y~QJ;FX(GWPf*+~3z;dp#KK4l+AS7BDZNb6mafc@XSk1HPTYYjF#7#vQ}n~acB zR>pKN$gM+fwXuUFSuoon9pc+Cy4_%~JC%da>Fw0E*N8~St3RjZXod;YVs_V51|_(d5}H|~Pw-Fu}Qu4bdGS`V9--)Q60k_Z`qDRNy64qm>sg2UhDVq@Xa!UWVL4W=B3m7^iMX%~cS6OaXaZ7ZVPypAyNJ$M zJQoHb6A+zSwKEW^1q5Lkum2~I37C#Xijswe;N?IOnYeg(YXO;nn45x)=Q+4~tCci6 z)TFY~Cg;zP*~teo0df8l9-=GrpWZ+>-I`UL<=Dh&GCTP|Dxe4#@tr!gbd9jD|LvOr z8fPRdLMLFaN)}dIJCzv*-fR+y6dOCmwt6;=b7B@D5ipZXuqX@WJ&;_gc3cDg-#*E$8?zOS}S?6YDd)NYzVIQ|VGB^OQ-TXnQQFqo4et6&^yDZWI;x}J}1-$^F3Ssf6=-Lhq zH{S~5PyBSr&(>adBT0&#w1CmKM%e{J-Ykc)Ih>@mr1{Q0tT&E5_DEjoCFm8@yniRO z?ENZpAaJ<#tf z@7l&L_{n^w()oh4fX#R9g-bqq8xzo!lVEhQK(a)t1voEsF6b{GD+VP2B`FCgNl8FS mN&-q!5>S$ofRdC1l;mG}jVf~+gm(%60000&vQ5c diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png deleted file mode 100644 index 1aaeec2339ee9618cbf50d462140e3573835f3ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3705 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 TY!3fbN(y6r3q70;GVcEX{6hv; diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png deleted file mode 100644 index a55511c1289f60daf3ac5e3aad4f9707021b390b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1539 zcmV+e2K@PnP)d*1Wh zd(S=R+{z;e@IQe3zjh#7SR}I0ut?-)!tWdh_f-pcM@Im{VJP1AFi0ellw%eY5qIBJ z=xsj;{N+o6ERo5e>CgvhNnoTU67qRLs#H-K69fN*6S|*&2K-}=n9jU&59n8}rW&7? zh~MD=Yx`?ZvZD=jO)Ef=ZxCiG?Dax$+5k(LN{wqo~Qu)e-OCZ~eZSO}_uCDaaJ3?BcOkn@^az_9KvCL2`2ZrXG|_{Sa4 z|Ixd`mcqa@k7Fki3JNDn6xzB5rg*~JaqNe)gsu$525U@G5y3{wAKwF|C{AXEZ6J|K zK(5ULd7cg~Y~3itNfaC+!h(@gUqU1pjLGWKGB7f(1_smdE7RnFwrVzrrw98XFf~cc zp0>7;+8$oj(bHcMIw5DE!-N&0@(6GFGieKG8CJw|trunnuFonE0lbYffhZzwM1(Mw zuLrfMn0ox!Pv;0(hk{&HXv)YJ(JK-UuC5WqkCb}6v-3wnHr}}*V_z~R5($OC-D@Fq zT*Ff8@i?~lp38*Jux5Rx?qp76#x@8+H&4U}SHFyUysPVH;@HOdC+F6xOx?+xh`YBZ zIne9rSH$((1wz)ftP)kvWlV&(_7JiHXY@k4jE;}piQl^joo@NcOkEKmYDMCqt*xh? zQNMExW`+hJ{%LM$bL_j%F^XbnipW{%KurYCV%X;s%KAtkkVHgdE(c#+^_mLKU(ORG z0G)JlEr;}-;5gR-_KuUV;=LoZt_es>1XrfE6Q6+VVizj2?ZRm_*US%}I4*oL0t)(H zTQ|qV-0C`%Sm`SSjFd#|XHSC#RlV`G(9LeJ6vhImd*zMn6^&lhAX(phRUjeD%|&~7 zxv+iYIl18MIuD+>93n%yl7}9nd}RcNK07LG&nR%oj#ofaVupf^_o8>?Fp)?}#P-Ff zV7y}k6g{v5@=?1fmCrt!n8>)sWl;I-KB^b`UE?r#jO;(mZBK%J)fyJRlQ1ul@?B4Z z0+s2Bh@kzV6Pm6MQ} z2%nhI8GH0-&mVOzcxaIoQ-XT!DI#B#Rd|#21{#;frC39 zVZWbg{Cr>{lGxe`fnLi-M4{6YGQMWQcErXB6A|7*CPIAT;B3qSd~+F(fXgM^ZK;=J z)~m;SVR@MEAy)*i2J6)ghmLA;1tKu^{TVQ~?qsr)2>LQU97@U|97FzyLR(b}DpN7a zCnGW4z>&jXTz5CB<;r5ZFsjAuXHJ3XzOC8$TOkVXjbR8(PLMr1Lq?ARuVBgcR=9rn zotO^a4#`6oGBHFMIs9gi$oS0{sA=|^KBQdsoeko002ovPDHLkV1f~}*TMh* 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 deleted file mode 100644 index 9b3f93aa5405669d48c382a1fcf6ec9fb6af5e30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3101 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 gV1eX(!T*BfUkOb=PZE<1eE8O=5U>OH>99vr* zWh||oIutu#>(tgq5wRBKrGSK2LI_D9FOqDM&Ay+#=Q3b`Z0^nGyLUf6zTeD_I$Xa! z?Eky>o_p>+=bGaL(7E6-r`iA=WzdDx2)d9OK^IaZ=t61)T}X|f3#k!wAvJ<7q(;z% z)Cjte8bKFQAQ;Au`g{=V>4xw?KZFKc5bEoN%xPDEv${^v@6v@-kf`4egY|o$|MMN- zIeY-T%}qqO9xxaTXWC?5ISYyweOvMG)`e7nSR?{%Z~PHD{{AL}dQYAu-0*+5~pLl<%!#A7iyv})NI z5l3Uno%cW%8CFH1sF1O67-FFynC%WFAFEp0*1Zm{ty`Gw?8LDtyZ^z2y;TX6?UBSw ztAFevD7}9PWY3r_)bLc}ZE1$K*I#9}Gnma#{rCznlA%>3iVBJIfWc^h`iJj_%$c*H z=v&`~>{-`9T4vUmMWwELzz;Fv35Ll$6z+FHkT?>-u1*MawV(QDcPHe{|2mYDw_PS^ zThoirLM#wqwk`V3o#3pyOt?+T3Q5GuynH4M?%oB1U+g4v#||*rY>-ht6*9^yz(OW^ zQ-&Rk7UH!LUE|RxS!a16>Lnk)4(=#62w;P7`f5~iTD=mlo8*Y+d(N_o&(qJ+{&6BHO zzpD@2U+xz16%?8CBlgDjjqADE7XR?a^f!=+u*goD!wJ(~comNQ;brK2Ydyq?lb|$C z(j#SoOCQ(PkD2YPWX_h|8xf%)Ix|^nR4si1rrdEC^nUUYxa;@QtsGo-7%djEG_ix( z;h@VBYknc57fq(ij>e~d#eBArJUgSLOr-f|(f!^#5DRjw8y9~MOzG(oEIJ!0u~yrp zDNy|V9|7Qp!HKu{hA&4|Ef|c(@tVd34y)bozr$>2ATMXpt;%mv@u0e(Iqu`}Aai~k zB5PpZu_mTtHIWRdmh2o!R-KKigv2+0sDW?&>8O=AKX!lcFD~!6aMA4&tQi?q35k1q zf%fBEZDlz+u~3N2@0*$JaLJK5eTD>!Mn+Xa`i{5Km@Dhuml@GV8gD35oL~&+;CF@UkL0Js*9*)h_?0MS?9E9aRa*JwMjeNr~v-oQ=yS7Ixx6XB3wT zw`Vj|C8Vc8T^{RD;~@xkcQRj^yafwWzKO0HA)~~p@HQW1w!>Z`%h7Rt_6b`cgAwws zyFrRQqoEohy+<2~+ZtxJGua(dB0BiO^l^mbY$c^&FRKu44-3@@$vr<-%Zca&drpG4 zse#!p`|4|@2gpZ4HA1Q_qBF32C&a_-5h8c)^%AUMqY5EuM2GW4fkV>#*uQHVvkk^p zGcQkF5MVf}5E2hr1&+6JwUy!M;KAd5j>ApS6(ID7G6{$B;Wk#lypXC zaL?z=HkcOSsH_%l3ooh=a){Gobx817qoE+U_wQx4!?2twBSW}7yrf)6Jn-v1dW6}I zMsy_XLHb&bLD<#DY&YT3=_wD(4JYM7dXF_hob&<~G@>IRFg>uBJ**-VE}JgclChC; zA$jLVSrHvPAjX1@4wp=0wu|`vV7A$mFpEjbh2)(dWkhsPAospK%yyQ%e6W&FB7$US zZvFEbu;%7N>D><~X<|ZBDkT1J9u-A&0$rW70taj6!~B+!=Eoped$w=g1gbz&N$sfDLk}}ydOCWm7?j30mkIfG5B>U=U@(b& z??S!ZTl{PUUiq{b6+rAaL|NS;i2IcWaxgc-9 zx8a~N&r*P3XFL5Q0;4{~cik&>d7_w*Lq`rn!_&*TatF0e)>U(8%Dqe!5z@758yt9Y zDa3p}B_4M{lRmi^>Q+80Jycm{Mke+9+uBBPpdDq{VvasE_gzWzCJ#g3WInQNB*W8qDqsQnSQ)|FhQbtqfaK`|5 z)iFYYx%eF$)-k`sR#pL(k32peGr4Gf<+tEtoYBF*SIvsmV9Cy<^>fm)vgwI;%mqy~ zNehX+v32b$XNhPjEP}jw3m|9i^)wPQT74Z9k_U9-bLY%U)=Vx?poY~enCFTy5{J)ZMMONDQJVBAC3GKBH2#hg zTQ&B_*IbCL(1v)!wI*@!WQib$) zw$pPiEHDUQlTPep)4#rP0N5jvNgMxFsy|i3{Rbxkr zkeIaNYvGIN$nKFi++(#6KSx&Bz!y8AVByUYtQtE~gbZ|cKxCkw+0G>S3W(ESHgw;| z>|2BSwr+t~WO+&}B_~3PMZC)n+mvEDXUPVyO5_2HMD+f5GvwbW|AH14QiL2!`IS_x z(=soc4o0$`jQQF5D=lkZhMc+Afthptc^aA+3!`75I3DB(sltfPaExgd$h~$x^nCap zvn|f0M_+m#svldyEeakbX@2eZP`Tt$NSly3UUNr8xRAJM%U!vnMy|&?oPt{xa|wxb zy}f~WaB--7_%X5^u_tU78XTbY1lr&H3*FB&{bIRN=AMUeA+cZ}W@|CuUa}~6Ocj4d zClOd6Fk@;p_?jBI+IRhPBds8bcVXpRJ(tYyrSt?r;A9s)@a)?DDfDjn&zXbRxie-9 zb&`Y&$$Lg8qoOjUB{T6yF8|3RaNzNWxc{GER|mALd69ltb720$Zz^JEB7_UcJwHkg z1dIgElR5Ji(CQpxWwe(SH_1g8uoo)iShB91b?iz~qCqigmaT%l58e%ajsOPNGt<(b z>WQa>uRVo69gk7)B*@T+&Qx`j%(P@>!?fS5fqhFK;I8VN5He?06A`nn;9IAT2cbd+ zx;r5du1m?ayolHy z*~~7ei_p7^RlNI-U_R(+QPqf0A$hj0kWgI>a9_`ee}=Kg?Ag~q!Oe>yZ{F9W-C(X&gb9g`LM`$7T3&mJ=0xH?qjh2d zt#yip-LdE%793LR@xluYp*=F^syXzdBOdkn{5naY3#k!wAvJ<7q(;z%)Cjte8bKFQ wBj`eE1YJmtpbM!HbRji@E~G}#h13ZD2Y4N*tZIpQegFUf07*qoM6N<$f?%DO3;+NC diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png deleted file mode 100644 index 1aaeec2339ee9618cbf50d462140e3573835f3ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3705 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 TY!3fbN(y6r3q70;GVcEX{6hv; diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png deleted file mode 100644 index c2d535f9c33384b99f73ce468e0ae5305d3179e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5911 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 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 deleted file mode 100644 index d23675857f2fdbf5477652b6d33de769560b1f09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4639 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 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 deleted file mode 100644 index c61516ff0b1ff24e990b965dda83fac588d7062d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2298 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 Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png deleted file mode 100644 index 9da19eacad3b03bb08bbddbbf4ac48dd78b3d838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png deleted file mode 100644 index 9da19eacad3b03bb08bbddbbf4ac48dd78b3d838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md deleted file mode 100644 index 89c2725b..00000000 --- a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Launch Screen Assets - -You can customize the launch screen with your own desired assets by replacing the image files in this directory. - -You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index f2e259c7..00000000 --- a/ios/Runner/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard deleted file mode 100644 index f3c28516..00000000 --- a/ios/Runner/Base.lproj/Main.storyboard +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist deleted file mode 100644 index e3189353..00000000 --- a/ios/Runner/Info.plist +++ /dev/null @@ -1,49 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - Devfolio - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - devfolio - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleSignature - ???? - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - CADisableMinimumFrameDurationOnPhone - - UIApplicationSupportsIndirectInputEvents - - - diff --git a/ios/Runner/Runner-Bridging-Header.h b/ios/Runner/Runner-Bridging-Header.h deleted file mode 100644 index 308a2a56..00000000 --- a/ios/Runner/Runner-Bridging-Header.h +++ /dev/null @@ -1 +0,0 @@ -#import "GeneratedPluginRegistrant.h" diff --git a/ios/RunnerTests/RunnerTests.swift b/ios/RunnerTests/RunnerTests.swift deleted file mode 100644 index 86a7c3b1..00000000 --- a/ios/RunnerTests/RunnerTests.swift +++ /dev/null @@ -1,12 +0,0 @@ -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/animations/bottom_animation.dart b/lib/animations/bottom_animation.dart deleted file mode 100644 index 18309424..00000000 --- a/lib/animations/bottom_animation.dart +++ /dev/null @@ -1,85 +0,0 @@ -import 'dart:async'; - -import 'package:flutter/material.dart'; - -class Animator extends StatefulWidget { - final Widget? child; - final Duration? time; - - const Animator( - Key? key, - this.child, - this.time, - ) : super(key: key); - - @override - AnimatorState createState() => AnimatorState(); -} - -class AnimatorState extends State - with SingleTickerProviderStateMixin { - Timer? timer; - AnimationController? animationController; - Animation? animation; - - @override - void initState() { - super.initState(); - animationController = AnimationController( - duration: const Duration(milliseconds: 290), vsync: this); - animation = - CurvedAnimation(parent: animationController!, curve: Curves.easeInOut); - timer = Timer(widget.time!, animationController!.forward); - } - - @override - void dispose() { - animationController!.dispose(); - super.dispose(); - timer!.cancel(); - } - - @override - Widget build(BuildContext context) { - return AnimatedBuilder( - animation: animation!, - child: widget.child, - builder: (BuildContext context, Widget? child) { - return Opacity( - opacity: animation!.value, - child: Transform.translate( - offset: Offset(0.0, (1 - animation!.value) * 20), - child: child, - ), - ); - }, - ); - } -} - -Timer? timer; -Duration duration = const Duration(); - -wait() { - if (timer == null || !timer!.isActive) { - timer = Timer(const Duration(microseconds: 120), () { - duration = const Duration(); - }); - } - duration += const Duration(milliseconds: 100); - return duration; -} - -class WidgetAnimator extends StatelessWidget { - final Widget child; - - const WidgetAnimator({ - super.key, - required this.child, - }); - - @override - Widget build(BuildContext context) { - return Animator(key, child, wait()); - } -} diff --git a/lib/animations/entrance_fader.dart b/lib/animations/entrance_fader.dart deleted file mode 100644 index 4250f075..00000000 --- a/lib/animations/entrance_fader.dart +++ /dev/null @@ -1,70 +0,0 @@ -import 'package:flutter/material.dart'; - -class EntranceFader extends StatefulWidget { - /// Child to be animated on entrance - final Widget child; - - /// Delay after which the animation will start - final Duration delay; - - /// Duration of entrance animation - final Duration duration; - - /// Starting point from which the widget will fade to its default position - final Offset offset; - - const EntranceFader({ - super.key, - required this.child, - this.delay = const Duration(milliseconds: 0), - this.duration = const Duration(milliseconds: 400), - this.offset = const Offset(0.0, 32.0), - }); - - @override - EntranceFaderState createState() { - return EntranceFaderState(); - } -} - -class EntranceFaderState extends State - with SingleTickerProviderStateMixin { - AnimationController? _controller; - Animation? _dxAnimation; - Animation? _dyAnimation; - - @override - void initState() { - super.initState(); - _controller = AnimationController(vsync: this, duration: widget.duration); - _dxAnimation = - Tween(begin: widget.offset.dx, end: 0.0).animate(_controller!); - _dyAnimation = - Tween(begin: widget.offset.dy, end: 0.0).animate(_controller!); - Future.delayed(widget.delay, () { - if (mounted) { - _controller!.forward(); - } - }); - } - - @override - void dispose() { - _controller!.dispose(); - super.dispose(); - } - - @override - Widget build(BuildContext context) { - return AnimatedBuilder( - animation: _controller!, - builder: (context, child) => Opacity( - opacity: _controller!.value, - child: Transform.translate( - offset: Offset(_dxAnimation!.value, _dyAnimation!.value), - child: widget.child, - ), - ), - ); - } -} diff --git a/lib/app.dart b/lib/app.dart new file mode 100644 index 00000000..cf995d57 --- /dev/null +++ b/lib/app.dart @@ -0,0 +1,62 @@ +import 'package:jaspr/jaspr.dart'; + +import 'pages/home.dart'; + +// The main component of your application. +// +// By using the @client annotation this component will be automatically compiled to javascript and mounted +// on the client. Therefore: +// - this file and any imported file must be compilable for both server and client environments. +// - this component and any child components will be built once on the server during pre-rendering and then +// again on the client during normal rendering. +@client +class App extends StatefulComponent { + const App({super.key}); + + @override + State createState() => AppState(); +} + +class AppState extends State { + @override + void initState() { + super.initState(); + // Run code depending on the rendering environment. + if (kIsWeb) { + print("Hello client"); + // When using @client components there is no default `main()` function on the client where you would normally + // run any client-side initialization logic. Instead you can put it here, considering this component is only + // mounted once at the root of your client-side component tree. + } else { + print("Hello server"); + } + } + + @override + Iterable build(BuildContext context) sync* { + // This method is rerun every time the component is rebuilt. + // + // Each build method can return multiple child components as an [Iterable]. The recommended approach + // is using the [sync* / yield] syntax for a streamlined control flow, but its also possible to simply + // create and return a [List] here. + + // Renders a

html element with children. + yield div(classes: 'main', [ + const Home(), + ]); + } + + // Defines the css styles for elements of this component. + // + // By using the @css annotation, these will be rendered automatically to css inside the of your page. + // Must be a variable or getter of type [List]. + @css + static final styles = [ + css('.main', [ + css('p').text(color: Colors.white), + css('a').text(color: Colors.white), + css('h1').text(color: Colors.white), + css('span').text(color: Colors.white), + ]), + ]; +} diff --git a/lib/components/app_button.dart b/lib/components/app_button.dart new file mode 100644 index 00000000..7bc2f541 --- /dev/null +++ b/lib/components/app_button.dart @@ -0,0 +1,51 @@ +import 'package:devfolio/constants/theme.dart'; +import 'package:jaspr/jaspr.dart'; + +@client +class AppButton extends StatelessComponent { + final String label; + final void Function() onPressed; + + final Unit? width; + final Unit? height; + + const AppButton({ + super.key, + required this.label, + required this.onPressed, + this.width, + this.height, + }); + + @override + Iterable build(BuildContext context) sync* { + yield button( + classes: 'app-button', + styles: Styles.box(width: width, height: height), + onClick: onPressed, + [ + span(classes: 'label', [text(label)]) + ], + ); + } + + @css + static final List styles = [ + css('.app-button') + .box( + width: 130.px, + padding: EdgeInsets.all(10.px), + radius: BorderRadius.circular(6.px), + border: Border.all(BorderSide( + color: primaryColor, + )), + ) + .background( + color: Colors.transparent, + ), + css('.app-button:hover').background( + color: primaryColor, + ), + css('.label').text(fontSize: 12.px), + ]; +} diff --git a/lib/components/nav_bar.dart b/lib/components/nav_bar.dart new file mode 100644 index 00000000..5634462f --- /dev/null +++ b/lib/components/nav_bar.dart @@ -0,0 +1,99 @@ +import 'package:devfolio/components/app_button.dart'; +import 'package:devfolio/constants/theme.dart'; +import 'package:jaspr/jaspr.dart'; + +class NavBar extends StatelessComponent { + const NavBar({super.key}); + + @override + Iterable build(BuildContext context) sync* { + yield section(classes: 'navbar', [ + div([ + span([text('<')]), + span(classes: 'brand', [text('Hamza')]), + span([text('/>')]), + ]), + div(classes: 'labels', [ + a( + classes: 'navbar-label', + href: '#', + [ + text('HOME'), + ], + ), + a( + href: '#', + classes: 'navbar-label', + [ + text('ABOUT'), + ], + ), + a( + href: '#', + classes: 'navbar-label', + [ + text('SERVICES'), + ], + ), + a( + href: '#', + classes: 'navbar-label', + [ + text('PROJECTS'), + ], + ), + a( + href: '#', + classes: 'navbar-label', + [ + text('CONTACT'), + ], + ), + AppButton( + label: 'RESUME', + onPressed: () {}, + ), + ]), + ]); + } + + @css + static final List styles = [ + css('.navbar') + .box(padding: EdgeInsets.all(25.px)) + .flexbox( + direction: FlexDirection.row, + justifyContent: JustifyContent.spaceBetween, + alignItems: AlignItems.center, + ) + .background( + color: Colors.black, + ), + css('.navbar-label') + .box( + padding: EdgeInsets.only(right: 35.px), + ) + .text( + fontSize: 12.px, + decoration: TextDecoration.none, + ) + .flexbox( + direction: FlexDirection.row, + justifyContent: JustifyContent.spaceBetween, + alignItems: AlignItems.center, + ), + css('.navbar-label:hover').text( + color: primaryColor, + ), + css('.labels').flexbox( + direction: FlexDirection.row, + justifyContent: JustifyContent.end, + ), + css.import( + 'fonts/agustina/agustina.otf', + ), + css('.brand').text( + fontFamily: FontFamily('fonts/agustina/agustina.otf'), + ), + ]; +} diff --git a/lib/configs/app.dart b/lib/configs/app.dart deleted file mode 100644 index bcd41437..00000000 --- a/lib/configs/app.dart +++ /dev/null @@ -1,17 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:folio/configs/configs.dart'; - -class App { - static bool? isLtr; - static bool showAds = false; - - static init(BuildContext context) { - UI.init(context); - AppDimensions.init(); - AppTheme.init(context); - UIProps.init(); - Space.init(); - AppText.init(); - isLtr = Directionality.of(context) == TextDirection.ltr; - } -} diff --git a/lib/configs/app_core_theme.dart b/lib/configs/app_core_theme.dart deleted file mode 100644 index d1f01e23..00000000 --- a/lib/configs/app_core_theme.dart +++ /dev/null @@ -1,80 +0,0 @@ -import 'package:flutter/material.dart'; - -class AppCoreTheme { - Color? primary; - Color? primaryLight; - Color? primaryDark; - - Color? accent; - Color? accentLight; - Color? accentDark; - - Color? background; - Color? backgroundSub; - Color? scaffold; - Color? scaffoldDark; - - Color? text; - Color? textSub; - Color? textSub2; - - Color? shadow; // Normal shadowOnBackground - Color? shadowSub; // Shadow light - - AppCoreTheme({ - this.primary, - this.primaryLight, - this.primaryDark, - this.accent, - this.accentLight, - this.accentDark, - this.background, - this.backgroundSub, - this.scaffold, - this.scaffoldDark, - this.text, - this.textSub, - this.textSub2, - this.shadow, - this.shadowSub, - }); - - AppCoreTheme copyWith({ - Color? primary, - Color? primaryLight, - Color? primaryDark, - Color? accent, - Color? accentLight, - Color? accentDark, - Color? background, - Color? backgroundSub, - Color? scaffold, - Color? scaffoldDark, - Color? text, - Color? textSub, - Color? textSub2, - Color? shadow, - Color? shadowSub, - Color? upsellCard, - Color? hotelChipRefundable, - Color? hotelChipAirportTransfer, - }) { - return AppCoreTheme( - primary: primary ?? this.primary, - primaryLight: primaryLight ?? this.primaryLight, - primaryDark: primaryDark ?? this.primaryDark, - accent: accent ?? this.accent, - accentLight: accentLight ?? this.accentLight, - accentDark: accentDark ?? this.accentDark, - background: background ?? this.background, - backgroundSub: backgroundSub ?? this.backgroundSub, - scaffold: scaffold ?? this.scaffold, - scaffoldDark: scaffoldDark ?? this.scaffoldDark, - text: text ?? this.text, - textSub: textSub ?? this.textSub, - textSub2: textSub2 ?? this.textSub2, - shadow: shadow ?? this.shadow, - shadowSub: shadowSub ?? this.shadowSub, - ); - } -} diff --git a/lib/configs/app_dimensions.dart b/lib/configs/app_dimensions.dart deleted file mode 100644 index e73792d1..00000000 --- a/lib/configs/app_dimensions.dart +++ /dev/null @@ -1,62 +0,0 @@ -import 'package:flutter/material.dart'; -import 'ui.dart'; - -class AppDimensions { - static double? maxContainerWidth; - static double? miniContainerWidth; - - static bool? isLandscape; - static double? padding; - static double ratio = 0; - - static Size? size; - - static init() { - ratio = UI.width! / UI.height!; - double pixelDensity = UI.mediaQuery().devicePixelRatio; - ratio = (ratio) + ((pixelDensity + ratio) / 2); - - if (UI.width! <= 380 && pixelDensity >= 3) { - ratio *= 0.85; - } - - _initLargeScreens(); - _initSmallScreensHighDensity(); - - padding = ratio * 3; - } - - static _initLargeScreens() { - const safe = 2.4; - - ratio *= 1.5; - - if (ratio > safe) { - ratio = safe; - } - } - - static _initSmallScreensHighDensity() { - if (!UI.sm! && ratio > 2.0) { - ratio = 2.0; - } - if (!UI.xs! && ratio > 1.6) { - ratio = 1.6; - } - if (!UI.xxs! && ratio > 1.4) { - ratio = 1.4; - } - } - - static double space([double multiplier = 1.0]) { - return AppDimensions.padding! * 3 * multiplier; - } - - static double normalize(double unit) { - return (AppDimensions.ratio * unit * 0.77) + unit; - } - - static double font(double unit) { - return (AppDimensions.ratio * unit * 0.125) + unit * 1.90; - } -} diff --git a/lib/configs/app_theme.dart b/lib/configs/app_theme.dart deleted file mode 100644 index f6abb5c5..00000000 --- a/lib/configs/app_theme.dart +++ /dev/null @@ -1,40 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'app_core_theme.dart'; - -class AppTheme { - static final _core = AppCoreTheme( - shadowSub: const Color(0xffC0392B).withAlpha(100), - primary: const Color(0xffC0392B), - primaryLight: const Color(0xffC0392B).withAlpha(100), - textSub: const Color(0xff141414), - textSub2: const Color(0xff696969), - ); - - static AppCoreTheme light = _core.copyWith( - background: Colors.white, - backgroundSub: const Color(0xffF0F0F0), - scaffold: const Color(0xfffefefe), - scaffoldDark: const Color(0xfffcfcfc), - text: const Color(0xff484848), - textSub2: Colors.black.withOpacity(0.25), - ); - - static AppCoreTheme dark = _core.copyWith( - background: Colors.grey[900], - backgroundSub: const Color(0xff1c1c1e), - scaffold: const Color(0xff0e0e0e), - text: Colors.white, - textSub2: Colors.white.withOpacity(0.25), - ); - - static AppCoreTheme? c; - - // Init - static init(BuildContext context) { - c = isDark(context) ? dark : light; - } - - static bool isDark(BuildContext context) => - Theme.of(context).brightness == Brightness.dark; -} diff --git a/lib/configs/app_typography.dart b/lib/configs/app_typography.dart deleted file mode 100644 index bc1f46a3..00000000 --- a/lib/configs/app_typography.dart +++ /dev/null @@ -1,52 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:folio/configs/configs.dart'; - -class AppText { - static TextStyle? btn; - - // Headings - static TextStyle? h1; - static TextStyle? h1b; - static TextStyle? h2; - static TextStyle? h2b; - static TextStyle? h3; - static TextStyle? h3b; - - // Body - static TextStyle? b1; - static TextStyle? b1b; - static TextStyle? b2; - static TextStyle? b2b; - - // Label - static TextStyle? l1; - static TextStyle? l1b; - static TextStyle? l2; - static TextStyle? l2b; - - static init() { - const b = FontWeight.bold; - const baseStyle = TextStyle(fontFamily: fontFamily); - - h1 = baseStyle.copyWith(fontSize: AppDimensions.font(22)); - h1b = h1!.copyWith(fontWeight: b); - - h2 = baseStyle.copyWith(fontSize: AppDimensions.font(18)); - h2b = h2!.copyWith(fontWeight: b); - - h3 = baseStyle.copyWith(fontSize: AppDimensions.font(15)); - h3b = h3!.copyWith(fontWeight: b); - - b1 = baseStyle.copyWith(fontSize: AppDimensions.font(10)); - b1b = b1!.copyWith(fontWeight: b); - - b2 = baseStyle.copyWith(fontSize: AppDimensions.font(8)); - b2b = b2!.copyWith(fontWeight: b); - - l1 = baseStyle.copyWith(fontSize: AppDimensions.font(6)); - l1b = l1!.copyWith(fontWeight: b); - - l2 = baseStyle.copyWith(fontSize: AppDimensions.font(4)); - l2b = l2!.copyWith(fontWeight: b); - } -} diff --git a/lib/configs/app_typography_ext.dart b/lib/configs/app_typography_ext.dart deleted file mode 100644 index 7de8081b..00000000 --- a/lib/configs/app_typography_ext.dart +++ /dev/null @@ -1,41 +0,0 @@ -import 'package:flutter/material.dart'; - -extension SuperTextStyles on TextStyle { - TextStyle cl(Color color) { - return copyWith( - color: color, - ); - } - - TextStyle s([double? size]) { - return copyWith( - fontSize: size ?? fontSize, - ); - } - - TextStyle tsc([double multiplier = 1.0]) { - return copyWith( - fontSize: fontSize! * multiplier, - ); - } - - TextStyle w(int i) { - FontWeight w = FontWeight.w400; - - if (i == 3) { - w = FontWeight.w300; - } - if (i == 5) { - w = FontWeight.w500; - } - if (i == 6) { - w = FontWeight.w600; - } - if (i == 7) { - w = FontWeight.w700; - } - return copyWith( - fontWeight: w, - ); - } -} diff --git a/lib/configs/configs.dart b/lib/configs/configs.dart deleted file mode 100644 index d70a0e19..00000000 --- a/lib/configs/configs.dart +++ /dev/null @@ -1,11 +0,0 @@ -export 'app_dimensions.dart'; -export 'app_typography.dart'; -export 'app_typography_ext.dart'; -export 'app_theme.dart'; -export 'ui_props.dart'; -export 'space.dart'; -export 'space_ext.dart'; -export 'ui.dart'; - -export 'core_theme.dart' show fontFamily; -export 'date_ext.dart'; diff --git a/lib/configs/core_theme.dart b/lib/configs/core_theme.dart deleted file mode 100644 index 8e65c2aa..00000000 --- a/lib/configs/core_theme.dart +++ /dev/null @@ -1,42 +0,0 @@ -import 'package:flutter/material.dart'; - -const fontFamily = 'Poppins'; - -final themeLight = ThemeData( - primaryColorLight: const Color(0xffC0392B), - brightness: Brightness.light, - primaryColor: const Color(0xffC0392B), - highlightColor: Colors.black, - canvasColor: Colors.white, - fontFamily: fontFamily, - splashColor: Colors.transparent, - scaffoldBackgroundColor: Colors.white, - colorScheme: ColorScheme.fromSwatch( - primarySwatch: Colors.red, - ) - .copyWith( - secondary: Colors.black, - brightness: Brightness.light, - surface: Colors.white, - ) - .copyWith( - surface: Colors.white, - ), -); - -final themeDark = ThemeData( - brightness: Brightness.dark, - primaryColorDark: const Color(0xffC0392B), - primaryColor: const Color(0xffC0392B), - highlightColor: const Color(0xffC0392B), - canvasColor: Colors.white, - fontFamily: fontFamily, - splashColor: Colors.transparent, - scaffoldBackgroundColor: Colors.black, - colorScheme: ColorScheme.fromSwatch( - primarySwatch: Colors.red, - brightness: Brightness.dark, - ).copyWith( - surface: Colors.grey[800], - ), -); diff --git a/lib/configs/date_ext.dart b/lib/configs/date_ext.dart deleted file mode 100644 index c449e154..00000000 --- a/lib/configs/date_ext.dart +++ /dev/null @@ -1,3 +0,0 @@ -extension SuperDate on DateTime { - DateTime get today => DateTime(year, month, day); -} diff --git a/lib/configs/space.dart b/lib/configs/space.dart deleted file mode 100644 index 9d02ac4e..00000000 --- a/lib/configs/space.dart +++ /dev/null @@ -1,68 +0,0 @@ -import 'package:flutter/material.dart'; -import 'ui.dart'; -import 'app_dimensions.dart'; - -class Space { - static Widget? x; - static Widget? y; - static Widget? x1; - static Widget? y1; - static Widget? x2; - static Widget? y2; - static Widget? xm; - static Widget? ym; - - static EdgeInsets? z; - static EdgeInsets? h; - static EdgeInsets? v; - static EdgeInsets? h1; - static EdgeInsets? v1; - static EdgeInsets? h2; - static EdgeInsets? v2; - - static Widget? top; - static Widget? bottom; - - static void init() { - x = SizedBox(width: AppDimensions.space(0.5)); - y = SizedBox(height: AppDimensions.space(0.5)); - - x1 = SizedBox(width: AppDimensions.space()); - y1 = SizedBox(height: AppDimensions.space()); - - x2 = SizedBox(width: AppDimensions.space(2)); - y2 = SizedBox(height: AppDimensions.space(2)); - - xm = const Expanded(child: SizedBox(width: double.infinity)); - ym = const Expanded(child: SizedBox(height: double.infinity)); - - z = EdgeInsets.zero; - h = EdgeInsets.symmetric(horizontal: AppDimensions.space(0.5)); - v = EdgeInsets.symmetric(vertical: AppDimensions.space(0.5)); - - h1 = EdgeInsets.symmetric(horizontal: AppDimensions.space()); - v1 = EdgeInsets.symmetric(vertical: AppDimensions.space()); - - h2 = EdgeInsets.symmetric(horizontal: AppDimensions.space(2)); - v2 = EdgeInsets.symmetric(vertical: AppDimensions.space(2)); - - top = SizedBox(height: UI.padding!.top); - bottom = SizedBox(height: UI.padding!.bottom); - } - - static Widget xf([double no = 1]) => SizedBox(width: AppDimensions.space(no)); - static Widget yf([double no = 1]) => - SizedBox(height: AppDimensions.space(no)); - - static EdgeInsets hf([double no = 1]) => EdgeInsets.symmetric( - horizontal: AppDimensions.space(no), - ); - static EdgeInsets vf([double no = 1]) => EdgeInsets.symmetric( - vertical: AppDimensions.space(no), - ); - - static EdgeInsets all([double h = 0.5, double? v]) => EdgeInsets.symmetric( - vertical: AppDimensions.space(v ?? h), - horizontal: AppDimensions.space(h), - ); -} diff --git a/lib/configs/space_ext.dart b/lib/configs/space_ext.dart deleted file mode 100644 index 00826f37..00000000 --- a/lib/configs/space_ext.dart +++ /dev/null @@ -1,36 +0,0 @@ -import 'package:flutter/material.dart'; -import 'app_dimensions.dart'; -import 'ui.dart'; - -extension SuperEdgeInsets on EdgeInsets { - EdgeInsets sv() { - return copyWith( - top: top + UI.padding!.top, - bottom: bottom + UI.padding!.bottom, - ); - } - - EdgeInsets st() { - return copyWith(top: top + UI.padding!.top); - } - - EdgeInsets sb() { - return copyWith(bottom: bottom + UI.padding!.bottom); - } - - EdgeInsets b(double no) { - return copyWith(bottom: AppDimensions.space(no)); - } - - EdgeInsets t(double no) { - return copyWith(top: AppDimensions.space(no)); - } - - EdgeInsets l(double no) { - return copyWith(left: AppDimensions.space(no)); - } - - EdgeInsets r(double no) { - return copyWith(right: AppDimensions.space(no)); - } -} diff --git a/lib/configs/ui.dart b/lib/configs/ui.dart deleted file mode 100644 index 1a2630fc..00000000 --- a/lib/configs/ui.dart +++ /dev/null @@ -1,66 +0,0 @@ -import 'dart:math'; -import 'package:flutter/widgets.dart'; - -class UI { - static MediaQueryData? _mediaQueryData; - static double? width; - static double? height; - static double? horizontal; - static double? vertical; - static EdgeInsets? padding; - static EdgeInsets? vi; - - static double? _safeAreaHorizontal; - static double? _safeAreaVertical; - static double? safeWidth; - static double? safeHeight; - - static double? diagonal; - - static bool? xxs; - static bool? xs; - static bool? sm; - static bool? md; - static bool? xmd; - static bool? lg; - static bool? xl; - static bool? xlg; - static bool? xxlg; - - static void init(BuildContext context) { - _mediaQueryData = MediaQuery.of(context); - initChecks(_mediaQueryData!); - - padding = _mediaQueryData!.padding; - vi = _mediaQueryData!.viewInsets; - width = _mediaQueryData!.size.width; - height = _mediaQueryData!.size.height; - horizontal = width! / 100; - vertical = height! / 100; - - _safeAreaHorizontal = - _mediaQueryData!.padding.left + _mediaQueryData!.padding.right; - _safeAreaVertical = - _mediaQueryData!.padding.top + _mediaQueryData!.padding.bottom; - safeWidth = (width! - _safeAreaHorizontal!); - safeHeight = (height! - _safeAreaVertical!); - } - - static initChecks(MediaQueryData query) { - var size = query.size; - diagonal = sqrt((size.width * size.width) + (size.height * size.height)); - xxs = size.width > 300; - xs = size.width > 360; - sm = size.width > 480; - md = size.width > 600; - xmd = size.width > 720; - lg = size.width > 980; - xl = size.width > 1160; - xlg = size.width > 1400; - xxlg = size.width > 1700; - } - - static MediaQueryData mediaQuery() => _mediaQueryData!; - - static Size getSize() => _mediaQueryData!.size; -} diff --git a/lib/configs/ui_props.dart b/lib/configs/ui_props.dart deleted file mode 100644 index c3a8d80b..00000000 --- a/lib/configs/ui_props.dart +++ /dev/null @@ -1,75 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'app_dimensions.dart'; -import 'app_theme.dart'; - -abstract class UIProps { - // Animations - static Duration duration = const Duration(milliseconds: 280); - static Duration duration2 = const Duration(milliseconds: 400); - - // Paddings - static EdgeInsets? btnPadMed; - static EdgeInsets? btnPadSm; - - // Radius - static double radius = 6.0; - static BorderRadius? tabRadius; - static BorderRadius? buttonRadius; - static BorderRadius? cardRadius; - static BoxDecoration? borderButton; - - // Shadows - static List? cardShadow; - - // BoxDecoration - static BoxDecoration? boxCard; - - static init() { - initRadius(); - initButtons(); - initShadows(); - initBoxDecorations(); - } - - static initRadius() { - tabRadius = BorderRadius.circular(radius * 2); - buttonRadius = BorderRadius.circular(radius); - cardRadius = BorderRadius.circular(radius * 2); - } - - static initButtons() { - borderButton = BoxDecoration( - borderRadius: UIProps.buttonRadius, - border: Border.all( - width: 1.4, - color: AppTheme.c!.primary!, - ), - ); - btnPadSm = EdgeInsets.symmetric( - horizontal: AppDimensions.padding! * 2, - vertical: AppDimensions.padding! * 1.0, - ); - btnPadMed = EdgeInsets.symmetric( - horizontal: AppDimensions.padding! * 3, - vertical: AppDimensions.padding! * 1.5, - ); - } - - static initShadows() { - cardShadow = [ - BoxShadow( - color: AppTheme.c!.shadowSub!, - blurRadius: 6, - ), - ]; - } - - static initBoxDecorations() { - boxCard = BoxDecoration( - borderRadius: cardRadius, - boxShadow: cardShadow, - color: AppTheme.c!.background, - ); - } -} diff --git a/lib/constants.dart b/lib/constants.dart deleted file mode 100644 index e248c0d8..00000000 --- a/lib/constants.dart +++ /dev/null @@ -1,15 +0,0 @@ -import 'package:url_launcher/url_launcher.dart'; - -// URL Launcher -void openURL(String url) => launchUrl( - Uri.parse(url), - ); - -// Tools & Tech -final kTools = [ - "Flutter", - "Dart", - "Python", - "Java", - "C++", -]; diff --git a/lib/constants/theme.dart b/lib/constants/theme.dart new file mode 100644 index 00000000..0912ec5f --- /dev/null +++ b/lib/constants/theme.dart @@ -0,0 +1,5 @@ +import 'package:jaspr/jaspr.dart'; + +// As your css styles are defined using just Dart, you can simply +// use global variables or methods for common things like colors. +const primaryColor = Color.hex('#C0392B'); diff --git a/lib/jaspr_options.dart b/lib/jaspr_options.dart new file mode 100644 index 00000000..ee466517 --- /dev/null +++ b/lib/jaspr_options.dart @@ -0,0 +1,40 @@ +// GENERATED FILE, DO NOT MODIFY +// Generated with jaspr_builder + +import 'package:jaspr/jaspr.dart'; +import 'package:devfolio/components/app_button.dart' as prefix0; +import 'package:devfolio/components/nav_bar.dart' as prefix1; +import 'package:devfolio/pages/home.dart' as prefix2; +import 'package:devfolio/app.dart' as prefix3; + +/// Default [JasprOptions] for use with your jaspr project. +/// +/// Use this to initialize jaspr **before** calling [runApp]. +/// +/// Example: +/// ```dart +/// import 'jaspr_options.dart'; +/// +/// void main() { +/// Jaspr.initializeApp( +/// options: defaultJasprOptions, +/// ); +/// +/// runApp(...); +/// } +/// ``` +final defaultJasprOptions = JasprOptions( + clients: { + prefix3.App: ClientTarget('app'), + prefix0.AppButton: ClientTarget('components/app_button', params: _prefix0AppButton), + }, + styles: () => [ + ...prefix0.AppButton.styles, + ...prefix1.NavBar.styles, + ...prefix2.Home.styles, + ...prefix3.AppState.styles, + ], +); + +Map _prefix0AppButton(prefix0.AppButton c) => + {'label': c.label, 'onPressed': c.onPressed, 'width': c.width, 'height': c.height}; diff --git a/lib/main.dart b/lib/main.dart index d71b77cb..80f7e4e0 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,75 +1,42 @@ -import 'package:flutter/material.dart'; -import 'package:folio/provider/app_provider.dart'; -import 'package:folio/provider/drawer_provider.dart'; -import 'package:folio/provider/scroll_provider.dart'; -import 'package:folio/sections/main/main_section.dart'; -import 'package:provider/provider.dart'; -import 'package:url_strategy/url_strategy.dart'; -import 'package:folio/configs/core_theme.dart' as theme; +// The entrypoint for the **server** environment. +// +// The [main] method will only be executed on the server during pre-rendering. +// To run code on the client, use the @client annotation. -void main() { - WidgetsFlutterBinding.ensureInitialized(); - setPathUrlStrategy(); - runApp(const MyApp()); -} - -class MyApp extends StatefulWidget { - const MyApp({super.key}); +// Server-specific jaspr import. +import 'package:jaspr/server.dart'; - @override - MyAppState createState() => MyAppState(); -} - -class MyAppState extends State { - @override - Widget build(BuildContext context) { - return MultiProvider( - providers: [ - ChangeNotifierProvider(create: (_) => AppProvider()), - ChangeNotifierProvider(create: (_) => DrawerProvider()), - ChangeNotifierProvider(create: (_) => ScrollProvider()), - ], - child: Consumer( - builder: (context, value, _) => MaterialChild( - provider: value, - ), - ), - ); - } -} +// Imports the [App] component. +import 'app.dart'; -class MaterialChild extends StatefulWidget { - final AppProvider provider; - const MaterialChild({super.key, required this.provider}); +// This file is generated automatically by Jaspr, do not remove or edit. +import 'jaspr_options.dart'; - @override - State createState() => _MaterialChildState(); -} - -class _MaterialChildState extends State { - void initAppTheme() { - final appProviders = AppProvider.state(context); - appProviders.init(); - } - - @override - void initState() { - initAppTheme(); - super.initState(); - } - - @override - Widget build(BuildContext context) { - return MaterialApp( - debugShowCheckedModeBanner: false, - title: 'Hamza', - theme: theme.themeLight, - darkTheme: theme.themeDark, - themeMode: widget.provider.themeMode, - initialRoute: "/", - routes: { - "/": (context) => const MainPage(), - }, - ); - } +void main() { + // Initializes the server environment with the generated default options. + Jaspr.initializeApp( + options: defaultJasprOptions, + ); + + // Starts the app. + // + // [Document] renders the root document structure (, and ) + // with the provided parameters and components. + runApp(Document( + title: 'Hamza', + styles: [ + // Special import rule to include to another css file. + css.import('https://fonts.googleapis.com/css?family=Poppins'), + // Each style rule takes a valid css selector and a set of styles. + // Styles are defined using type-safe css bindings and can be freely chained and nested. + css('html, body') + .text( + fontFamily: const FontFamily.list( + [FontFamily('Poppins'), FontFamilies.sansSerif])) + .box(width: 100.percent, minHeight: 100.vh) + .box(margin: EdgeInsets.zero, padding: EdgeInsets.zero), + css('h1').text(fontSize: 4.rem).box(margin: EdgeInsets.unset), + ], + body: App(), + )); } diff --git a/lib/pages/home.dart b/lib/pages/home.dart new file mode 100644 index 00000000..fcb20f8c --- /dev/null +++ b/lib/pages/home.dart @@ -0,0 +1,28 @@ +import 'package:devfolio/components/nav_bar.dart'; +import 'package:jaspr/jaspr.dart'; + +class Home extends StatelessComponent { + const Home({super.key}); + + @override + Iterable build(BuildContext context) sync* { + yield div( + classes: 'home-body', + [ + NavBar(), + ], + ); + } + + @css + static final List styles = [ + css('.home-body') + .box( + height: 100.vh, + width: 100.vw, + ) + .background( + color: Colors.black, + ), + ]; +} diff --git a/lib/provider/app_provider.dart b/lib/provider/app_provider.dart deleted file mode 100644 index 55c379c4..00000000 --- a/lib/provider/app_provider.dart +++ /dev/null @@ -1,51 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; -import 'package:shared_preferences/shared_preferences.dart'; - -final themeMap = { - "dark": ThemeMode.dark, - "light": ThemeMode.light, -}; - -class AppProvider extends ChangeNotifier { - static AppProvider state(BuildContext context, [bool listen = false]) => - Provider.of(context, listen: listen); - - ThemeMode _themeMode = ThemeMode.light; - ThemeMode get themeMode => _themeMode; - - bool get isDark => _themeMode == ThemeMode.dark; - - void init() async { - final prefs = await SharedPreferences.getInstance(); - - String? stringTheme = prefs.getString('theme'); - - ThemeMode? theme = - stringTheme == null ? ThemeMode.light : themeMap[stringTheme]; - - if (theme == null) { - await prefs.setString( - 'theme', ThemeMode.light.toString().split(".").last); - - _themeMode = ThemeMode.light; - } - _themeMode = theme!; - - notifyListeners(); - } - - void setTheme(ThemeMode newTheme) async { - SharedPreferences prefs = await SharedPreferences.getInstance(); - if (_themeMode == newTheme) { - return; - } - _themeMode = newTheme; - - await prefs.setString( - 'theme', - newTheme.toString().split('.').last, - ); - notifyListeners(); - } -} diff --git a/lib/provider/drawer_provider.dart b/lib/provider/drawer_provider.dart deleted file mode 100644 index 13e17015..00000000 --- a/lib/provider/drawer_provider.dart +++ /dev/null @@ -1,7 +0,0 @@ -import 'package:flutter/material.dart'; - -class DrawerProvider extends ChangeNotifier { - final scafoldKey = GlobalKey(); - - GlobalKey get key => scafoldKey; -} diff --git a/lib/provider/scroll_provider.dart b/lib/provider/scroll_provider.dart deleted file mode 100644 index e0521a68..00000000 --- a/lib/provider/scroll_provider.dart +++ /dev/null @@ -1,42 +0,0 @@ -import 'package:flutter/cupertino.dart'; -import 'package:folio/configs/app_dimensions.dart'; - -class ScrollProvider extends ChangeNotifier { - final scrollController = ScrollController(); - - ScrollController get controller => scrollController; - - scroll(int index) { - double offset = index == 1 - ? 270 - : index == 2 - ? 255 - : index == 3 - ? 250 - : 245; - controller.animateTo( - AppDimensions.normalize( - offset * index.toDouble(), - ), - duration: const Duration(seconds: 1), - curve: Curves.easeInOut, - ); - } - - scrollMobile(int index) { - double offset = index == 1 - ? 290 - : index == 2 - ? 360 - : index == 3 - ? 300 - : 310; - controller.animateTo( - AppDimensions.normalize( - offset * index.toDouble(), - ), - duration: const Duration(seconds: 1), - curve: Curves.easeInOut, - ); - } -} diff --git a/lib/responsive/responsive.dart b/lib/responsive/responsive.dart deleted file mode 100644 index 845566c9..00000000 --- a/lib/responsive/responsive.dart +++ /dev/null @@ -1,39 +0,0 @@ -import 'package:flutter/material.dart'; - -class Responsive extends StatelessWidget { - final Widget mobile; - final Widget tablet; - final Widget desktop; - const Responsive({ - super.key, - required this.mobile, - required this.tablet, - required this.desktop, - }); - - // screen sizes - static bool isMobile(BuildContext context) => - MediaQuery.of(context).size.width < 600; - - static bool isTablet(BuildContext context) => - MediaQuery.of(context).size.width < 1000 && - MediaQuery.of(context).size.width >= 600; - - static bool isDesktop(BuildContext context) => - MediaQuery.of(context).size.width >= 1000; - - @override - Widget build(BuildContext context) { - return LayoutBuilder( - builder: (context, constraints) { - if (constraints.maxWidth >= 1000) { - return desktop; - } else if (constraints.maxWidth >= 600) { - return tablet; - } else { - return mobile; - } - }, - ); - } -} diff --git a/lib/sections/about/about.dart b/lib/sections/about/about.dart deleted file mode 100644 index 7e53ca45..00000000 --- a/lib/sections/about/about.dart +++ /dev/null @@ -1,18 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:folio/responsive/responsive.dart'; -import 'package:folio/sections/about/about_desktop.dart'; -import 'package:folio/sections/about/about_mobile.dart'; -import 'package:folio/sections/about/about_tablet.dart'; - -class About extends StatelessWidget { - const About({super.key}); - - @override - Widget build(BuildContext context) { - return const Responsive( - tablet: AboutTab(), - mobile: AboutMobile(), - desktop: AboutDesktop(), - ); - } -} diff --git a/lib/sections/about/about_desktop.dart b/lib/sections/about/about_desktop.dart deleted file mode 100644 index cc22915b..00000000 --- a/lib/sections/about/about_desktop.dart +++ /dev/null @@ -1,174 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:folio/configs/configs.dart'; -import 'package:folio/constants.dart'; -import 'package:folio/utils/about_utils.dart'; - -import 'package:folio/utils/utils.dart'; -import 'package:folio/utils/work_utils.dart'; -import 'package:folio/widget/about_me_data.dart'; -import 'package:folio/widget/community_button.dart'; -import 'package:folio/widget/custom_text_heading.dart'; -import 'package:folio/widget/tech_widget.dart'; - -import 'package:universal_html/html.dart' as html; - -class AboutDesktop extends StatelessWidget { - const AboutDesktop({super.key}); - - @override - Widget build(BuildContext context) { - double height = MediaQuery.of(context).size.height; - double width = MediaQuery.of(context).size.width; - - return Container( - padding: Space.h, - child: Column( - children: [ - const CustomSectionHeading( - text: '\nAbout Me', - ), - const CustomSectionSubHeading( - text: 'Get to know me :)', - ), - Space.y1!, - Row( - children: [ - Expanded( - child: Image.asset( - StaticUtils.coloredPhoto, - height: height * 0.7, - ), - ), - Expanded( - flex: width < 1230 ? 2 : 1, - child: Container( - padding: EdgeInsets.only(left: width < 1230 ? 25.0 : 0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - 'Who am I?', - style: AppText.b1!.copyWith( - color: AppTheme.c!.primary, - ), - ), - Space.y1!, - Text( - AboutUtils.aboutMeHeadline, - style: AppText.b1b!.copyWith( - fontFamily: 'Montserrat', - ), - ), - Space.y!, - Text( - AboutUtils.aboutMeDetail, - style: AppText.b2!.copyWith( - height: 2, - letterSpacing: 1.1, - fontFamily: 'Montserrat', - fontSize: AppDimensions.normalize(5), - ), - textAlign: TextAlign.justify, - ), - Space.y!, - Divider( - color: Colors.grey[800], - thickness: AppDimensions.normalize(0.5), - ), - Space.y!, - Text( - 'Technologies I have worked with:', - style: AppText.l1!.copyWith( - color: AppTheme.c!.primary, - ), - ), - Space.y!, - Row( - children: kTools - .map((e) => ToolTechWidget( - techName: e, - )) - .toList(), - ), - Space.y!, - Divider( - color: Colors.grey[800], - thickness: AppDimensions.normalize(0.5), - ), - const Row( - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - AboutMeData( - data: "Name", - information: "Muhammad Hamza", - ), - AboutMeData( - data: "Age", - information: "24", - ), - ], - ), - Spacer(), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - AboutMeData( - data: "Email", - information: "hamza.6.shakeel@gmail.com", - ), - AboutMeData( - data: "From", - information: "Attock, PK", - ), - ], - ), - ], - ), - Space.y1!, - Row( - children: [ - SizedBox( - height: AppDimensions.normalize(13), - width: AppDimensions.normalize(40), - child: OutlinedButton( - onPressed: () => - html.window.open(StaticUtils.resume, 'pdf'), - child: const Text( - "Resume", - ), - ), - ), - Space.x1!, - Container( - color: Colors.grey[900]!, - width: AppDimensions.normalize(30), - height: AppDimensions.normalize(0.5), - ), - ...WorkUtils.logos.asMap().entries.map( - (e) => Expanded( - child: CommunityIconBtn( - icon: e.value, - link: WorkUtils.communityLinks[e.key], - height: - WorkUtils.communityLogoHeight[e.key], - ), - ), - ) - ], - ), - ], - ), - ), - ), - Container( - width: width < 1230 ? width * 0.05 : width * 0.1, - ), - ], - ) - ], - ), - ); - } -} diff --git a/lib/sections/about/about_mobile.dart b/lib/sections/about/about_mobile.dart deleted file mode 100644 index a8af81dd..00000000 --- a/lib/sections/about/about_mobile.dart +++ /dev/null @@ -1,132 +0,0 @@ -import 'package:flutter/foundation.dart'; -import 'package:folio/configs/configs.dart'; -import 'package:folio/utils/about_utils.dart'; -import 'package:folio/utils/utils.dart'; -import 'package:folio/utils/work_utils.dart'; - -import 'package:folio/widget/custom_text_heading.dart'; -import 'package:universal_html/html.dart' as html; - -import 'package:flutter/material.dart'; -import 'package:folio/constants.dart'; -import 'package:folio/widget/about_me_data.dart'; -import 'package:folio/widget/community_button.dart'; -import 'package:folio/widget/tech_widget.dart'; - -class AboutMobile extends StatelessWidget { - const AboutMobile({super.key}); - - @override - Widget build(BuildContext context) { - double height = MediaQuery.of(context).size.height; - - return Container( - padding: Space.h, - child: Column( - children: [ - const CustomSectionHeading( - text: '\nAbout Me', - ), - const CustomSectionSubHeading( - text: 'Get to know me :)', - ), - Space.y1!, - Image.asset( - StaticUtils.mobilePhoto, - height: height * 0.27, - ), - SizedBox( - height: height * 0.03, - ), - Align( - alignment: Alignment.centerLeft, - child: Text( - "Who am I?", - style: AppText.b2!.copyWith( - color: AppTheme.c!.primary, - ), - ), - ), - Space.y1!, - Text( - AboutUtils.aboutMeHeadline, - style: AppText.b2b!.copyWith( - fontFamily: 'Montserrat', - ), - ), - SizedBox( - height: height * 0.02, - ), - Text( - AboutUtils.aboutMeDetail, - style: AppText.l1!.copyWith( - height: 2, - letterSpacing: 1.1, - fontFamily: 'Montserrat', - ), - ), - Space.y!, - Divider( - color: Colors.grey[800], - thickness: AppDimensions.normalize(0.5), - ), - Space.y!, - Text( - 'Technologies I have worked with:', - style: AppText.l1!.copyWith( - color: AppTheme.c!.primary, - ), - ), - Space.y!, - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: kTools - .map( - (e) => ToolTechWidget(techName: e), - ) - .toList(), - ), - Space.y!, - Divider( - color: Colors.grey[800], - thickness: AppDimensions.normalize(0.5), - ), - SizedBox( - height: height * 0.02, - ), - const AboutMeData( - data: "Name", - information: "Muhammad Hamza", - ), - const AboutMeData( - data: "Email", - information: "hamza.6.shakeel@gmail.com", - ), - Space.y!, - OutlinedButton( - child: const Text("Resume"), - onPressed: () { - kIsWeb - ? html.window.open(StaticUtils.resume, "pdf") - : openURL(StaticUtils.resume); - }), - Space.y!, - Wrap( - alignment: WrapAlignment.center, - crossAxisAlignment: WrapCrossAlignment.center, - children: WorkUtils.logos - .asMap() - .entries - .map( - (e) => CommunityIconBtn( - icon: e.value, - link: WorkUtils.communityLinks[e.key], - height: WorkUtils.communityLogoHeight[e.key], - ), - ) - .toList()), - ], - ), - ); - } -} diff --git a/lib/sections/about/about_tablet.dart b/lib/sections/about/about_tablet.dart deleted file mode 100644 index df659fb6..00000000 --- a/lib/sections/about/about_tablet.dart +++ /dev/null @@ -1,173 +0,0 @@ -import 'package:folio/configs/configs.dart'; -import 'package:folio/utils/about_utils.dart'; -import 'package:folio/utils/utils.dart'; -import 'package:folio/utils/work_utils.dart'; - -import 'package:folio/widget/custom_text_heading.dart'; -import 'package:universal_html/html.dart' as html; -import 'package:flutter/material.dart'; -import 'package:folio/constants.dart'; -import 'package:folio/widget/about_me_data.dart'; -import 'package:folio/widget/community_button.dart'; -import 'package:folio/widget/tech_widget.dart'; - -class AboutTab extends StatelessWidget { - const AboutTab({super.key}); - - @override - Widget build(BuildContext context) { - double height = MediaQuery.of(context).size.height; - double width = MediaQuery.of(context).size.width; - - return Container( - padding: Space.h, - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - const Center( - child: CustomSectionHeading( - text: '\nAbout Me', - ), - ), - const Center( - child: CustomSectionSubHeading( - text: 'Get to know me :)', - ), - ), - Space.y1!, - Image.asset( - StaticUtils.mobilePhoto, - height: height * 0.27, - ), - SizedBox( - height: height * 0.03, - ), - Text( - "Who am I?", - style: AppText.b2!.copyWith( - color: AppTheme.c!.primary, - ), - ), - Space.y1!, - Text( - AboutUtils.aboutMeHeadline, - style: AppText.b2b!.copyWith( - fontFamily: 'Montserrat', - ), - ), - SizedBox( - height: height * 0.02, - ), - Text( - AboutUtils.aboutMeDetail, - style: AppText.l1!.copyWith( - height: 2, - letterSpacing: 1.1, - fontFamily: 'Montserrat', - ), - ), - Space.y!, - Divider( - color: Colors.grey[800], - thickness: AppDimensions.normalize(0.5), - ), - Space.y!, - Text( - 'Technologies I have worked with:', - style: AppText.l1!.copyWith( - color: AppTheme.c!.primary, - ), - ), - Row( - children: kTools - .map( - (e) => ToolTechWidget(techName: e), - ) - .toList(), - ), - Space.y!, - Divider( - color: Colors.grey[800], - thickness: AppDimensions.normalize(0.5), - ), - Space.y!, - Row( - children: [ - const Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - AboutMeData( - data: "Name", - information: "Muhammad Hamza", - ), - AboutMeData( - data: "Age", - information: "24", - ), - ], - ), - SizedBox( - width: width > 710 ? width * 0.2 : width * 0.05, - ), - const Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - AboutMeData( - data: "Email", - information: "hamza.6.shakeel@gmail.com", - ), - AboutMeData( - data: "From", - information: "Attock, PK", - ), - ], - ), - ], - ), - Space.y1!, - Row( - children: [ - SizedBox( - height: AppDimensions.normalize(13), - width: AppDimensions.normalize(40), - child: OutlinedButton( - onPressed: () => html.window.open(StaticUtils.resume, 'pdf'), - child: const Text( - "Resume", - ), - ), - ), - Space.x!, - Container( - width: width * 0.05, - decoration: BoxDecoration( - border: Border( - bottom: BorderSide( - color: Colors.grey[900]!, - width: 2.0, - ), - ), - ), - ), - SingleChildScrollView( - scrollDirection: Axis.horizontal, - child: Row( - children: WorkUtils.logos - .asMap() - .entries - .map( - (e) => CommunityIconBtn( - icon: e.value, - link: WorkUtils.communityLinks[e.key], - height: WorkUtils.communityLogoHeight[e.key], - ), - ) - .toList()), - ), - ], - ) - ], - ), - ); - } -} diff --git a/lib/sections/contact/contact.dart b/lib/sections/contact/contact.dart deleted file mode 100644 index e012ba96..00000000 --- a/lib/sections/contact/contact.dart +++ /dev/null @@ -1,17 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:folio/responsive/responsive.dart'; -import 'package:folio/sections/contact/contact_desktop.dart'; -import 'package:folio/sections/contact/contact_mobile.dart'; - -class Contact extends StatelessWidget { - const Contact({super.key}); - - @override - Widget build(BuildContext context) { - return const Responsive( - mobile: ContactMobileTab(), - tablet: ContactMobileTab(), - desktop: ContactDesktop(), - ); - } -} diff --git a/lib/sections/contact/contact_desktop.dart b/lib/sections/contact/contact_desktop.dart deleted file mode 100644 index e8372590..00000000 --- a/lib/sections/contact/contact_desktop.dart +++ /dev/null @@ -1,42 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:folio/animations/bottom_animation.dart'; -import 'package:folio/configs/configs.dart'; -import 'package:folio/utils/contact_utils.dart'; -import 'package:folio/widget/custom_text_heading.dart'; -import 'package:folio/widget/project_card.dart'; - -class ContactDesktop extends StatelessWidget { - const ContactDesktop({super.key}); - - @override - Widget build(BuildContext context) { - return Container( - padding: Space.all(1, 1), - child: Column( - children: [ - const CustomSectionHeading( - text: "\nGet in Touch", - ), - const CustomSectionSubHeading( - text: "Let's build something together :)\n\n", - ), - Space.y!, - Wrap( - alignment: WrapAlignment.center, - runSpacing: AppDimensions.normalize(10), - children: ContactUtils.contactIcon - .asMap() - .entries - .map((e) => WidgetAnimator( - child: ProjectCard( - projectIconData: e.value, - projectTitle: ContactUtils.titles[e.key], - projectDescription: ContactUtils.details[e.key], - ), - )) - .toList()), - ], - ), - ); - } -} diff --git a/lib/sections/contact/contact_mobile.dart b/lib/sections/contact/contact_mobile.dart deleted file mode 100644 index 4b9727a1..00000000 --- a/lib/sections/contact/contact_mobile.dart +++ /dev/null @@ -1,44 +0,0 @@ -import 'package:carousel_slider/carousel_slider.dart'; -import 'package:flutter/material.dart'; -import 'package:folio/configs/app_dimensions.dart'; -import 'package:folio/utils/contact_utils.dart'; -import 'package:folio/widget/custom_text_heading.dart'; -import 'package:folio/widget/project_card.dart'; - -class ContactMobileTab extends StatelessWidget { - const ContactMobileTab({super.key}); - - @override - Widget build(BuildContext context) { - return Column( - children: [ - const CustomSectionHeading( - text: "\nGet in Touch", - ), - const CustomSectionSubHeading( - text: "Let's build something together :)\n\n", - ), - CarouselSlider.builder( - itemCount: 3, - itemBuilder: (BuildContext context, int itemIndex, int i) => Padding( - padding: const EdgeInsets.symmetric(vertical: 10.0), - child: ProjectCard( - projectIconData: ContactUtils.contactIcon[i], - projectTitle: ContactUtils.titles[i], - projectDescription: ContactUtils.details[i], - ), - ), - options: CarouselOptions( - height: AppDimensions.normalize(90), - autoPlay: true, - autoPlayInterval: const Duration(seconds: 5), - enlargeCenterPage: true, - autoPlayCurve: Curves.fastOutSlowIn, - autoPlayAnimationDuration: const Duration(milliseconds: 800), - enableInfiniteScroll: false, - ), - ), - ], - ); - } -} diff --git a/lib/sections/home/home.dart b/lib/sections/home/home.dart deleted file mode 100644 index 93d907e5..00000000 --- a/lib/sections/home/home.dart +++ /dev/null @@ -1,18 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:folio/responsive/responsive.dart'; -import 'package:folio/sections/home/home_desktop.dart'; -import 'package:folio/sections/home/home_mobile.dart'; -import 'package:folio/sections/home/home_tab.dart'; - -class HomePage extends StatelessWidget { - const HomePage({super.key}); - - @override - Widget build(BuildContext context) { - return const Responsive( - mobile: HomeMobile(), - tablet: HomeTab(), - desktop: HomeDesktop(), - ); - } -} diff --git a/lib/sections/home/home_desktop.dart b/lib/sections/home/home_desktop.dart deleted file mode 100644 index b37f50ec..00000000 --- a/lib/sections/home/home_desktop.dart +++ /dev/null @@ -1,127 +0,0 @@ -import 'package:animated_text_kit/animated_text_kit.dart'; -import 'package:flutter/material.dart'; -import 'package:folio/animations/entrance_fader.dart'; -import 'package:folio/configs/configs.dart'; - -import 'package:folio/utils/utils.dart'; -import 'package:folio/widget/social_links.dart'; - -class HomeDesktop extends StatelessWidget { - const HomeDesktop({super.key}); - - @override - Widget build(BuildContext context) { - Size size = MediaQuery.of(context).size; - - return Container( - height: size.height * 1.025, - padding: Space.h, - child: Stack( - children: [ - Positioned( - bottom: 0, - right: 0, - child: Opacity( - opacity: 0.9, - child: EntranceFader( - offset: const Offset(0, 0), - delay: const Duration(seconds: 1), - duration: const Duration(milliseconds: 800), - child: Image.asset( - StaticUtils.blackWhitePhoto, - height: size.width < 1200 - ? size.height * 0.8 - : size.height * 0.85, - ), - ), - ), - ), - Container( - margin: EdgeInsets.fromLTRB( - AppDimensions.normalize(30), - AppDimensions.normalize(80), - 0, - 0, - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - 'WELCOME TO MY PORTFOLIO! ', - style: AppText.b1!.copyWith( - fontFamily: 'Montserrat', - ), - ), - EntranceFader( - offset: const Offset(0, 0), - delay: const Duration(seconds: 2), - duration: const Duration(milliseconds: 800), - child: Image.asset( - StaticUtils.hi, - height: AppDimensions.normalize(12), - ), - ), - ], - ), - Space.y1!, - Text( - "Muhammad", - style: AppText.h1!.copyWith( - fontFamily: 'Montserrat', - fontSize: AppDimensions.normalize(25), - fontWeight: FontWeight.w100, - ), - ), - Text( - "Hamza", - style: AppText.h1b!.copyWith( - fontSize: AppDimensions.normalize(25), - height: 1, - ), - ), - EntranceFader( - offset: const Offset(-10, 0), - delay: const Duration(seconds: 1), - duration: const Duration(milliseconds: 800), - child: Row( - children: [ - Icon( - Icons.play_arrow_rounded, - color: AppTheme.c!.primary!, - ), - AnimatedTextKit( - animatedTexts: [ - TyperAnimatedText( - ' Flutter Developer', - speed: const Duration(milliseconds: 50), - textStyle: AppText.b1, - ), - TyperAnimatedText( - ' UI/UX Enthusiast', - speed: const Duration(milliseconds: 50), - textStyle: AppText.b1, - ), - TyperAnimatedText( - ' A friend :)', - speed: const Duration(milliseconds: 50), - textStyle: AppText.b1, - ), - ], - isRepeatingAnimation: true, - ), - ], - ), - ), - Space.y2!, - const SocialLinks(), - ], - ), - ), - ], - ), - ); - } -} diff --git a/lib/sections/home/home_mobile.dart b/lib/sections/home/home_mobile.dart deleted file mode 100644 index 9686168c..00000000 --- a/lib/sections/home/home_mobile.dart +++ /dev/null @@ -1,109 +0,0 @@ -import 'package:animated_text_kit/animated_text_kit.dart'; -import 'package:flutter/material.dart'; -import 'package:folio/configs/configs.dart'; - -import 'package:folio/utils/utils.dart'; -import 'package:folio/widget/social_links.dart'; - -class HomeMobile extends StatelessWidget { - const HomeMobile({super.key}); - - @override - Widget build(BuildContext context) { - Size size = MediaQuery.of(context).size; - - return SizedBox( - height: size.height * 1.02, - child: Stack( - children: [ - Positioned( - bottom: 0.0, - right: -AppDimensions.normalize(25), - child: Opacity( - opacity: 0.9, - child: Image.asset( - StaticUtils.blackWhitePhoto, - height: AppDimensions.normalize(150), - ), - ), - ), - Container( - margin: EdgeInsets.fromLTRB( - AppDimensions.normalize(10), - AppDimensions.normalize(40), - 0, - 0, - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - "HEY THERE! ", - style: AppText.b2!.copyWith( - fontFamily: 'Montserrat', - ), - ), - Space.x!, - Image.asset( - StaticUtils.hi, - height: AppDimensions.normalize(10), - ), - ], - ), - Space.y!, - Text( - "Muhammad", - style: AppText.h3!.copyWith( - fontFamily: 'Montserrat', - fontWeight: FontWeight.w100, - ), - ), - Text( - "Hamza", - style: AppText.h3b!.copyWith( - height: 1, - ), - ), - Space.y!, - Row( - children: [ - Icon( - Icons.play_arrow_rounded, - color: AppTheme.c!.primary!, - ), - AnimatedTextKit( - animatedTexts: [ - TyperAnimatedText( - ' Flutter Developer', - speed: const Duration(milliseconds: 50), - textStyle: AppText.b1, - ), - TyperAnimatedText( - ' UI/UX Enthusiast', - speed: const Duration(milliseconds: 50), - textStyle: AppText.b1, - ), - TyperAnimatedText( - ' A friend :)', - speed: const Duration(milliseconds: 50), - textStyle: AppText.b1, - ), - ], - repeatForever: true, - isRepeatingAnimation: true, - ), - ], - ), - Space.y!, - const SocialLinks(), - ], - ), - ), - ], - ), - ); - } -} diff --git a/lib/sections/home/home_tab.dart b/lib/sections/home/home_tab.dart deleted file mode 100644 index 4a696a62..00000000 --- a/lib/sections/home/home_tab.dart +++ /dev/null @@ -1,124 +0,0 @@ -import 'package:animated_text_kit/animated_text_kit.dart'; -import 'package:flutter/material.dart'; -import 'package:folio/animations/entrance_fader.dart'; -import 'package:folio/configs/configs.dart'; -import 'package:folio/utils/utils.dart'; - -import 'package:folio/widget/social_links.dart'; - -class HomeTab extends StatelessWidget { - const HomeTab({super.key}); - - @override - Widget build(BuildContext context) { - Size size = MediaQuery.of(context).size; - - return SizedBox( - height: size.height * 1.02, - child: Stack( - children: [ - Positioned( - bottom: 0, - right: 0, - child: Opacity( - opacity: 0.9, - child: EntranceFader( - offset: const Offset(0, 0), - delay: const Duration(seconds: 1), - duration: const Duration(milliseconds: 800), - child: Image.asset( - StaticUtils.blackWhitePhoto, - height: size.width < 1200 - ? size.height * 0.75 - : size.height * 0.85, - ), - ), - ), - ), - Container( - margin: EdgeInsets.fromLTRB( - AppDimensions.normalize(30), - AppDimensions.normalize(50), - 0, - 0, - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - 'WELCOME TO MY PORTFOLIO! ', - style: AppText.b2!.copyWith( - fontFamily: 'Montserrat', - ), - ), - EntranceFader( - offset: const Offset(0, 0), - delay: const Duration(seconds: 2), - duration: const Duration(milliseconds: 800), - child: Image.asset( - StaticUtils.hi, - height: AppDimensions.normalize(12), - ), - ), - ], - ), - Space.y1!, - Text( - "Muhammad", - style: AppText.h1!.copyWith( - fontFamily: 'Montserrat', - fontWeight: FontWeight.w100, - ), - ), - Text( - "Hamza", - style: AppText.h1b!.copyWith( - height: 1, - ), - ), - EntranceFader( - offset: const Offset(-10, 0), - delay: const Duration(seconds: 1), - duration: const Duration(milliseconds: 800), - child: Row( - children: [ - Icon( - Icons.play_arrow_rounded, - color: AppTheme.c!.primary!, - ), - AnimatedTextKit( - animatedTexts: [ - TyperAnimatedText( - ' Flutter Developer', - speed: const Duration(milliseconds: 50), - textStyle: AppText.b1, - ), - TyperAnimatedText( - ' UI/UX Enthusiast', - speed: const Duration(milliseconds: 50), - textStyle: AppText.b1, - ), - TyperAnimatedText( - ' A friend :)', - speed: const Duration(milliseconds: 50), - textStyle: AppText.b1, - ), - ], - isRepeatingAnimation: true, - ), - ], - ), - ), - Space.y2!, - const SocialLinks(), - ], - ), - ), - ], - ), - ); - } -} diff --git a/lib/sections/main/main_section.dart b/lib/sections/main/main_section.dart deleted file mode 100644 index c3296243..00000000 --- a/lib/sections/main/main_section.dart +++ /dev/null @@ -1,53 +0,0 @@ -import 'package:folio/animations/entrance_fader.dart'; -import 'package:folio/configs/app.dart'; -import 'package:folio/configs/configs.dart'; -import 'package:folio/provider/app_provider.dart'; -import 'package:folio/provider/drawer_provider.dart'; -import 'package:folio/provider/scroll_provider.dart'; -import 'package:folio/responsive/responsive.dart'; -import 'package:folio/utils/navbar_utils.dart'; -import 'package:folio/utils/utils.dart'; -import 'package:folio/widget/navbar_actions_button.dart'; -import 'package:folio/widget/navbar_logo.dart'; -import 'package:provider/provider.dart'; - -import 'package:universal_html/html.dart' as html; -import 'package:flutter/material.dart'; -import 'package:folio/constants.dart'; -import 'package:folio/widget/arrow_on_top.dart'; - -part 'widgets/_navbar_desktop.dart'; -part 'widgets/_mobile_drawer.dart'; -part 'widgets/_body.dart'; - -class MainPage extends StatefulWidget { - const MainPage({super.key}); - - @override - State createState() => _MainPageState(); -} - -class _MainPageState extends State { - @override - Widget build(BuildContext context) { - App.init(context); - final drawerProvider = Provider.of(context); - - return Scaffold( - key: drawerProvider.key, - extendBodyBehindAppBar: true, - drawer: !Responsive.isDesktop(context) ? const _MobileDrawer() : null, - body: SafeArea( - child: Stack( - children: [ - const _Body(), - const ArrowOnTop(), - Responsive.isTablet(context) || Responsive.isMobile(context) - ? const _NavBarTablet() - : const _NavbarDesktop(), - ], - ), - ), - ); - } -} diff --git a/lib/sections/main/widgets/_body.dart b/lib/sections/main/widgets/_body.dart deleted file mode 100644 index 587b2d79..00000000 --- a/lib/sections/main/widgets/_body.dart +++ /dev/null @@ -1,16 +0,0 @@ -part of '../main_section.dart'; - -class _Body extends StatelessWidget { - const _Body(); - - @override - Widget build(BuildContext context) { - final scrollProvider = Provider.of(context); - - return ListView.builder( - controller: scrollProvider.controller, - itemCount: BodyUtils.views.length, - itemBuilder: (context, index) => BodyUtils.views[index], - ); - } -} diff --git a/lib/sections/main/widgets/_mobile_drawer.dart b/lib/sections/main/widgets/_mobile_drawer.dart deleted file mode 100644 index ee2032f5..00000000 --- a/lib/sections/main/widgets/_mobile_drawer.dart +++ /dev/null @@ -1,89 +0,0 @@ -part of '../main_section.dart'; - -class _MobileDrawer extends StatelessWidget { - const _MobileDrawer(); - - @override - Widget build(BuildContext context) { - final appProvider = Provider.of(context); - final scrollProvider = Provider.of(context); - - return Drawer( - child: Material( - color: appProvider.isDark ? Colors.grey[900] : Colors.white, - child: Padding( - padding: const EdgeInsets.fromLTRB(0, 25.0, 0, 0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Center( - child: NavBarLogo(), - ), - const Divider(), - ListTile( - leading: Icon( - Icons.light_mode, - color: AppTheme.c!.primary!, - ), - title: const Text( - "Dark Mode", - ), - trailing: Switch( - inactiveTrackColor: Colors.grey, - value: appProvider.isDark, - onChanged: (value) { - appProvider - .setTheme(value ? ThemeMode.dark : ThemeMode.light); - }, - activeColor: AppTheme.c!.primary, - ), - ), - const Divider(), - ...NavBarUtils.names.asMap().entries.map( - (e) => Padding( - padding: const EdgeInsets.all(8.0), - child: MaterialButton( - hoverColor: AppTheme.c!.primary!.withAlpha(70), - onPressed: () { - scrollProvider.scrollMobile(e.key); - Navigator.pop(context); - }, - child: ListTile( - leading: Icon( - NavBarUtils.icons[e.key], - color: AppTheme.c!.primary, - ), - title: Text( - e.value, - style: AppText.l1, - ), - ), - ), - ), - ), - Padding( - padding: const EdgeInsets.all(8.0), - child: MaterialButton( - hoverColor: AppTheme.c!.primary!.withAlpha(150), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(5.0), - side: BorderSide(color: AppTheme.c!.primary!)), - onPressed: () => openURL(StaticUtils.resume), - child: const ListTile( - leading: Icon( - Icons.book, - color: Colors.red, - ), - title: Text( - 'RESUME', - ), - ), - ), - ), - ], - ), - ), - ), - ); - } -} diff --git a/lib/sections/main/widgets/_navbar_desktop.dart b/lib/sections/main/widgets/_navbar_desktop.dart deleted file mode 100644 index 4666b1e0..00000000 --- a/lib/sections/main/widgets/_navbar_desktop.dart +++ /dev/null @@ -1,97 +0,0 @@ -part of '../main_section.dart'; - -class _NavbarDesktop extends StatelessWidget { - const _NavbarDesktop(); - - @override - Widget build(BuildContext context) { - final appProvider = Provider.of(context); - - return Container( - padding: Space.all(), - color: appProvider.isDark ? Colors.black : Colors.white, - child: Row( - children: [ - const NavBarLogo(), - Space.xm!, - ...NavBarUtils.names.asMap().entries.map( - (e) => NavBarActionButton( - label: e.value, - index: e.key, - ), - ), - EntranceFader( - offset: const Offset(0, -10), - delay: const Duration(milliseconds: 100), - duration: const Duration(milliseconds: 250), - child: MaterialButton( - hoverColor: AppTheme.c!.primary!.withAlpha(150), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(5.0), - side: BorderSide( - color: AppTheme.c!.primary!, - ), - ), - onPressed: () { - html.window.open( - StaticUtils.resume, - "pdf", - ); - }, - child: Padding( - padding: Space.all(1.25, 0.45), - child: Text( - 'RESUME', - style: AppText.l1b, - ), - ), - ), - ), - Space.x!, - Switch( - inactiveTrackColor: Colors.grey, - value: appProvider.isDark, - onChanged: (value) { - appProvider.setTheme( - !value ? ThemeMode.light : ThemeMode.dark, - ); - }, - activeColor: AppTheme.c!.primary!, - ), - Space.x!, - ], - ), - ); - } -} - -class _NavBarTablet extends StatelessWidget { - const _NavBarTablet(); - - @override - Widget build(BuildContext context) { - final drawerProvider = Provider.of(context); - - return Padding( - padding: Space.v!, - child: Row( - children: [ - Space.x1!, - IconButton( - highlightColor: Colors.white54, - splashRadius: AppDimensions.normalize(10), - onPressed: () { - drawerProvider.key.currentState!.openDrawer(); - }, - icon: const Icon( - Icons.menu, - ), - ), - Space.xm!, - const NavBarLogo(), - Space.x1!, - ], - ), - ); - } -} diff --git a/lib/sections/portfolio/portfolio.dart b/lib/sections/portfolio/portfolio.dart deleted file mode 100644 index 808bbdf1..00000000 --- a/lib/sections/portfolio/portfolio.dart +++ /dev/null @@ -1,17 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:folio/responsive/responsive.dart'; -import 'package:folio/sections/portfolio/portfolio_desktop.dart'; -import 'package:folio/sections/portfolio/portfolio_mobile.dart'; - -class Portfolio extends StatelessWidget { - const Portfolio({super.key}); - - @override - Widget build(BuildContext context) { - return const Responsive( - mobile: PortfolioMobileTab(), - tablet: PortfolioMobileTab(), - desktop: PortfolioDesktop(), - ); - } -} diff --git a/lib/sections/portfolio/portfolio_desktop.dart b/lib/sections/portfolio/portfolio_desktop.dart deleted file mode 100644 index 8f3016f6..00000000 --- a/lib/sections/portfolio/portfolio_desktop.dart +++ /dev/null @@ -1,63 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:folio/configs/configs.dart'; -import 'package:folio/constants.dart'; -import 'package:folio/utils/project_utils.dart'; -import 'package:folio/utils/utils.dart'; -import 'package:folio/widget/custom_text_heading.dart'; -import 'package:folio/widget/project_card.dart'; - -class PortfolioDesktop extends StatefulWidget { - const PortfolioDesktop({super.key}); - - @override - State createState() => _PortfolioDesktopState(); -} - -class _PortfolioDesktopState extends State { - @override - Widget build(BuildContext context) { - return Container( - padding: Space.h!, - child: Column( - children: [ - const CustomSectionHeading( - text: "\nPortfolio", - ), - const CustomSectionSubHeading( - text: "Here are few samples of my previous work :)\n\n", - ), - Wrap( - alignment: WrapAlignment.center, - crossAxisAlignment: WrapCrossAlignment.center, - runSpacing: AppDimensions.normalize(10), - children: ProjectUtils.banners - .asMap() - .entries - .map( - (e) => ProjectCard( - banner: e.value, - projectIcon: ProjectUtils.icons[e.key], - projectLink: ProjectUtils.links[e.key], - projectTitle: ProjectUtils.titles[e.key], - projectDescription: ProjectUtils.description[e.key], - ), - ) - .toList(), - ), - Space.y2!, - SizedBox( - height: AppDimensions.normalize(14), - width: AppDimensions.normalize(50), - child: OutlinedButton( - onPressed: () => openURL(StaticUtils.gitHub), - child: Text( - 'See More', - style: AppText.l1b, - ), - ), - ) - ], - ), - ); - } -} diff --git a/lib/sections/portfolio/portfolio_mobile.dart b/lib/sections/portfolio/portfolio_mobile.dart deleted file mode 100644 index 6bc8b4c2..00000000 --- a/lib/sections/portfolio/portfolio_mobile.dart +++ /dev/null @@ -1,60 +0,0 @@ -import 'package:carousel_slider/carousel_slider.dart'; -import 'package:flutter/material.dart'; -import 'package:folio/configs/configs.dart'; -import 'package:folio/constants.dart'; -import 'package:folio/utils/project_utils.dart'; -import 'package:folio/utils/utils.dart'; -import 'package:folio/widget/custom_text_heading.dart'; -import 'package:folio/widget/project_card.dart'; - -class PortfolioMobileTab extends StatelessWidget { - const PortfolioMobileTab({super.key}); - - @override - Widget build(BuildContext context) { - double height = MediaQuery.of(context).size.height; - return Column( - children: [ - const CustomSectionHeading( - text: "\nPortfolio", - ), - const CustomSectionSubHeading( - text: "Here are few samples of my previous work :)\n\n", - ), - CarouselSlider.builder( - itemCount: ProjectUtils.titles.length, - itemBuilder: (BuildContext context, int itemIndex, int i) => Padding( - padding: const EdgeInsets.symmetric(vertical: 15.0), - child: ProjectCard( - projectIcon: ProjectUtils.icons[i], - projectLink: ProjectUtils.links[i], - projectTitle: ProjectUtils.titles[i], - projectDescription: ProjectUtils.description[i], - ), - ), - options: CarouselOptions( - height: height * 0.4, - autoPlay: true, - autoPlayInterval: const Duration(seconds: 5), - enlargeCenterPage: true, - autoPlayCurve: Curves.fastOutSlowIn, - autoPlayAnimationDuration: const Duration(milliseconds: 800), - enableInfiniteScroll: false, - ), - ), - Space.y!, - SizedBox( - height: AppDimensions.normalize(14), - width: AppDimensions.normalize(50), - child: OutlinedButton( - onPressed: () => openURL(StaticUtils.gitHub), - child: Text( - 'See More', - style: AppText.l1b, - ), - ), - ) - ], - ); - } -} diff --git a/lib/sections/services/services.dart b/lib/sections/services/services.dart deleted file mode 100644 index 8c9df92e..00000000 --- a/lib/sections/services/services.dart +++ /dev/null @@ -1,32 +0,0 @@ -import 'package:carousel_slider/carousel_slider.dart'; -import 'package:flip_card/flip_card.dart'; -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; -import 'package:folio/configs/configs.dart'; -import 'package:folio/constants.dart'; -import 'package:folio/provider/app_provider.dart'; -import 'package:folio/responsive/responsive.dart'; -import 'package:folio/utils/services_utils.dart'; -import 'package:folio/utils/utils.dart'; -import 'package:folio/widget/custom_text_heading.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -import 'package:provider/provider.dart'; - -part 'services_desktop.dart'; -part 'services_mobile.dart'; - -part 'widgets/_services_card.dart'; -part 'widgets/_services_card_back.dart'; - -class Services extends StatelessWidget { - const Services({super.key}); - - @override - Widget build(BuildContext context) { - return const Responsive( - mobile: ServiceMobile(), - tablet: ServiceMobile(), - desktop: ServiceDesktop(), - ); - } -} diff --git a/lib/sections/services/services_desktop.dart b/lib/sections/services/services_desktop.dart deleted file mode 100644 index 73965552..00000000 --- a/lib/sections/services/services_desktop.dart +++ /dev/null @@ -1,51 +0,0 @@ -part of 'services.dart'; - -class ServiceDesktop extends StatefulWidget { - const ServiceDesktop({super.key}); - - @override - ServiceDesktopState createState() => ServiceDesktopState(); -} - -class ServiceDesktopState extends State { - GlobalKey cardKey = GlobalKey(); - - @override - Widget build(BuildContext context) { - double height = MediaQuery.of(context).size.height; - double width = MediaQuery.of(context).size.width; - - return Container( - padding: Space.hf(4), - child: Column( - children: [ - const CustomSectionHeading( - text: '\nWhat I can do?', - ), - const CustomSectionSubHeading( - text: 'I may not be perfect but surely I\'m of some use :)\n\n', - ), - Space.y!, - Wrap( - spacing: width * 0.05, - runSpacing: height * 0.05, - alignment: WrapAlignment.center, - crossAxisAlignment: WrapCrossAlignment.center, - children: ServicesUtils.servicesIcons - .asMap() - .entries - .map( - (e) => _ServiceCard( - serviceIcon: ServicesUtils.servicesIcons[e.key], - serviceTitle: ServicesUtils.servicesTitles[e.key], - serviceDescription: - ServicesUtils.servicesDescription[e.key], - ), - ) - .toList(), - ) - ], - ), - ); - } -} diff --git a/lib/sections/services/services_mobile.dart b/lib/sections/services/services_mobile.dart deleted file mode 100644 index 4eeb0a6f..00000000 --- a/lib/sections/services/services_mobile.dart +++ /dev/null @@ -1,43 +0,0 @@ -part of 'services.dart'; - -class ServiceMobile extends StatelessWidget { - const ServiceMobile({super.key}); - - @override - Widget build(BuildContext context) { - double height = MediaQuery.of(context).size.height; - double width = MediaQuery.of(context).size.width; - return Column( - children: [ - const CustomSectionHeading( - text: '\nWhat I can do?', - ), - const CustomSectionSubHeading( - text: 'I may not be perfect but surely I\'m of some use :)\n\n', - ), - Space.y!, - CarouselSlider.builder( - itemCount: ServicesUtils.servicesTitles.length, - itemBuilder: (BuildContext context, int itemIndex, int i) => Padding( - padding: const EdgeInsets.symmetric(vertical: 10.0), - child: _ServiceCard( - serviceIcon: ServicesUtils.servicesIcons[i], - serviceTitle: ServicesUtils.servicesTitles[i], - serviceDescription: ServicesUtils.servicesDescription[i], - ), - ), - options: CarouselOptions( - viewportFraction: 0.65, - height: width < 450 ? height * 0.4 : height * 0.4, - autoPlay: true, - autoPlayInterval: const Duration(seconds: 5), - enlargeCenterPage: true, - autoPlayCurve: Curves.fastOutSlowIn, - autoPlayAnimationDuration: const Duration(milliseconds: 800), - enableInfiniteScroll: false, - ), - ) - ], - ); - } -} diff --git a/lib/sections/services/widgets/_services_card.dart b/lib/sections/services/widgets/_services_card.dart deleted file mode 100644 index 7f3c180b..00000000 --- a/lib/sections/services/widgets/_services_card.dart +++ /dev/null @@ -1,120 +0,0 @@ -part of '../services.dart'; - -class _ServiceCard extends StatefulWidget { - final String serviceIcon; - final String serviceTitle; - final String serviceDescription; - - const _ServiceCard({ - required this.serviceIcon, - required this.serviceTitle, - required this.serviceDescription, - }); - - @override - _ServiceCardState createState() => _ServiceCardState(); -} - -class _ServiceCardState extends State<_ServiceCard> { - GlobalKey cardKey = GlobalKey(); - bool isHover = false; - - @override - Widget build(BuildContext context) { - final appProvider = Provider.of(context); - - return InkWell( - hoverColor: Colors.transparent, - splashColor: Colors.transparent, - highlightColor: Colors.transparent, - onTap: () { - cardKey.currentState!.toggleCard(); - }, - onHover: (isHovering) { - if (isHovering) { - setState(() { - isHover = true; - }); - } else { - setState(() { - isHover = false; - }); - } - }, - child: FlipCard( - flipOnTouch: kIsWeb ? false : true, - key: cardKey, - back: Container( - width: AppDimensions.normalize(100), - height: AppDimensions.normalize(80), - padding: const EdgeInsets.symmetric(vertical: 8.0, horizontal: 12.0), - decoration: BoxDecoration( - color: appProvider.isDark ? Colors.grey[900] : Colors.white, - borderRadius: BorderRadius.circular(15), - boxShadow: isHover - ? [ - BoxShadow( - color: AppTheme.c!.primary!.withAlpha(100), - blurRadius: 12.0, - offset: const Offset(0.0, 0.0), - ) - ] - : [ - BoxShadow( - color: Colors.black.withAlpha(100), - blurRadius: 12.0, - offset: const Offset(0.0, 0.0), - ) - ], - ), - child: _ServiceCardBackWidget( - serviceDesc: widget.serviceDescription, - serviceTitle: widget.serviceTitle, - ), - ), - front: Container( - width: AppDimensions.normalize(100), - height: AppDimensions.normalize(80), - padding: const EdgeInsets.symmetric(vertical: 8.0, horizontal: 12.0), - decoration: BoxDecoration( - color: appProvider.isDark ? Colors.grey[900] : Colors.white, - borderRadius: BorderRadius.circular(15), - boxShadow: isHover - ? [ - BoxShadow( - color: AppTheme.c!.primary!.withAlpha(100), - blurRadius: 12.0, - offset: const Offset(0.0, 0.0), - ) - ] - : [ - BoxShadow( - color: Colors.black.withAlpha(100), - blurRadius: 12.0, - offset: const Offset(0.0, 0.0), - ) - ], - ), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Image.asset( - widget.serviceIcon, - height: AppDimensions.normalize(30), - color: widget.serviceIcon.contains(StaticUtils.openSource) && - !appProvider.isDark - ? Colors.black - : null, - ), - Space.y1!, - Text( - widget.serviceTitle, - textAlign: TextAlign.center, - ), - ], - ), - ), - ), - ); - } -} diff --git a/lib/sections/services/widgets/_services_card_back.dart b/lib/sections/services/widgets/_services_card_back.dart deleted file mode 100644 index 7857d701..00000000 --- a/lib/sections/services/widgets/_services_card_back.dart +++ /dev/null @@ -1,109 +0,0 @@ -part of '../services.dart'; - -class _ServiceCardBackWidget extends StatelessWidget { - const _ServiceCardBackWidget({ - required this.serviceDesc, - required this.serviceTitle, - }); - - final String serviceDesc; - final String serviceTitle; - - @override - Widget build(BuildContext context) { - final appProvider = Provider.of(context); - return Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text( - serviceDesc, - style: AppText.l1, - ), - Divider( - color: appProvider.isDark ? Colors.white : Colors.black38, - ), - SizedBox( - height: AppDimensions.normalize(14), - width: AppDimensions.normalize(60), - child: MaterialButton( - color: AppTheme.c!.primary, - onPressed: () => showDialog( - context: context, - builder: (contecxt) => AlertDialog( - title: Text( - "Hire Me!", - style: AppText.b2b, - ), - actions: [ - TextButton( - onPressed: () => Navigator.pop(context), - child: const Text("Back"), - ) - ], - content: Column( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - MaterialButton( - height: 40.0, - onPressed: () => openURL( - 'https://api.whatsapp.com/send?phone=923460159889', - ), - color: const Color(0xff34CB62), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - const Icon( - FontAwesomeIcons.whatsapp, - color: Colors.white, - ), - Space.x!, - Text( - 'WhatsApp', - style: AppText.l1!.copyWith( - color: Colors.white, - ), - ), - ], - ), - ), - Space.y1!, - MaterialButton( - height: 40.0, - onPressed: () => openURL( - 'https://www.upwork.com/freelancers/~0197b0f6aaeba9675f', - ), - color: const Color(0xff13A800), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Image.network( - 'https://img.icons8.com/ios-filled/50/000000/upwork.png', - height: 35.0, - color: Colors.white, - ), - Space.x!, - Text( - 'Upwork', - style: AppText.l1!.copyWith( - color: Colors.white, - ), - ), - ], - ), - ), - ], - ), - )), - child: Text( - 'HIRE ME!', - style: AppText.b2!.copyWith( - color: Colors.white, - ), - ), - ), - ) - ], - ); - } -} diff --git a/lib/utils/about_utils.dart b/lib/utils/about_utils.dart deleted file mode 100644 index e3ef8784..00000000 --- a/lib/utils/about_utils.dart +++ /dev/null @@ -1,7 +0,0 @@ -class AboutUtils { - static const String aboutMeHeadline = - 'I\'m Muhammad Hamza, a Flutter developer, Technical blog writer and UI designer.'; - - static const String aboutMeDetail = - 'I\'m a Fresh Graduate with Computer Science as Majors from COMSATS University, Islamabad. I have been developing mobile apps for over 2 years now. I have worked in teams for various startups and helped them in launching their prototypes and got valuable learning experience. Been a former Google Developer Student Clubs (DSC) lead and also CEO/Co-Founder Flutter Islamabad, Pakistan. Currently working as Associate Software Engineer at Sastaticket.pk'; -} diff --git a/lib/utils/contact_utils.dart b/lib/utils/contact_utils.dart deleted file mode 100644 index d3a6117f..00000000 --- a/lib/utils/contact_utils.dart +++ /dev/null @@ -1,21 +0,0 @@ -import 'package:flutter/material.dart'; - -class ContactUtils { - static const List contactIcon = [ - Icons.home, - Icons.phone, - Icons.mail, - ]; - - static const List titles = [ - "Location", - "Phone", - "Email", - ]; - - static const List details = [ - "Attock, Pakistan", - "(+92) 346 0159889", - "hamza.6.shakeel@gmail.com", - ]; -} diff --git a/lib/utils/navbar_utils.dart b/lib/utils/navbar_utils.dart deleted file mode 100644 index 80d4c92d..00000000 --- a/lib/utils/navbar_utils.dart +++ /dev/null @@ -1,20 +0,0 @@ -import 'package:flutter/material.dart'; - -class NavBarUtils { - static const List names = [ - 'HOME', - 'ABOUT', - 'SERVICES', - 'PROJECTS', - 'CONTACT', - ]; - - static const List icons = [ - Icons.home, - Icons.person, - Icons.work, - Icons.build, - Icons.settings, - Icons.contact_page, - ]; -} diff --git a/lib/utils/project_utils.dart b/lib/utils/project_utils.dart deleted file mode 100644 index 41add261..00000000 --- a/lib/utils/project_utils.dart +++ /dev/null @@ -1,65 +0,0 @@ -class ProjectUtils { - static const List banners = [ - "assets/projects/snackbar.png", - "assets/projects/quranB.png", - "assets/projects/medkitB.png", - "assets/projects/hereiamB.png", - "assets/projects/covidB.png", - ]; - - static const List icons = [ - "assets/projects/flutter.png", - "assets/projects/quran.png", - "assets/projects/medkit.png", - "assets/projects/hereiam.png", - "assets/projects/covid.png", - "assets/projects/messenger.png", - "assets/projects/flutter.png", - "assets/projects/earbender.png", - "assets/projects/java.png", - "assets/projects/android.png", - "assets/services/open_b.png", - ]; - - static const List titles = [ - "Awesome Snackbar Dart Package", - "The Holy Qur'an", - "MedKit", - "Here I Am", - "COVID-19", - "Messenger Chat Head UI", - "flutter.dev - Flutter Web", - "Earbender", - "File Transfer Protocol", - "My Order", - "Hidev", - ]; - - static const List description = [ - "A very unique dart package to uplift the snackbar experience in flutter. Available at pub.dev now!", - "Application of Holy book of Muslims, Al-Qur'an. Developed using Flutter. Powered with live RestAPI given in README.md", - "A Phramacy app developed using Flutter powered with Firebase as database with Doctor and Patient panels.", - "Here I am is an Alert app that Sends alert SMS holding your location (Address and Google Maps) to your loved ones.", - "A live trakcer for COVID19 stats across the Globe and my Home country Pakistan. It uses APIs so the data is live.", - "Tried to clone the famous Chat Heads by Facebook Messenger using Flutter. Its basically in-app not exactly like the original chat head.", - "Flutter Official Site clone using Flutter Web. Try the live site here. For the time being its not responsive fully so there might be responsiveness issues.", - "A concept of Music App developed using Flutter. Having functionality of playing Audio.", - "A simple GUI based Java application that sends file from Client to Server but not the other way around.", - "A concept app for self-services at various restaurants now a days. More like a Restaurant Ordering System.", - "Its my end semester project. The whole design I developed here is an inspiration from my favortie Flutter Developer Marcin Szałek and his blog Fidev." - ]; - - static const List links = [ - "https://pub.dev/packages/awesome_snackbar_content", - "https://github.com/mhmzdev/The_Holy_Quran_App", - "https://github.com/mhmzdev/MedKit-Pharmacy-App-Using-Flutter", - "https://github.com/mhmzdev/Here-I-Am-Alert-App", - "https://github.com/mhmzdev/Covid19-Tracker-App", - "https://github.com/mhmzdev/Messenger-Chat-Head-Flutter-UI", - "https://github.com/mhmzdev/flutter.dev-Flutter-Web-Clone", - "https://github.com/mhmzdev/Earbender_Music_App", - "https://github.com/mhmzdev/FTP_GUI_Java", - "https://github.com/mhmzdev/My-Order-Resturant-Ordering-System", - "https://github.com/mhmzdev/Hidev_Web", - ]; -} diff --git a/lib/utils/services_utils.dart b/lib/utils/services_utils.dart deleted file mode 100644 index e4f59518..00000000 --- a/lib/utils/services_utils.dart +++ /dev/null @@ -1,27 +0,0 @@ -import 'package:folio/utils/utils.dart'; - -class ServicesUtils { - static const List servicesIcons = [ - StaticUtils.appDev, - StaticUtils.uiux, - StaticUtils.rapid, - StaticUtils.blog, - StaticUtils.openSource, - ]; - - static const List servicesTitles = [ - "Mobile App Development", - "UI/UX Designing", - "Rapid Prototyping", - "Technical Blog Writing", - "Open Source - GitHub", - ]; - - static const List servicesDescription = [ - "Android app development via Flutter\n- Splash Screen\n- Firebase Auth/Cloud\n- REST APIs\n- Maps integration and more...!", - "Modern UI/UX Designing\n- Adobe XD\n- Mobile & Web designs\n- Interactive UI designs\n- Responsiveness\n- Promo Videos and more..!", - "Rapid Prototype via Flutter\n- Working MVP\n- Quick & Working prototype", - "Technical Blog writing\n- Medium blogs\n- Soothing header images\n- SEO friendly\n- Researched topics and more..!", - "Open source GitHub Projects\n- Awesome README.md\n- Well documented\n- Header images and more...!", - ]; -} diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart deleted file mode 100644 index 2183828a..00000000 --- a/lib/utils/utils.dart +++ /dev/null @@ -1,65 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:folio/sections/about/about.dart'; -import 'package:folio/sections/contact/contact.dart'; -import 'package:folio/sections/home/home.dart'; -import 'package:folio/sections/portfolio/portfolio.dart'; -import 'package:folio/sections/services/services.dart'; -import 'package:folio/widget/footer.dart'; - -class StaticUtils { - static const String hi = 'assets/hi.gif'; - static const String logo1024 = 'assets/app/1024.png'; - - // photos - static const String mobilePhoto = 'assets/photos/mobile.png'; - static const String coloredPhoto = 'assets/photos/colored.png'; - static const String blackWhitePhoto = 'assets/photos/black-white.png'; - - // work - static const String dsc = 'assets/work/dsc.png'; - static const String sastaticket = 'assets/work/st.png'; - static const String university = 'assets/work/cui.png'; - static const String fullterIsb = 'assets/work/flutterIsl.png'; - - // services - static const String uiux = 'assets/services/ui.png'; - static const String blog = 'assets/services/blog.png'; - static const String appDev = 'assets/services/app.png'; - static const String rapid = 'assets/services/rapid.png'; - static const String openSource = 'assets/services/open.png'; - static const String openSourceBlack = 'assets/services/open_b.png'; - - static const List socialIconURL = [ - "https://img.icons8.com/metro/208/ffffff/facebook-new--v2.png", - "https://img.icons8.com/ios-glyphs/480/ffffff/instagram-new.png", - "https://img.icons8.com/android/480/ffffff/twitter.png", - "https://img.icons8.com/metro/308/ffffff/linkedin.png", - "https://img.icons8.com/material-rounded/384/ffffff/github.png", - "https://img.icons8.com/ios-filled/500/ffffff/medium-monogram--v1.png" - ]; - - static const List socialLinks = [ - "https://facebook.com/mhmzdev", - "https://instagram.com/mhmzdev", - "https://twitter.com/mhmzdev", - "https://linkedin.com/in/mhmzdev", - "https://github.com/mhmzdev", - "https://mhmzdev.medium.com" - ]; - - static const String resume = - 'https://drive.google.com/file/d/1bDNNrkQtNVJbXcdwMSx0crQQvAF_nMwV/view?usp=sharing'; - - static const String gitHub = 'https://github.com/mhmzdev'; -} - -class BodyUtils { - static const List views = [ - HomePage(), - About(), - Services(), - Portfolio(), - Contact(), - Footer(), - ]; -} diff --git a/lib/utils/work_utils.dart b/lib/utils/work_utils.dart deleted file mode 100644 index 539e7369..00000000 --- a/lib/utils/work_utils.dart +++ /dev/null @@ -1,19 +0,0 @@ -import 'package:folio/utils/utils.dart'; - -class WorkUtils { - static const List logos = [ - StaticUtils.university, - StaticUtils.fullterIsb, - StaticUtils.dsc, - StaticUtils.sastaticket, - ]; - - static const List communityLinks = [ - "https://www.comsats.edu.pk/", - "https://web.facebook.com/FlutterIslamabadPakistan/", - "https://dsc.community.dev/comsats-university-islamabad/", - "https://sastaticket.pk/" - ]; - - static const List communityLogoHeight = [60.0, 70.0, 30.0, 70.0]; -} diff --git a/lib/widget/about_me_data.dart b/lib/widget/about_me_data.dart deleted file mode 100644 index 8d53f3ab..00000000 --- a/lib/widget/about_me_data.dart +++ /dev/null @@ -1,43 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:folio/configs/app_typography.dart'; -import 'package:folio/provider/app_provider.dart'; -import 'package:provider/provider.dart'; - -class AboutMeData extends StatelessWidget { - final String data; - final String information; - final Alignment? alignment; - - const AboutMeData({ - super.key, - required this.data, - required this.information, - this.alignment, - }); - @override - Widget build(BuildContext context) { - final appProvider = Provider.of(context); - - return Align( - alignment: alignment ?? Alignment.center, - child: RichText( - text: TextSpan( - children: [ - TextSpan( - text: "$data: ", - style: AppText.l1b!.copyWith( - color: appProvider.isDark ? Colors.white : Colors.black, - ), - ), - TextSpan( - text: " $information\n", - style: AppText.l1!.copyWith( - color: appProvider.isDark ? Colors.white : Colors.black, - ), - ), - ], - ), - ), - ); - } -} diff --git a/lib/widget/arrow_on_top.dart b/lib/widget/arrow_on_top.dart deleted file mode 100644 index 5856fc63..00000000 --- a/lib/widget/arrow_on_top.dart +++ /dev/null @@ -1,77 +0,0 @@ -import 'package:folio/animations/entrance_fader.dart'; -import 'package:folio/configs/app_dimensions.dart'; -import 'package:flutter/material.dart'; -import 'package:folio/configs/app_theme.dart'; -import 'package:folio/provider/app_provider.dart'; -import 'package:folio/provider/scroll_provider.dart'; -import 'package:provider/provider.dart'; - -class ArrowOnTop extends StatefulWidget { - const ArrowOnTop({super.key}); - - @override - ArrowOnTopState createState() => ArrowOnTopState(); -} - -class ArrowOnTopState extends State { - bool isHover = false; - @override - Widget build(BuildContext context) { - final appProvider = Provider.of(context); - final scrollProvider = Provider.of(context); - - return Positioned( - bottom: AppDimensions.normalize(30), - right: -7, - child: EntranceFader( - offset: const Offset(0, 20), - child: Padding( - padding: - EdgeInsets.only(top: MediaQuery.of(context).size.height * 0.025), - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - InkWell( - borderRadius: BorderRadius.circular(8.0), - onTap: () => scrollProvider.scroll(0), - onHover: (isHovering) { - if (isHovering) { - setState(() { - isHover = true; - }); - } else { - setState(() { - isHover = false; - }); - } - }, - child: Container( - decoration: BoxDecoration( - color: appProvider.isDark ? Colors.white : Colors.black, - borderRadius: const BorderRadius.only( - topLeft: Radius.circular(8.0), - bottomLeft: Radius.circular(8.0), - ), - boxShadow: isHover - ? [ - const BoxShadow( - blurRadius: 12.0, - offset: Offset(2.0, 3.0), - ) - ] - : [], - ), - child: Icon( - Icons.arrow_drop_up_outlined, - color: AppTheme.c!.primary!, - size: MediaQuery.of(context).size.height * 0.05, - ), - ), - ), - ], - ), - ), - ), - ); - } -} diff --git a/lib/widget/community_button.dart b/lib/widget/community_button.dart deleted file mode 100644 index 7994d648..00000000 --- a/lib/widget/community_button.dart +++ /dev/null @@ -1,31 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:folio/configs/configs.dart'; -import 'package:folio/constants.dart'; - -class CommunityIconBtn extends StatelessWidget { - final String icon; - final String link; - final double height; - - const CommunityIconBtn({ - super.key, - required this.icon, - required this.link, - required this.height, - }); - @override - Widget build(BuildContext context) { - return Padding( - padding: Space.h!, - child: InkWell( - hoverColor: Colors.transparent, - highlightColor: Colors.transparent, - child: Image.asset( - icon, - height: height, - ), - onTap: () => openURL(link), - ), - ); - } -} diff --git a/lib/widget/custom_text_heading.dart b/lib/widget/custom_text_heading.dart deleted file mode 100644 index 4ccbd7ce..00000000 --- a/lib/widget/custom_text_heading.dart +++ /dev/null @@ -1,37 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:folio/configs/app_typography.dart'; - -class CustomSectionHeading extends StatelessWidget { - final String text; - - const CustomSectionHeading({ - super.key, - required this.text, - }); - - @override - Widget build(BuildContext context) { - return Text( - text, - style: AppText.h1!.copyWith( - fontFamily: 'Montserrat', - ), - ); - } -} - -class CustomSectionSubHeading extends StatelessWidget { - final String text; - - const CustomSectionSubHeading({super.key, required this.text}); - - @override - Widget build(BuildContext context) { - return Text( - text, - style: AppText.l1!.copyWith( - fontFamily: 'Montserrat', - ), - ); - } -} diff --git a/lib/widget/footer.dart b/lib/widget/footer.dart deleted file mode 100644 index dcf208a6..00000000 --- a/lib/widget/footer.dart +++ /dev/null @@ -1,34 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:folio/constants.dart'; - -class Footer extends StatelessWidget { - const Footer({super.key}); - - @override - Widget build(BuildContext context) { - double height = MediaQuery.of(context).size.height; - double width = MediaQuery.of(context).size.width; - return Container( - margin: EdgeInsets.fromLTRB(0, height * 0.05, 0, 0), - height: height * 0.07, - width: width, - child: Center( - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - const Text( - "Developed in 💙 with ", - ), - InkWell( - onTap: () => openURL("https://github.com/mhmzdev/DevFolio"), - child: const Text( - "Flutter", - style: TextStyle(color: Colors.blue), - ), - ) - ], - ), - ), - ); - } -} diff --git a/lib/widget/navbar_actions_button.dart b/lib/widget/navbar_actions_button.dart deleted file mode 100644 index 3f82be87..00000000 --- a/lib/widget/navbar_actions_button.dart +++ /dev/null @@ -1,47 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:folio/animations/entrance_fader.dart'; -import 'package:folio/configs/configs.dart'; -import 'package:folio/provider/scroll_provider.dart'; -import 'package:provider/provider.dart'; - -class NavBarActionButton extends StatelessWidget { - final String label; - final int index; - const NavBarActionButton({ - super.key, - required this.label, - required this.index, - }); - - @override - Widget build(BuildContext context) { - final scrollProvider = Provider.of(context); - - return EntranceFader( - offset: const Offset(0, -10), - delay: const Duration(milliseconds: 100), - duration: const Duration(milliseconds: 250), - child: Container( - margin: Space.h!, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(5.0), - ), - child: MaterialButton( - splashColor: Colors.white54, - highlightColor: Colors.white54, - hoverColor: AppTheme.c!.primary, - onPressed: () { - scrollProvider.scroll(index); - }, - child: Padding( - padding: Space.all(0.5, 0.45), - child: Text( - label, - style: AppText.l1, - ), - ), - ), - ), - ); - } -} diff --git a/lib/widget/navbar_logo.dart b/lib/widget/navbar_logo.dart deleted file mode 100644 index 49e3215e..00000000 --- a/lib/widget/navbar_logo.dart +++ /dev/null @@ -1,29 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:folio/configs/app_typography.dart'; - -class NavBarLogo extends StatelessWidget { - const NavBarLogo({super.key}); - - @override - Widget build(BuildContext context) { - return Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - "< ", - style: AppText.b1, - ), - Text( - "Hamza", - style: AppText.b1b!.copyWith( - fontFamily: 'Agustina', - ), - ), - Text( - MediaQuery.of(context).size.width >= 1000 ? " />\t\t" : " />", - style: AppText.b1, - ) - ], - ); - } -} diff --git a/lib/widget/project_card.dart b/lib/widget/project_card.dart deleted file mode 100644 index 64244f73..00000000 --- a/lib/widget/project_card.dart +++ /dev/null @@ -1,161 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:folio/configs/configs.dart'; -import 'package:folio/constants.dart'; -import 'package:folio/provider/app_provider.dart'; - -import 'package:provider/provider.dart'; - -class ProjectCard extends StatefulWidget { - final String? banner; - final String? projectLink; - final String? projectIcon; - final String projectTitle; - final String projectDescription; - final IconData? projectIconData; - - const ProjectCard({ - super.key, - this.banner, - this.projectIcon, - this.projectLink, - this.projectIconData, - required this.projectTitle, - required this.projectDescription, - }); - @override - ProjectCardState createState() => ProjectCardState(); -} - -class ProjectCardState extends State { - bool isHover = false; - - @override - Widget build(BuildContext context) { - final appProvider = Provider.of(context); - - double width = MediaQuery.of(context).size.width; - double height = MediaQuery.of(context).size.height; - - return InkWell( - hoverColor: Colors.transparent, - splashColor: Colors.transparent, - highlightColor: Colors.transparent, - onTap: widget.projectLink == null - ? () {} - : () => openURL( - widget.projectLink!, - ), - onHover: (isHovering) { - if (isHovering) { - setState(() { - isHover = true; - }); - } else { - setState(() { - isHover = false; - }); - } - }, - child: Container( - margin: Space.h, - padding: Space.all(), - width: AppDimensions.normalize(150), - height: AppDimensions.normalize(90), - decoration: BoxDecoration( - color: appProvider.isDark ? Colors.grey[900] : Colors.white, - borderRadius: BorderRadius.circular(10), - boxShadow: isHover - ? [ - BoxShadow( - color: AppTheme.c!.primary!.withAlpha(100), - blurRadius: 12.0, - offset: const Offset(0.0, 0.0), - ) - ] - : [ - BoxShadow( - color: Colors.black.withAlpha(100), - blurRadius: 12.0, - offset: const Offset(0.0, 0.0), - ) - ], - ), - child: Stack( - fit: StackFit.expand, - children: [ - Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - widget.projectIcon != null - ? (width > 1135 || width < 950) - ? Image.asset( - widget.projectIcon!, - height: height * 0.05, - ) - : Row( - mainAxisSize: MainAxisSize.min, - children: [ - Image.asset( - widget.projectIcon!, - height: height * 0.03, - ), - SizedBox( - width: width * 0.01, - ), - Text( - widget.projectTitle, - style: AppText.b2b, - textAlign: TextAlign.center, - ), - ], - ) - : Container(), - widget.projectIconData != null - ? Icon( - widget.projectIconData, - color: AppTheme.c!.primary!, - size: height * 0.1, - ) - : Container(), - (width > 1135 || width < 950) - ? SizedBox( - height: height * 0.02, - ) - : const SizedBox(), - (width > 1135 || width < 950) - ? Text( - widget.projectTitle, - style: AppText.b2b, - textAlign: TextAlign.center, - ) - : Container(), - SizedBox( - height: height * 0.01, - ), - Text( - widget.projectDescription, - textAlign: TextAlign.center, - ), - SizedBox( - height: height * 0.01, - ), - ], - ), - AnimatedOpacity( - duration: const Duration(milliseconds: 400), - opacity: isHover ? 0.0 : 1.0, - child: FittedBox( - fit: BoxFit.fill, - child: widget.banner != null - ? Image.asset( - widget.banner!, - ) - : Container(), - ), - ), - ], - ), - ), - ); - } -} diff --git a/lib/widget/social_links.dart b/lib/widget/social_links.dart deleted file mode 100644 index 1ed8b0d7..00000000 --- a/lib/widget/social_links.dart +++ /dev/null @@ -1,49 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:folio/configs/configs.dart'; -import 'package:folio/constants.dart'; -import 'package:folio/provider/app_provider.dart'; -import 'package:folio/responsive/responsive.dart'; -import 'package:folio/utils/utils.dart'; -import 'package:provider/provider.dart'; - -class SocialLinks extends StatelessWidget { - const SocialLinks({ - super.key, - }); - @override - Widget build(BuildContext context) { - final appProvider = Provider.of(context); - return Wrap( - runSpacing: AppDimensions.normalize(10), - alignment: WrapAlignment.center, - children: StaticUtils.socialIconURL - .asMap() - .entries - .map( - (e) => Padding( - padding: - Responsive.isMobile(context) ? Space.all(0.2, 0) : Space.h!, - child: IconButton( - highlightColor: Colors.white54, - splashRadius: AppDimensions.normalize(12), - icon: Image.network( - e.value, - color: appProvider.isDark ? Colors.white : Colors.black, - height: Responsive.isMobile(context) - ? AppDimensions.normalize(10) - : AppDimensions.normalize(12), - ), - iconSize: Responsive.isMobile(context) - ? AppDimensions.normalize(10) - : AppDimensions.normalize(15), - onPressed: () => openURL( - StaticUtils.socialLinks[e.key], - ), - hoverColor: AppTheme.c!.primary!, - ), - ), - ) - .toList(), - ); - } -} diff --git a/lib/widget/tech_widget.dart b/lib/widget/tech_widget.dart deleted file mode 100644 index e2fae266..00000000 --- a/lib/widget/tech_widget.dart +++ /dev/null @@ -1,26 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:folio/configs/app_dimensions.dart'; -import 'package:folio/configs/app_theme.dart'; -import 'package:folio/configs/app_typography.dart'; - -class ToolTechWidget extends StatelessWidget { - final String techName; - - const ToolTechWidget({super.key, required this.techName}); - @override - Widget build(BuildContext context) { - return Row( - children: [ - Icon( - Icons.play_arrow, - color: AppTheme.c!.primary, - size: AppDimensions.normalize(6), - ), - Text( - " $techName ", - style: AppText.l1b, - ) - ], - ); - } -} diff --git a/linux/.gitignore b/linux/.gitignore deleted file mode 100644 index d3896c98..00000000 --- a/linux/.gitignore +++ /dev/null @@ -1 +0,0 @@ -flutter/ephemeral diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt deleted file mode 100644 index 45c37cdb..00000000 --- a/linux/CMakeLists.txt +++ /dev/null @@ -1,145 +0,0 @@ -# Project-level configuration. -cmake_minimum_required(VERSION 3.10) -project(runner LANGUAGES CXX) - -# The name of the executable created for the application. Change this to change -# the on-disk name of your application. -set(BINARY_NAME "devfolio") -# The unique GTK application identifier for this application. See: -# https://wiki.gnome.org/HowDoI/ChooseApplicationID -set(APPLICATION_ID "com.hmz.devfolio") - -# Explicitly opt in to modern CMake behaviors to avoid warnings with recent -# versions of CMake. -cmake_policy(SET CMP0063 NEW) - -# Load bundled libraries from the lib/ directory relative to the binary. -set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") - -# Root filesystem for cross-building. -if(FLUTTER_TARGET_PLATFORM_SYSROOT) - set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) - set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -endif() - -# Define build configuration options. -if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - set(CMAKE_BUILD_TYPE "Debug" CACHE - STRING "Flutter build mode" FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Profile" "Release") -endif() - -# Compilation settings that should be applied to most targets. -# -# Be cautious about adding new options here, as plugins use this function by -# default. In most cases, you should add new options to specific targets instead -# of modifying this function. -function(APPLY_STANDARD_SETTINGS TARGET) - target_compile_features(${TARGET} PUBLIC cxx_std_14) - target_compile_options(${TARGET} PRIVATE -Wall -Werror) - target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") - target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") -endfunction() - -# Flutter library and tool build rules. -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") -add_subdirectory(${FLUTTER_MANAGED_DIR}) - -# System-level dependencies. -find_package(PkgConfig REQUIRED) -pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) - -add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") - -# Define the application target. To change its name, change BINARY_NAME above, -# not the value here, or `flutter run` will no longer work. -# -# Any new source files that you add to the application should be added here. -add_executable(${BINARY_NAME} - "main.cc" - "my_application.cc" - "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" -) - -# Apply the standard set of build settings. This can be removed for applications -# that need different build settings. -apply_standard_settings(${BINARY_NAME}) - -# Add dependency libraries. Add any application-specific dependencies here. -target_link_libraries(${BINARY_NAME} PRIVATE flutter) -target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) - -# Run the Flutter tool portions of the build. This must not be removed. -add_dependencies(${BINARY_NAME} flutter_assemble) - -# Only the install-generated bundle's copy of the executable will launch -# correctly, since the resources must in the right relative locations. To avoid -# people trying to run the unbundled copy, put it in a subdirectory instead of -# the default top-level location. -set_target_properties(${BINARY_NAME} - PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" -) - - -# Generated plugin build rules, which manage building the plugins and adding -# them to the application. -include(flutter/generated_plugins.cmake) - - -# === Installation === -# By default, "installing" just makes a relocatable bundle in the build -# directory. -set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() - -# Start with a clean build bundle directory every time. -install(CODE " - file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") - " COMPONENT Runtime) - -set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") -set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) - install(FILES "${bundled_library}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endforeach(bundled_library) - -# 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 deleted file mode 100644 index d5bd0164..00000000 --- a/linux/flutter/CMakeLists.txt +++ /dev/null @@ -1,88 +0,0 @@ -# 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 deleted file mode 100644 index f6f23bfe..00000000 --- a/linux/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - -#include - -void fl_register_plugins(FlPluginRegistry* registry) { - g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = - fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); - url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); -} diff --git a/linux/flutter/generated_plugin_registrant.h b/linux/flutter/generated_plugin_registrant.h deleted file mode 100644 index e0f0a47b..00000000 --- a/linux/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// 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 deleted file mode 100644 index f16b4c34..00000000 --- a/linux/flutter/generated_plugins.cmake +++ /dev/null @@ -1,24 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_PLUGIN_LIST - url_launcher_linux -) - -list(APPEND FLUTTER_FFI_PLUGIN_LIST -) - -set(PLUGIN_BUNDLED_LIBRARIES) - -foreach(plugin ${FLUTTER_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) - target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) - list(APPEND PLUGIN_BUNDLED_LIBRARIES $) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) -endforeach(plugin) - -foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) -endforeach(ffi_plugin) diff --git a/linux/main.cc b/linux/main.cc deleted file mode 100644 index e7c5c543..00000000 --- a/linux/main.cc +++ /dev/null @@ -1,6 +0,0 @@ -#include "my_application.h" - -int main(int argc, char** argv) { - g_autoptr(MyApplication) app = my_application_new(); - return g_application_run(G_APPLICATION(app), argc, argv); -} diff --git a/linux/my_application.cc b/linux/my_application.cc deleted file mode 100644 index d57beaa6..00000000 --- a/linux/my_application.cc +++ /dev/null @@ -1,124 +0,0 @@ -#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, "devfolio"); - 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, "devfolio"); - } - - 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() { - return MY_APPLICATION(g_object_new(my_application_get_type(), - "application-id", APPLICATION_ID, - "flags", G_APPLICATION_NON_UNIQUE, - nullptr)); -} diff --git a/linux/my_application.h b/linux/my_application.h deleted file mode 100644 index 72271d5e..00000000 --- a/linux/my_application.h +++ /dev/null @@ -1,18 +0,0 @@ -#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 deleted file mode 100644 index 746adbb6..00000000 --- a/macos/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -# Flutter-related -**/Flutter/ephemeral/ -**/Pods/ - -# Xcode-related -**/dgph -**/xcuserdata/ diff --git a/macos/Flutter/Flutter-Debug.xcconfig b/macos/Flutter/Flutter-Debug.xcconfig deleted file mode 100644 index 4b81f9b2..00000000 --- a/macos/Flutter/Flutter-Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#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 deleted file mode 100644 index 5caa9d15..00000000 --- a/macos/Flutter/Flutter-Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#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 deleted file mode 100644 index 997e35da..00000000 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ /dev/null @@ -1,14 +0,0 @@ -// -// Generated file. Do not edit. -// - -import FlutterMacOS -import Foundation - -import shared_preferences_foundation -import url_launcher_macos - -func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { - SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) - UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) -} diff --git a/macos/Podfile b/macos/Podfile deleted file mode 100644 index c795730d..00000000 --- a/macos/Podfile +++ /dev/null @@ -1,43 +0,0 @@ -platform :osx, '10.14' - -# 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/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index 8d4d2d4d..00000000 --- a/macos/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,801 +0,0 @@ -// !$*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 */ - 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 */; }; - B0432F64C19EDF80919A0B00 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 49E79EBC69431A0B19A0403B /* Pods_RunnerTests.framework */; }; - EA74AE7D543B1AB443D072E9 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D8E3D5A34A001BD7BD39BAB /* 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 */ - 245F9760B153E02D8DAD1234 /* 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 = ""; }; - 2D8E3D5A34A001BD7BD39BAB /* 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 /* devfolio.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = devfolio.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 = ""; }; - 49E79EBC69431A0B19A0403B /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5AEFC07F6EFA3AFFC0EA0508 /* 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 = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 864B14EB9533BCB9818F8299 /* 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 = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A6F0CE880282E24285A67500 /* 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 = ""; }; - C0465CFE6BE3962655AE1983 /* 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 = ""; }; - D2AB8A753775B04AF29BF843 /* 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 = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 331C80D2294CF70F00263BE5 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B0432F64C19EDF80919A0B00 /* Pods_RunnerTests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 33CC10EA2044A3C60003C045 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - EA74AE7D543B1AB443D072E9 /* 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 */, - A98998D7D81865A65F7EEB13 /* Pods */, - ); - sourceTree = ""; - }; - 33CC10EE2044A3C60003C045 /* Products */ = { - isa = PBXGroup; - children = ( - 33CC10ED2044A3C60003C045 /* devfolio.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 = ""; - }; - A98998D7D81865A65F7EEB13 /* Pods */ = { - isa = PBXGroup; - children = ( - A6F0CE880282E24285A67500 /* Pods-Runner.debug.xcconfig */, - 245F9760B153E02D8DAD1234 /* Pods-Runner.release.xcconfig */, - 5AEFC07F6EFA3AFFC0EA0508 /* Pods-Runner.profile.xcconfig */, - 864B14EB9533BCB9818F8299 /* Pods-RunnerTests.debug.xcconfig */, - D2AB8A753775B04AF29BF843 /* Pods-RunnerTests.release.xcconfig */, - C0465CFE6BE3962655AE1983 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 2D8E3D5A34A001BD7BD39BAB /* Pods_Runner.framework */, - 49E79EBC69431A0B19A0403B /* 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 = ( - 37A44C1913BDDAB0216F7C3D /* [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 = ( - 0F4E2E288628D5DC60DE8602 /* [CP] Check Pods Manifest.lock */, - 33CC10E92044A3C60003C045 /* Sources */, - 33CC10EA2044A3C60003C045 /* Frameworks */, - 33CC10EB2044A3C60003C045 /* Resources */, - 33CC110E2044A8840003C045 /* Bundle Framework */, - 3399D490228B24CF009A79C7 /* ShellScript */, - A5370123937ECA322A65D783 /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 33CC11202044C79F0003C045 /* PBXTargetDependency */, - ); - name = Runner; - productName = Runner; - productReference = 33CC10ED2044A3C60003C045 /* devfolio.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 */ - 0F4E2E288628D5DC60DE8602 /* [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"; - }; - 37A44C1913BDDAB0216F7C3D /* [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; - }; - A5370123937ECA322A65D783 /* [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 */ - 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 = 864B14EB9533BCB9818F8299 /* Pods-RunnerTests.debug.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.hmz.devfolio.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/devfolio.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/devfolio"; - }; - name = Debug; - }; - 331C80DC294CF71000263BE5 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D2AB8A753775B04AF29BF843 /* Pods-RunnerTests.release.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.hmz.devfolio.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/devfolio.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/devfolio"; - }; - name = Release; - }; - 331C80DD294CF71000263BE5 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C0465CFE6BE3962655AE1983 /* Pods-RunnerTests.profile.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.hmz.devfolio.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/devfolio.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/devfolio"; - }; - 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", - ); - 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", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 33CC10FD2044A3C60003C045 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - 33CC111C2044C6BA0003C045 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Manual; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 33CC111D2044C6BA0003C045 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 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 deleted file mode 100644 index 18d98100..00000000 --- a/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index 3756b348..00000000 --- a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/macos/Runner.xcworkspace/contents.xcworkspacedata b/macos/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 21a3cc14..00000000 --- a/macos/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d98100..00000000 --- a/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/macos/Runner/AppDelegate.swift b/macos/Runner/AppDelegate.swift deleted file mode 100644 index d53ef643..00000000 --- a/macos/Runner/AppDelegate.swift +++ /dev/null @@ -1,9 +0,0 @@ -import Cocoa -import FlutterMacOS - -@NSApplicationMain -class AppDelegate: FlutterAppDelegate { - override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { - return true - } -} diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 96d3fee1..00000000 --- a/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "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 deleted file mode 100644 index c1712897e3b358c415efd1fd1229f9e37b9abb71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25986 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 i|9#oQ|MnJD)qf=A1yDab>!M-1rZzg9g+9 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png deleted file mode 100644 index 005a0beebfed29276a77b5cda47bc1f85a9077b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3733 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 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png deleted file mode 100644 index 8213f615d0680b339c75506ff5273ac523e78dc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7840 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 a$Oz3&-+(_-GR<)385kRw>DTHyM*kn{$=#>` diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png deleted file mode 100644 index 210c769f591c8fbccdf6968cb0ea794657f6be7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 981 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/macos/Runner/Configs/AppInfo.xcconfig b/macos/Runner/Configs/AppInfo.xcconfig deleted file mode 100644 index d34636c5..00000000 --- a/macos/Runner/Configs/AppInfo.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -// 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 = devfolio - -// The application's bundle identifier -PRODUCT_BUNDLE_IDENTIFIER = com.hmz.devfolio - -// The copyright displayed in application information -PRODUCT_COPYRIGHT = Copyright © 2024 com.hmz. All rights reserved. diff --git a/macos/Runner/Configs/Debug.xcconfig b/macos/Runner/Configs/Debug.xcconfig deleted file mode 100644 index 36b0fd94..00000000 --- a/macos/Runner/Configs/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Debug.xcconfig" -#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Release.xcconfig b/macos/Runner/Configs/Release.xcconfig deleted file mode 100644 index dff4f495..00000000 --- a/macos/Runner/Configs/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Release.xcconfig" -#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Warnings.xcconfig b/macos/Runner/Configs/Warnings.xcconfig deleted file mode 100644 index 42bcbf47..00000000 --- a/macos/Runner/Configs/Warnings.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -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 deleted file mode 100644 index 08c3ab17..00000000 --- a/macos/Runner/DebugProfile.entitlements +++ /dev/null @@ -1,14 +0,0 @@ - - - - - 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 deleted file mode 100644 index 4789daa6..00000000 --- a/macos/Runner/Info.plist +++ /dev/null @@ -1,32 +0,0 @@ - - - - - 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 deleted file mode 100644 index 3cc05eb2..00000000 --- a/macos/Runner/MainFlutterWindow.swift +++ /dev/null @@ -1,15 +0,0 @@ -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 deleted file mode 100644 index ee95ab7e..00000000 --- a/macos/Runner/Release.entitlements +++ /dev/null @@ -1,10 +0,0 @@ - - - - - com.apple.security.app-sandbox - - com.apple.security.network.client - - - diff --git a/macos/RunnerTests/RunnerTests.swift b/macos/RunnerTests/RunnerTests.swift deleted file mode 100644 index 61f3bd1f..00000000 --- a/macos/RunnerTests/RunnerTests.swift +++ /dev/null @@ -1,12 +0,0 @@ -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 index 1e0f6fa1..9266776b 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,684 +1,698 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: - animated_text_kit: - dependency: "direct main" - description: - name: animated_text_kit - url: "https://pub.dartlang.org" - source: hosted - version: "4.2.1" - async: + _fe_analyzer_shared: dependency: transitive description: - name: async - url: "https://pub.dartlang.org" + name: _fe_analyzer_shared + sha256: "45cfa8471b89fb6643fe9bf51bd7931a76b8f5ec2d65de4fb176dba8d4f22c77" + url: "https://pub.dev" source: hosted - version: "2.8.2" - boolean_selector: + version: "73.0.0" + _macros: dependency: transitive - description: - name: boolean_selector - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - carousel_slider: - dependency: "direct main" - description: - name: carousel_slider - url: "https://pub.dartlang.org" - source: hosted - version: "4.1.1" - characters: + description: dart + source: sdk + version: "0.3.2" + analyzer: dependency: transitive description: - name: characters - url: "https://pub.dartlang.org" + name: analyzer + sha256: "4959fec185fe70cce007c57e9ab6983101dbe593d2bf8bbfb4453aaec0cf470a" + url: "https://pub.dev" source: hosted - version: "1.2.0" - charcode: + version: "6.8.0" + analyzer_plugin: dependency: transitive description: - name: charcode - url: "https://pub.dartlang.org" + name: analyzer_plugin + sha256: "9661b30b13a685efaee9f02e5d01ed9f2b423bd889d28a304d02d704aee69161" + url: "https://pub.dev" source: hosted - version: "1.3.1" - chewie: + version: "0.11.3" + archive: dependency: transitive description: - name: chewie - url: "https://pub.dartlang.org" + name: archive + sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d + url: "https://pub.dev" source: hosted - version: "1.3.2" - chewie_audio: + version: "3.6.1" + args: dependency: transitive description: - name: chewie_audio - url: "https://pub.dartlang.org" + name: args + sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" + url: "https://pub.dev" source: hosted - version: "1.3.0" - clock: + version: "2.5.0" + async: dependency: transitive description: - name: clock - url: "https://pub.dartlang.org" + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" source: hosted - version: "1.1.0" - collection: + version: "2.11.0" + bazel_worker: dependency: transitive description: - name: collection - url: "https://pub.dartlang.org" + name: bazel_worker + sha256: "4eef19cc486c289e4b06c69d0f6f3192e85cc93c25d4d15d02afb205e388d2f0" + url: "https://pub.dev" source: hosted - version: "1.16.0" - crypto: + version: "1.1.1" + binary_codec: dependency: transitive description: - name: crypto - url: "https://pub.dartlang.org" + name: binary_codec + sha256: "368144225d749e1e33f2f4628d0c70bffff99b99b1d6c0777b039f8967365b07" + url: "https://pub.dev" source: hosted - version: "3.0.2" - csslib: + version: "2.0.3" + boolean_selector: dependency: transitive description: - name: csslib - url: "https://pub.dartlang.org" - source: hosted - version: "0.17.1" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - url: "https://pub.dartlang.org" + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "1.0.4" - fake_async: + version: "2.1.1" + build: dependency: transitive description: - name: fake_async - url: "https://pub.dartlang.org" + name: build + sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" + url: "https://pub.dev" source: hosted - version: "1.3.0" - ffi: + version: "2.4.1" + build_config: dependency: transitive description: - name: ffi - url: "https://pub.dartlang.org" + name: build_config + sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 + url: "https://pub.dev" source: hosted - version: "1.2.1" - file: + version: "1.1.1" + build_daemon: dependency: transitive description: - name: file - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.2" - flip_card: - dependency: "direct main" - description: - name: flip_card - url: "https://pub.dartlang.org" + name: build_daemon + sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9" + url: "https://pub.dev" source: hosted - version: "0.6.0" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_html: - dependency: "direct main" + version: "4.0.2" + build_modules: + dependency: transitive description: - name: flutter_html - url: "https://pub.dartlang.org" + name: build_modules + sha256: "403ba034d94f1a0f26362fe14fd83e9ff33644f5cbe879982920e3d209650b43" + url: "https://pub.dev" source: hosted - version: "2.2.1" - flutter_layout_grid: + version: "5.0.9" + build_resolvers: dependency: transitive description: - name: flutter_layout_grid - url: "https://pub.dartlang.org" + name: build_resolvers + sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a" + url: "https://pub.dev" source: hosted - version: "1.0.6" - flutter_lints: + version: "2.4.2" + build_runner: dependency: "direct dev" description: - name: flutter_lints - url: "https://pub.dartlang.org" + name: build_runner + sha256: dd09dd4e2b078992f42aac7f1a622f01882a8492fef08486b27ddde929c19f04 + url: "https://pub.dev" source: hosted - version: "2.0.1" - flutter_math_fork: + version: "2.4.12" + build_runner_core: dependency: transitive description: - name: flutter_math_fork - url: "https://pub.dartlang.org" + name: build_runner_core + sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0 + url: "https://pub.dev" source: hosted - version: "0.5.0" - flutter_svg: + version: "7.3.2" + built_collection: dependency: transitive description: - name: flutter_svg - url: "https://pub.dartlang.org" + name: built_collection + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" source: hosted - version: "0.23.0+1" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - flutter_web_plugins: + version: "5.1.1" + built_value: dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - font_awesome_flutter: - dependency: "direct main" description: - name: font_awesome_flutter - url: "https://pub.dartlang.org" + name: built_value + sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb + url: "https://pub.dev" source: hosted - version: "10.1.0" - github: - dependency: "direct main" - description: - name: github - url: "https://pub.dartlang.org" - source: hosted - version: "9.2.0" - html: + version: "8.9.2" + checked_yaml: dependency: transitive description: - name: html - url: "https://pub.dartlang.org" + name: checked_yaml + sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff + url: "https://pub.dev" source: hosted - version: "0.15.0" - http: - dependency: "direct main" + version: "2.0.3" + ci: + dependency: transitive description: - name: http - url: "https://pub.dartlang.org" + name: ci + sha256: "145d095ce05cddac4d797a158bc4cf3b6016d1fe63d8c3d2fbd7212590adca13" + url: "https://pub.dev" source: hosted - version: "0.13.4" - http_parser: + version: "0.1.0" + cli_util: dependency: transitive description: - name: http_parser - url: "https://pub.dartlang.org" + name: cli_util + sha256: c05b7406fdabc7a49a3929d4af76bcaccbbffcbcdcf185b082e1ae07da323d19 + url: "https://pub.dev" source: hosted - version: "4.0.0" - js: + version: "0.4.1" + code_builder: dependency: transitive description: - name: js - url: "https://pub.dartlang.org" + name: code_builder + sha256: f692079e25e7869c14132d39f223f8eec9830eb76131925143b2129c4bb01b37 + url: "https://pub.dev" source: hosted - version: "0.6.4" - json_annotation: + version: "4.10.0" + collection: dependency: transitive description: - name: json_annotation - url: "https://pub.dartlang.org" + name: collection + sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + url: "https://pub.dev" source: hosted - version: "4.5.0" - lints: + version: "1.19.0" + convert: dependency: transitive description: - name: lints - url: "https://pub.dartlang.org" + name: convert + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" source: hosted - version: "2.0.0" - mailto: - dependency: "direct main" + version: "3.1.1" + crypto: + dependency: transitive description: - name: mailto - url: "https://pub.dartlang.org" + name: crypto + sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27 + url: "https://pub.dev" source: hosted - version: "2.0.0" - matcher: + version: "3.0.5" + csslib: dependency: transitive description: - name: matcher - url: "https://pub.dartlang.org" + name: csslib + sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb" + url: "https://pub.dev" source: hosted - version: "0.12.11" - material_color_utilities: + version: "1.0.0" + custom_lint: dependency: transitive description: - name: material_color_utilities - url: "https://pub.dartlang.org" + name: custom_lint + sha256: "4939d89e580c36215e48a7de8fd92f22c79dcc3eb11fda84f3402b3b45aec663" + url: "https://pub.dev" source: hosted - version: "0.1.4" - meta: + version: "0.6.5" + custom_lint_builder: dependency: transitive description: - name: meta - url: "https://pub.dartlang.org" + name: custom_lint_builder + sha256: d9e5bb63ed52c1d006f5a1828992ba6de124c27a531e8fba0a31afffa81621b3 + url: "https://pub.dev" source: hosted - version: "1.7.0" - nested: + version: "0.6.5" + custom_lint_core: dependency: transitive description: - name: nested - url: "https://pub.dartlang.org" + name: custom_lint_core + sha256: "4ddbbdaa774265de44c97054dcec058a83d9081d071785ece601e348c18c267d" + url: "https://pub.dev" source: hosted - version: "1.0.0" - numerus: + version: "0.6.5" + dart_style: dependency: transitive description: - name: numerus - url: "https://pub.dartlang.org" + name: dart_style + sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab" + url: "https://pub.dev" source: hosted - version: "1.1.1" - path: + version: "2.3.7" + file: dependency: transitive description: - name: path - url: "https://pub.dartlang.org" + name: file + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + url: "https://pub.dev" source: hosted - version: "1.8.1" - path_drawing: + version: "7.0.0" + fixnum: dependency: transitive description: - name: path_drawing - url: "https://pub.dartlang.org" + name: fixnum + sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + url: "https://pub.dev" source: hosted - version: "0.5.1+1" - path_parsing: + version: "1.1.0" + freezed_annotation: dependency: transitive description: - name: path_parsing - url: "https://pub.dartlang.org" + name: freezed_annotation + sha256: c2e2d632dd9b8a2b7751117abcfc2b4888ecfe181bd9fca7170d9ef02e595fe2 + url: "https://pub.dev" source: hosted - version: "0.2.1" - path_provider_linux: + version: "2.4.4" + frontend_server_client: dependency: transitive description: - name: path_provider_linux - url: "https://pub.dartlang.org" + name: frontend_server_client + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 + url: "https://pub.dev" source: hosted - version: "2.1.6" - path_provider_platform_interface: + version: "4.0.0" + glob: dependency: transitive description: - name: path_provider_platform_interface - url: "https://pub.dartlang.org" + name: glob + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + url: "https://pub.dev" source: hosted - version: "2.0.4" - path_provider_windows: + version: "2.1.2" + graphs: dependency: transitive description: - name: path_provider_windows - url: "https://pub.dartlang.org" + name: graphs + sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" + url: "https://pub.dev" source: hosted - version: "2.0.6" - petitparser: + version: "2.3.2" + hotreloader: dependency: transitive description: - name: petitparser - url: "https://pub.dartlang.org" + name: hotreloader + sha256: ed56fdc1f3a8ac924e717257621d09e9ec20e308ab6352a73a50a1d7a4d9158e + url: "https://pub.dev" source: hosted - version: "5.0.0" - platform: + version: "4.2.0" + html: dependency: transitive description: - name: platform - url: "https://pub.dartlang.org" + name: html + sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" + url: "https://pub.dev" source: hosted - version: "3.1.0" - plugin_platform_interface: + version: "0.15.4" + http: dependency: transitive description: - name: plugin_platform_interface - url: "https://pub.dartlang.org" + name: http + sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 + url: "https://pub.dev" source: hosted - version: "2.1.2" - process: + version: "1.2.2" + http_multi_server: dependency: transitive description: - name: process - url: "https://pub.dartlang.org" + name: http_multi_server + sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" + url: "https://pub.dev" source: hosted - version: "4.2.4" - provider: - dependency: "direct main" + version: "3.2.1" + http_parser: + dependency: transitive description: - name: provider - url: "https://pub.dartlang.org" + name: http_parser + sha256: "40f592dd352890c3b60fec1b68e786cefb9603e05ff303dbc4dda49b304ecdf4" + url: "https://pub.dev" source: hosted - version: "6.0.2" - quiver: + version: "4.1.0" + io: dependency: transitive description: - name: quiver - url: "https://pub.dartlang.org" + name: io + sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + url: "https://pub.dev" source: hosted - version: "3.1.0" - shared_preferences: + version: "1.0.4" + jaspr: dependency: "direct main" description: - name: shared_preferences - url: "https://pub.dartlang.org" + name: jaspr + sha256: "985dc5e60b8d2d70199e220633ce3a2418abfb619c94fe9b7c33934a5ead8d86" + url: "https://pub.dev" source: hosted - version: "2.0.15" - shared_preferences_android: - dependency: transitive + version: "0.15.1" + jaspr_builder: + dependency: "direct dev" description: - name: shared_preferences_android - url: "https://pub.dartlang.org" + name: jaspr_builder + sha256: fe30e2d1c256145487ab405c5349ad59b54fb42276ab37dab9ba8e3951795b9c + url: "https://pub.dev" source: hosted - version: "2.0.12" - shared_preferences_ios: - dependency: transitive + version: "0.15.1" + jaspr_lints: + dependency: "direct dev" description: - name: shared_preferences_ios - url: "https://pub.dartlang.org" + name: jaspr_lints + sha256: ad0c61d9a6faeab35d542e1243fe0dac3433b6d297f06e39b7e3bdda364aae43 + url: "https://pub.dev" source: hosted - version: "2.1.1" - shared_preferences_linux: - dependency: transitive + version: "0.1.1" + jaspr_web_compilers: + dependency: "direct dev" description: - name: shared_preferences_linux - url: "https://pub.dartlang.org" + name: jaspr_web_compilers + sha256: "068e42fbb89e5a7b7d47849886669b80a0d9e011f76bbfd85f6444d0b80cc4f4" + url: "https://pub.dev" source: hosted - version: "2.1.1" - shared_preferences_macos: + version: "4.0.10" + js: dependency: transitive description: - name: shared_preferences_macos - url: "https://pub.dartlang.org" + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" source: hosted - version: "2.0.4" - shared_preferences_platform_interface: + version: "0.6.7" + json_annotation: dependency: transitive description: - name: shared_preferences_platform_interface - url: "https://pub.dartlang.org" + name: json_annotation + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" + url: "https://pub.dev" source: hosted - version: "2.0.0" - shared_preferences_web: - dependency: transitive + version: "4.9.0" + lints: + dependency: "direct dev" description: - name: shared_preferences_web - url: "https://pub.dartlang.org" + name: lints + sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290 + url: "https://pub.dev" source: hosted - version: "2.0.4" - shared_preferences_windows: + version: "3.0.0" + logging: dependency: transitive description: - name: shared_preferences_windows - url: "https://pub.dartlang.org" + name: logging + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" + url: "https://pub.dev" source: hosted - version: "2.1.1" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_span: + version: "1.2.0" + macros: dependency: transitive description: - name: source_span - url: "https://pub.dartlang.org" + name: macros + sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536" + url: "https://pub.dev" source: hosted - version: "1.8.2" - stack_trace: + version: "0.1.2-main.4" + matcher: dependency: transitive description: - name: stack_trace - url: "https://pub.dartlang.org" + name: matcher + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + url: "https://pub.dev" source: hosted - version: "1.10.0" - stream_channel: + version: "0.12.16+1" + meta: dependency: transitive description: - name: stream_channel - url: "https://pub.dartlang.org" + name: meta + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + url: "https://pub.dev" source: hosted - version: "2.1.0" - string_scanner: + version: "1.15.0" + mime: dependency: transitive description: - name: string_scanner - url: "https://pub.dartlang.org" + name: mime + sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a" + url: "https://pub.dev" source: hosted - version: "1.1.0" - term_glyph: + version: "1.0.6" + package_config: dependency: transitive description: - name: term_glyph - url: "https://pub.dartlang.org" + name: package_config + sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + url: "https://pub.dev" source: hosted - version: "1.2.0" - test_api: + version: "2.1.0" + path: dependency: transitive description: - name: test_api - url: "https://pub.dartlang.org" + name: path + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + url: "https://pub.dev" source: hosted - version: "0.4.9" - tuple: + version: "1.9.0" + pool: dependency: transitive description: - name: tuple - url: "https://pub.dartlang.org" + name: pool + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" source: hosted - version: "2.0.0" - typed_data: + version: "1.5.1" + protobuf: dependency: transitive description: - name: typed_data - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" - universal_html: - dependency: "direct main" - description: - name: universal_html - url: "https://pub.dartlang.org" + name: protobuf + sha256: "68645b24e0716782e58948f8467fd42a880f255096a821f9e7d0ec625b00c84d" + url: "https://pub.dev" source: hosted - version: "2.0.8" - universal_io: + version: "3.1.0" + pub_semver: dependency: transitive description: - name: universal_io - url: "https://pub.dartlang.org" + name: pub_semver + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + url: "https://pub.dev" source: hosted - version: "2.0.4" - url_launcher: - dependency: "direct main" - description: - name: url_launcher - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.2" - url_launcher_android: + version: "2.1.4" + pubspec_parse: dependency: transitive description: - name: url_launcher_android - url: "https://pub.dartlang.org" + name: pubspec_parse + sha256: c799b721d79eb6ee6fa56f00c04b472dcd44a30d258fac2174a6ec57302678f8 + url: "https://pub.dev" source: hosted - version: "6.0.17" - url_launcher_ios: + version: "1.3.0" + rxdart: dependency: transitive description: - name: url_launcher_ios - url: "https://pub.dartlang.org" + name: rxdart + sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" + url: "https://pub.dev" source: hosted - version: "6.0.16" - url_launcher_linux: + version: "0.28.0" + scratch_space: dependency: transitive description: - name: url_launcher_linux - url: "https://pub.dartlang.org" + name: scratch_space + sha256: "8510fbff458d733a58fc427057d1ac86303b376d609d6e1bc43f240aad9aa445" + url: "https://pub.dev" source: hosted - version: "3.0.1" - url_launcher_macos: + version: "1.0.2" + shelf: dependency: transitive description: - name: url_launcher_macos - url: "https://pub.dartlang.org" + name: shelf + sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 + url: "https://pub.dev" source: hosted - version: "3.0.1" - url_launcher_platform_interface: + version: "1.4.2" + shelf_gzip: dependency: transitive description: - name: url_launcher_platform_interface - url: "https://pub.dartlang.org" + name: shelf_gzip + sha256: "4f4b793c0f969f348aece1ab4cc05fceba9fea431c1ce76b1bc0fa369cecfc15" + url: "https://pub.dev" source: hosted - version: "2.0.5" - url_launcher_web: + version: "4.1.0" + shelf_proxy: dependency: transitive description: - name: url_launcher_web - url: "https://pub.dartlang.org" + name: shelf_proxy + sha256: a71d2307f4393211930c590c3d2c00630f6c5a7a77edc1ef6436dfd85a6a7ee3 + url: "https://pub.dev" source: hosted - version: "2.0.11" - url_launcher_windows: + version: "1.0.4" + shelf_static: dependency: transitive description: - name: url_launcher_windows - url: "https://pub.dartlang.org" + name: shelf_static + sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3 + url: "https://pub.dev" source: hosted - version: "3.0.1" - url_strategy: - dependency: "direct main" + version: "1.1.3" + shelf_web_socket: + dependency: transitive description: - name: url_strategy - url: "https://pub.dartlang.org" + name: shelf_web_socket + sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611" + url: "https://pub.dev" source: hosted - version: "0.2.0" - vector_math: + version: "2.0.0" + source_gen: dependency: transitive description: - name: vector_math - url: "https://pub.dartlang.org" + name: source_gen + sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832" + url: "https://pub.dev" source: hosted - version: "2.1.2" - very_good_analysis: + version: "1.5.0" + source_maps: dependency: transitive description: - name: very_good_analysis - url: "https://pub.dartlang.org" + name: source_maps + sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703" + url: "https://pub.dev" source: hosted - version: "2.4.0" - video_player: + version: "0.10.12" + source_span: dependency: transitive description: - name: video_player - url: "https://pub.dartlang.org" + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" source: hosted - version: "2.4.2" - video_player_android: + version: "1.10.0" + sprintf: dependency: transitive description: - name: video_player_android - url: "https://pub.dartlang.org" + name: sprintf + sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" + url: "https://pub.dev" source: hosted - version: "2.3.3" - video_player_avfoundation: + version: "7.0.0" + stack_trace: dependency: transitive description: - name: video_player_avfoundation - url: "https://pub.dartlang.org" + name: stack_trace + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.dev" source: hosted - version: "2.3.4" - video_player_platform_interface: + version: "1.11.1" + stream_channel: dependency: transitive description: - name: video_player_platform_interface - url: "https://pub.dartlang.org" + name: stream_channel + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" source: hosted - version: "5.1.2" - video_player_web: + version: "2.1.2" + stream_transform: dependency: transitive description: - name: video_player_web - url: "https://pub.dartlang.org" + name: stream_transform + sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" + url: "https://pub.dev" source: hosted - version: "2.0.10" - wakelock: + version: "2.1.0" + string_scanner: dependency: transitive description: - name: wakelock - url: "https://pub.dartlang.org" + name: string_scanner + sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + url: "https://pub.dev" source: hosted - version: "0.6.1+2" - wakelock_macos: + version: "1.3.0" + term_glyph: dependency: transitive description: - name: wakelock_macos - url: "https://pub.dartlang.org" + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted - version: "0.4.0" - wakelock_platform_interface: + version: "1.2.1" + test_api: dependency: transitive description: - name: wakelock_platform_interface - url: "https://pub.dartlang.org" + name: test_api + sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + url: "https://pub.dev" source: hosted - version: "0.3.0" - wakelock_web: + version: "0.7.3" + timing: dependency: transitive description: - name: wakelock_web - url: "https://pub.dartlang.org" + name: timing + sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" + url: "https://pub.dev" source: hosted - version: "0.4.0" - wakelock_windows: + version: "1.0.1" + typed_data: dependency: transitive description: - name: wakelock_windows - url: "https://pub.dartlang.org" + name: typed_data + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" source: hosted - version: "0.2.0" - webview_flutter: + version: "1.3.2" + uuid: dependency: transitive description: - name: webview_flutter - url: "https://pub.dartlang.org" + name: uuid + sha256: f33d6bb662f0e4f79dcd7ada2e6170f3b3a2530c28fc41f49a411ddedd576a77 + url: "https://pub.dev" source: hosted - version: "2.8.0" - webview_flutter_android: + version: "4.5.0" + vm_service: dependency: transitive description: - name: webview_flutter_android - url: "https://pub.dartlang.org" + name: vm_service + sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" + url: "https://pub.dev" source: hosted - version: "2.8.8" - webview_flutter_platform_interface: + version: "14.2.5" + watcher: dependency: transitive description: - name: webview_flutter_platform_interface - url: "https://pub.dartlang.org" + name: watcher + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" + url: "https://pub.dev" source: hosted - version: "1.8.1" - webview_flutter_wkwebview: + version: "1.1.0" + web: dependency: transitive description: - name: webview_flutter_wkwebview - url: "https://pub.dartlang.org" + name: web + sha256: d43c1d6b787bf0afad444700ae7f4db8827f701bc61c255ac8d328c6f4d52062 + url: "https://pub.dev" source: hosted - version: "2.7.5" - win32: + version: "1.0.0" + web_socket: dependency: transitive description: - name: win32 - url: "https://pub.dartlang.org" + name: web_socket + sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83" + url: "https://pub.dev" source: hosted - version: "2.6.0" - xdg_directories: + version: "0.1.6" + web_socket_channel: dependency: transitive description: - name: xdg_directories - url: "https://pub.dartlang.org" + name: web_socket_channel + sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f" + url: "https://pub.dev" source: hosted - version: "0.2.0+1" - xml: + version: "3.0.1" + yaml: dependency: transitive description: - name: xml - url: "https://pub.dartlang.org" + name: yaml + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.dev" source: hosted - version: "5.4.1" + version: "3.1.2" sdks: - dart: ">=2.17.1 <3.0.0" - flutter: ">=2.10.0" + dart: ">=3.5.0-259.0.dev <3.6.0" diff --git a/pubspec.yaml b/pubspec.yaml index bc65ac91..faa3d9b2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,102 +1,20 @@ -name: folio -description: Live portfolio developed in flutter 3.0. - -# The following line prevents the package from being accidentally published to -# pub.dev using `pub publish`. This is preferred for private packages. -publish_to: 'none' # Remove this line if you wish to publish to pub.dev - -version: 1.0.0+1 +name: devfolio +description: devfolio migrated to jaspr from flutter. +version: 0.2.0 environment: - sdk: '>=3.4.3 <4.0.0' + sdk: '>=3.0.0 <4.0.0' dependencies: - flutter: - sdk: flutter - - # github - github: ^9.2.0 - - # web related - flutter_html: any - url_strategy: ^0.3.0 - universal_html: ^2.0.4 - - # http - http: ^1.2.2 - - # utils - mailto: ^2.0.0 - flip_card: ^0.7.0 - url_launcher: ^6.1.2 - cupertino_icons: ^1.0.2 - carousel_slider: ^5.0.0 - animated_text_kit: ^4.2.1 - font_awesome_flutter: ^10.1.0 - - # state management - provider: ^6.0.1 - - # cache - shared_preferences: ^2.0.6 - + jaspr: ^0.15.1 dev_dependencies: - flutter_test: - sdk: flutter - - flutter_lints: ^4.0.0 - # flutter_launcher_icons: ^0.13.1 - -flutter_launcher_icons: - android: "launcher_icon" - ios: true - image_path: "assets/app/1024.png" - min_sdk_android: 21 # android min sdk min:16, default 21 - windows: - generate: true - image_path: "assets/app/1024.png" - icon_size: 48 # min:48, max:256, default: 48 - macos: - generate: true - image_path: "assets/app/1024.png" - -# For information on the generic Dart part of this file, see the -# following page: https://dart.dev/tools/pub/pubspec -# The following section is specific to Flutter. -flutter: - - uses-material-design: true - - # To add assets to your application, add an assets section, like this: - assets: - - assets/ - - assets/app/ - - assets/work/ - - assets/photos/ - - assets/services/ - - assets/projects/ + build_runner: ^2.4.0 + jaspr_web_compilers: ^4.0.10 + jaspr_builder: ^0.15.1 + jaspr_lints: ^0.1.1 + lints: ^3.0.0 - - data.json +jaspr: + mode: static - fonts: - - family: Agustina - fonts: - - asset: fonts/agustina/agustina.otf - - - family: Montserrat - fonts: - - asset: fonts/montserrat/montserrat.ttf - - - family: Poppins - fonts: - - asset: fonts/poppins/Poppins-Regular.ttf - - asset: fonts/poppins/Poppins-Light.ttf - - asset: fonts/poppins/Poppins-Bold.ttf - weight: 900 - - asset: fonts/poppins/Poppins-Medium.ttf - weight: 300 - - asset: fonts/poppins/Poppins-SemiBold.ttf - weight: 500 - - asset: fonts/poppins/Poppins-Italic.ttf - style: italic diff --git a/test/widget_test.dart b/test/widget_test.dart deleted file mode 100644 index e69de29b..00000000 diff --git a/web/favicon.ico b/web/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..712c52ab57aa09ff48762a37f7b80751e705058b GIT binary patch literal 15406 zcmeHNdyo{x8K1)liAmHv)Q~8idUf2+&MuG*cQdnxt}jXyAAfj6sDzl5C`ukiD>1Kv zOHt9px0cURlu#5Xh*DA^!rgAq+yS8yO2I%#`S?T15K}pm%E=|i@!0&np6%V9xtZD7 z+g%FEovNHc2*^*3LC{dFr!lX8-B`soVZ&C0@0C`!AcD9z2zciZO_#3AC4RB9WTCW zu*Q$>j1{`BN;~1*&kpZ zPs(j_-O;`ED#rLOt46k6GqV>Y^}eraM%EO4^lq8; z_5{fEXV~DQa(gB9mRTDosD?d_WUU0Rp0MO+no%++{y!`DCk#7L zBv4@m|J+NM%PsJEOF(lT#kYbk=HiK@$*%V+_}`0gh)I7P)7fRJx@LTZ>=ku7`x5y5 zQShwlZL*!@$10V9;MI;^6>L|Fuuh4YR>is^>Jo9dKaTc9~|>I{6IXe<1jcdWYB`@qnz43!DV}U{t;W4nB7# zk7xAk)$w%i#fc94O3<6j;{nt94do*QtlwLkZl44Af)1?LY47U?7u;5T{7}f593nkv zdhTbzyz198#mIgIwlatGMmdK1acWR*Xkcs_pkNOvTIEKRMxF#pXgm!Ke2g_&@>ugw zQF$ghd(TI#^S&hi(Rh1qN>qG5IOOg!C@&Q9D|?VzW0c#A&FGux2VYGaKhH6(eo20u z_w-&r7MjT<&tKjRT24-~G^ftonruJLWM(Q#b!U^ZY=wQpZ(Z^mxqD@pD0Mo=K_2K9 z?0rNGFYJ+Q^KF#3&^L^IMh<6rIMuDy(>+ep?Im=kRvd%L`YWZLG`F4!{JtU$u6s71 zVtacr?qeX8t{h&4ZQ!S znSEDz;pl&+vo~*hHQ$Att9$QhTGK0`3BUV&Np|EenUyp*ommNuvBFMHZ~iiPzw6?! zTi>gM9`?S)TqdW3GlW{}Iar>26ZWoKW%=>FDj0rr5B|;HOZZ3OKbHV1@P5E(3e~lM z_k$9D@*TU%ou9}Y3pp3=bMTKI_MWH6u=S`X46Dl}zi#dG=EcMKj+UR@6$W4HKJsxc zA8J@1QVu67AN;R9rSa4K6!!C|xV3@9KOp7XP)9r$e*Pr$MGkOvNq#yz$=$7l+|QA5 zYgLELYh@Ym4?h?+{(}BXXNk_*^;muUPrixYz46fv&QtGn%g@$FJy*im7r1bBYc=JN zYo*&F9qdzJ7Z2l3&YhH#mCssYrhTDw9ztu-o5_ywJ3@kPd`2!Upfm@&WPP<6Jqfj|b~Yr_7Iihv?=QGwY1QbN zCi=tPF+EGUfWJxdkECFyVK}w!YsL8m_zi??i|(Acndw3U2LSy2l}Y z+$Q+b8-8^~RQm7*Ps+IT9Tm4$aJ0V3GNArO*!ic-H=$dzJh;1#bv`U^WaoNhc(1Lq zw^f!is7`kc;Adn%`T_k@LGblxPqy3VL4G-hGeABtDlhoZ<m}|H6mz=#ZbsBtx;eu>iMWBz^NThJ8~T;t zS<5&48{PNw#yq2AImAa4V?^amc{kAgx1@uA(7Z&&j{-N1?|EJ8{b;#Mb1;awb#fHC z1Vi^&Fo)YE`9YgK78O4V9On3kp#K*3T`O^4|0kfo2<3LHUyI>G9-z>% literal 0 HcmV?d00001 diff --git a/web/favicon.png b/web/favicon.png deleted file mode 100644 index befa1caf35e2593ef36d028cf49dc076c824adfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 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 X>c!)3PgKfL&lX^$Z>Cpu&6)6jvi^Z! diff --git a/web/icons/Icon-maskable-512.png b/web/icons/Icon-maskable-512.png deleted file mode 100644 index d69c56691fbdb0b7efa65097c7cc1edac12a6d3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20998 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 MPgg&ebxsLQ025IeI{*Lx diff --git a/assets/app/1024.png b/web/images/app/1024.png similarity index 100% rename from assets/app/1024.png rename to web/images/app/1024.png diff --git a/assets/hi.gif b/web/images/hi.gif similarity index 100% rename from assets/hi.gif rename to web/images/hi.gif diff --git a/assets/photos/black-white.png b/web/images/photos/black-white.png similarity index 100% rename from assets/photos/black-white.png rename to web/images/photos/black-white.png diff --git a/assets/photos/colored.png b/web/images/photos/colored.png similarity index 100% rename from assets/photos/colored.png rename to web/images/photos/colored.png diff --git a/assets/photos/mobile.png b/web/images/photos/mobile.png similarity index 100% rename from assets/photos/mobile.png rename to web/images/photos/mobile.png diff --git a/assets/projects/android.png b/web/images/projects/android.png similarity index 100% rename from assets/projects/android.png rename to web/images/projects/android.png diff --git a/assets/projects/covid.png b/web/images/projects/covid.png similarity index 100% rename from assets/projects/covid.png rename to web/images/projects/covid.png diff --git a/assets/projects/covidB.png b/web/images/projects/covidB.png similarity index 100% rename from assets/projects/covidB.png rename to web/images/projects/covidB.png diff --git a/assets/projects/earbender.png b/web/images/projects/earbender.png similarity index 100% rename from assets/projects/earbender.png rename to web/images/projects/earbender.png diff --git a/assets/projects/flutter.png b/web/images/projects/flutter.png similarity index 100% rename from assets/projects/flutter.png rename to web/images/projects/flutter.png diff --git a/assets/projects/hereiam.png b/web/images/projects/hereiam.png similarity index 100% rename from assets/projects/hereiam.png rename to web/images/projects/hereiam.png diff --git a/assets/projects/hereiamB.png b/web/images/projects/hereiamB.png similarity index 100% rename from assets/projects/hereiamB.png rename to web/images/projects/hereiamB.png diff --git a/assets/projects/java.png b/web/images/projects/java.png similarity index 100% rename from assets/projects/java.png rename to web/images/projects/java.png diff --git a/assets/projects/medkit.png b/web/images/projects/medkit.png similarity index 100% rename from assets/projects/medkit.png rename to web/images/projects/medkit.png diff --git a/assets/projects/medkitB.png b/web/images/projects/medkitB.png similarity index 100% rename from assets/projects/medkitB.png rename to web/images/projects/medkitB.png diff --git a/assets/projects/messenger.png b/web/images/projects/messenger.png similarity index 100% rename from assets/projects/messenger.png rename to web/images/projects/messenger.png diff --git a/assets/projects/quran.png b/web/images/projects/quran.png similarity index 100% rename from assets/projects/quran.png rename to web/images/projects/quran.png diff --git a/assets/projects/quranB.png b/web/images/projects/quranB.png similarity index 100% rename from assets/projects/quranB.png rename to web/images/projects/quranB.png diff --git a/assets/projects/snackbar.png b/web/images/projects/snackbar.png similarity index 100% rename from assets/projects/snackbar.png rename to web/images/projects/snackbar.png diff --git a/assets/services/app.png b/web/images/services/app.png similarity index 100% rename from assets/services/app.png rename to web/images/services/app.png diff --git a/assets/services/blog.png b/web/images/services/blog.png similarity index 100% rename from assets/services/blog.png rename to web/images/services/blog.png diff --git a/assets/services/fiverr.png b/web/images/services/fiverr.png similarity index 100% rename from assets/services/fiverr.png rename to web/images/services/fiverr.png diff --git a/assets/services/open.png b/web/images/services/open.png similarity index 100% rename from assets/services/open.png rename to web/images/services/open.png diff --git a/assets/services/open_b.png b/web/images/services/open_b.png similarity index 100% rename from assets/services/open_b.png rename to web/images/services/open_b.png diff --git a/assets/services/rapid.png b/web/images/services/rapid.png similarity index 100% rename from assets/services/rapid.png rename to web/images/services/rapid.png diff --git a/assets/services/ui.png b/web/images/services/ui.png similarity index 100% rename from assets/services/ui.png rename to web/images/services/ui.png diff --git a/assets/work/cui.png b/web/images/work/cui.png similarity index 100% rename from assets/work/cui.png rename to web/images/work/cui.png diff --git a/assets/work/dsc.png b/web/images/work/dsc.png similarity index 100% rename from assets/work/dsc.png rename to web/images/work/dsc.png diff --git a/assets/work/flutterIsl.png b/web/images/work/flutterIsl.png similarity index 100% rename from assets/work/flutterIsl.png rename to web/images/work/flutterIsl.png diff --git a/assets/work/st.png b/web/images/work/st.png similarity index 100% rename from assets/work/st.png rename to web/images/work/st.png diff --git a/web/index.html b/web/index.html deleted file mode 100644 index e1acae66..00000000 --- a/web/index.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - Hamza - - - - - - - - - -
-
-
-
-
-
-
-
- - - - \ No newline at end of file diff --git a/web/manifest.json b/web/manifest.json deleted file mode 100644 index 4e9a8b94..00000000 --- a/web/manifest.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "Hamza", - "short_name": "Hamza", - "start_url": ".", - "display": "standalone", - "background_color": "#000000", - "theme_color": "#0175C2", - "description": "Live portfolio using flutter 2.0", - "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/windows/.gitignore b/windows/.gitignore deleted file mode 100644 index d492d0d9..00000000 --- a/windows/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -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 deleted file mode 100644 index 3c89066b..00000000 --- a/windows/CMakeLists.txt +++ /dev/null @@ -1,101 +0,0 @@ -# Project-level configuration. -cmake_minimum_required(VERSION 3.14) -project(devfolio 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 "devfolio") - -# Explicitly opt in to modern CMake behaviors to avoid warnings with recent -# versions of CMake. -cmake_policy(SET CMP0063 NEW) - -# Define build configuration option. -get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) -if(IS_MULTICONFIG) - set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" - CACHE STRING "" FORCE) -else() - if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - set(CMAKE_BUILD_TYPE "Debug" CACHE - STRING "Flutter build mode" FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Profile" "Release") - endif() -endif() -# Define settings for the Profile build mode. -set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") -set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") -set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") -set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") - -# Use Unicode for all projects. -add_definitions(-DUNICODE -D_UNICODE) - -# Compilation settings that should be applied to most targets. -# -# Be cautious about adding new options here, as plugins use this function by -# default. In most cases, you should add new options to specific targets instead -# of modifying this function. -function(APPLY_STANDARD_SETTINGS TARGET) - target_compile_features(${TARGET} PUBLIC cxx_std_17) - target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") - target_compile_options(${TARGET} PRIVATE /EHsc) - target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") - target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") -endfunction() - -# Flutter library and tool build rules. -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") -add_subdirectory(${FLUTTER_MANAGED_DIR}) - -# Application build; see runner/CMakeLists.txt. -add_subdirectory("runner") - -# Generated plugin build rules, which manage building the plugins and adding -# them to the application. -include(flutter/generated_plugins.cmake) - - -# === Installation === -# Support files are copied into place next to the executable, so that it can -# run in place. This is done instead of making a separate bundle (as on Linux) -# so that building and running from within Visual Studio will work. -set(BUILD_BUNDLE_DIR "$") -# Make the "install" step default, as it's required to run. -set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() - -set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") -set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -if(PLUGIN_BUNDLED_LIBRARIES) - install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endif() - -# Fully re-copy the assets directory on each build to avoid having stale files -# from a previous install. -set(FLUTTER_ASSET_DIR_NAME "flutter_assets") -install(CODE " - file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") - " COMPONENT Runtime) -install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" - DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) - -# Install the AOT library on non-Debug builds only. -install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - CONFIGURATIONS Profile;Release - COMPONENT Runtime) diff --git a/windows/flutter/CMakeLists.txt b/windows/flutter/CMakeLists.txt deleted file mode 100644 index 930d2071..00000000 --- a/windows/flutter/CMakeLists.txt +++ /dev/null @@ -1,104 +0,0 @@ -# This file controls Flutter-level build steps. It should not be edited. -cmake_minimum_required(VERSION 3.14) - -set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") - -# Configuration provided via flutter tool. -include(${EPHEMERAL_DIR}/generated_config.cmake) - -# TODO: Move the rest of this into files in ephemeral. See -# https://github.com/flutter/flutter/issues/57146. -set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") - -# === Flutter Library === -set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") - -# Published to parent scope for install step. -set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) -set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) -set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) -set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) - -list(APPEND FLUTTER_LIBRARY_HEADERS - "flutter_export.h" - "flutter_windows.h" - "flutter_messenger.h" - "flutter_plugin_registrar.h" - "flutter_texture_registrar.h" -) -list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") -add_library(flutter INTERFACE) -target_include_directories(flutter INTERFACE - "${EPHEMERAL_DIR}" -) -target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") -add_dependencies(flutter flutter_assemble) - -# === Wrapper === -list(APPEND CPP_WRAPPER_SOURCES_CORE - "core_implementations.cc" - "standard_codec.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") -list(APPEND CPP_WRAPPER_SOURCES_PLUGIN - "plugin_registrar.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") -list(APPEND CPP_WRAPPER_SOURCES_APP - "flutter_engine.cc" - "flutter_view_controller.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") - -# Wrapper sources needed for a plugin. -add_library(flutter_wrapper_plugin STATIC - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_PLUGIN} -) -apply_standard_settings(flutter_wrapper_plugin) -set_target_properties(flutter_wrapper_plugin PROPERTIES - POSITION_INDEPENDENT_CODE ON) -set_target_properties(flutter_wrapper_plugin PROPERTIES - CXX_VISIBILITY_PRESET hidden) -target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) -target_include_directories(flutter_wrapper_plugin PUBLIC - "${WRAPPER_ROOT}/include" -) -add_dependencies(flutter_wrapper_plugin flutter_assemble) - -# Wrapper sources needed for the runner. -add_library(flutter_wrapper_app STATIC - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_APP} -) -apply_standard_settings(flutter_wrapper_app) -target_link_libraries(flutter_wrapper_app PUBLIC flutter) -target_include_directories(flutter_wrapper_app PUBLIC - "${WRAPPER_ROOT}/include" -) -add_dependencies(flutter_wrapper_app flutter_assemble) - -# === Flutter tool backend === -# _phony_ is a non-existent file to force this command to run every time, -# since currently there's no way to get a full input/output list from the -# flutter tool. -set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") -set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) -add_custom_command( - OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} - ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} - ${CPP_WRAPPER_SOURCES_APP} - ${PHONY_OUTPUT} - COMMAND ${CMAKE_COMMAND} -E env - ${FLUTTER_TOOL_ENVIRONMENT} - "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" - windows-x64 $ - VERBATIM -) -add_custom_target(flutter_assemble DEPENDS - "${FLUTTER_LIBRARY}" - ${FLUTTER_LIBRARY_HEADERS} - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_PLUGIN} - ${CPP_WRAPPER_SOURCES_APP} -) diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc deleted file mode 100644 index 4f788487..00000000 --- a/windows/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,14 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - -#include - -void RegisterPlugins(flutter::PluginRegistry* registry) { - UrlLauncherWindowsRegisterWithRegistrar( - registry->GetRegistrarForPlugin("UrlLauncherWindows")); -} diff --git a/windows/flutter/generated_plugin_registrant.h b/windows/flutter/generated_plugin_registrant.h deleted file mode 100644 index dc139d85..00000000 --- a/windows/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// 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 deleted file mode 100644 index 88b22e5c..00000000 --- a/windows/flutter/generated_plugins.cmake +++ /dev/null @@ -1,24 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_PLUGIN_LIST - url_launcher_windows -) - -list(APPEND FLUTTER_FFI_PLUGIN_LIST -) - -set(PLUGIN_BUNDLED_LIBRARIES) - -foreach(plugin ${FLUTTER_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) - target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) - list(APPEND PLUGIN_BUNDLED_LIBRARIES $) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) -endforeach(plugin) - -foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) -endforeach(ffi_plugin) diff --git a/windows/runner/CMakeLists.txt b/windows/runner/CMakeLists.txt deleted file mode 100644 index b9e550fb..00000000 --- a/windows/runner/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -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}) - -# Disable Windows macros that collide with C++ standard library functions. -target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") - -# Add dependency libraries and include directories. Add any application-specific -# dependencies here. -target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) -target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") - -# Run the Flutter tool portions of the build. This must not be removed. -add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/windows/runner/Runner.rc b/windows/runner/Runner.rc deleted file mode 100644 index 50674c8e..00000000 --- a/windows/runner/Runner.rc +++ /dev/null @@ -1,121 +0,0 @@ -// 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\\Icon-512.ico" - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -#ifdef FLUTTER_BUILD_NUMBER -#define VERSION_AS_NUMBER FLUTTER_BUILD_NUMBER -#else -#define VERSION_AS_NUMBER 1,0,0 -#endif - -#ifdef FLUTTER_BUILD_NAME -#define VERSION_AS_STRING #FLUTTER_BUILD_NAME -#else -#define VERSION_AS_STRING "1.0.0" -#endif - -VS_VERSION_INFO VERSIONINFO - FILEVERSION VERSION_AS_NUMBER - PRODUCTVERSION VERSION_AS_NUMBER - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK -#ifdef _DEBUG - FILEFLAGS VS_FF_DEBUG -#else - FILEFLAGS 0x0L -#endif - FILEOS VOS__WINDOWS32 - FILETYPE VFT_APP - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904e4" - BEGIN - VALUE "CompanyName", "com.hmz" "\0" - VALUE "FileDescription", "devfolio" "\0" - VALUE "FileVersion", VERSION_AS_STRING "\0" - VALUE "InternalName", "devfolio" "\0" - VALUE "LegalCopyright", "Copyright (C) 2022 com.hmz. All rights reserved." "\0" - VALUE "OriginalFilename", "devfolio.exe" "\0" - VALUE "ProductName", "devfolio" "\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 deleted file mode 100644 index b43b9095..00000000 --- a/windows/runner/flutter_window.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#include "flutter_window.h" - -#include - -#include "flutter/generated_plugin_registrant.h" - -FlutterWindow::FlutterWindow(const flutter::DartProject& project) - : project_(project) {} - -FlutterWindow::~FlutterWindow() {} - -bool FlutterWindow::OnCreate() { - if (!Win32Window::OnCreate()) { - return false; - } - - RECT frame = GetClientArea(); - - // The size here must match the window dimensions to avoid unnecessary surface - // creation / destruction in the startup path. - flutter_controller_ = std::make_unique( - frame.right - frame.left, frame.bottom - frame.top, project_); - // Ensure that basic setup of the controller was successful. - if (!flutter_controller_->engine() || !flutter_controller_->view()) { - return false; - } - RegisterPlugins(flutter_controller_->engine()); - SetChildContent(flutter_controller_->view()->GetNativeWindow()); - return true; -} - -void FlutterWindow::OnDestroy() { - if (flutter_controller_) { - flutter_controller_ = nullptr; - } - - Win32Window::OnDestroy(); -} - -LRESULT -FlutterWindow::MessageHandler(HWND hwnd, UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - // Give Flutter, including plugins, an opportunity to handle window messages. - if (flutter_controller_) { - std::optional result = - flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, - lparam); - if (result) { - return *result; - } - } - - switch (message) { - case WM_FONTCHANGE: - flutter_controller_->engine()->ReloadSystemFonts(); - break; - } - - return Win32Window::MessageHandler(hwnd, message, wparam, lparam); -} diff --git a/windows/runner/flutter_window.h b/windows/runner/flutter_window.h deleted file mode 100644 index 6da0652f..00000000 --- a/windows/runner/flutter_window.h +++ /dev/null @@ -1,33 +0,0 @@ -#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 deleted file mode 100644 index 738d19ba..00000000 --- a/windows/runner/main.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include -#include -#include - -#include "flutter_window.h" -#include "utils.h" - -int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, - _In_ wchar_t *command_line, _In_ int show_command) { - // Attach to console when present (e.g., 'flutter run') or create a - // new console when running with a debugger. - if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { - CreateAndAttachConsole(); - } - - // Initialize COM, so that it is available for use in the library and/or - // plugins. - ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); - - flutter::DartProject project(L"data"); - - std::vector command_line_arguments = - GetCommandLineArguments(); - - project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); - - FlutterWindow window(project); - Win32Window::Point origin(10, 10); - Win32Window::Size size(1280, 720); - if (!window.CreateAndShow(L"Hamza", 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 deleted file mode 100644 index 66a65d1e..00000000 --- a/windows/runner/resource.h +++ /dev/null @@ -1,16 +0,0 @@ -//{{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/runner.exe.manifest b/windows/runner/runner.exe.manifest deleted file mode 100644 index c977c4a4..00000000 --- a/windows/runner/runner.exe.manifest +++ /dev/null @@ -1,20 +0,0 @@ - - - - - PerMonitorV2 - - - - - - - - - - - - - - - diff --git a/windows/runner/utils.cpp b/windows/runner/utils.cpp deleted file mode 100644 index f5bf9fa0..00000000 --- a/windows/runner/utils.cpp +++ /dev/null @@ -1,64 +0,0 @@ -#include "utils.h" - -#include -#include -#include -#include - -#include - -void CreateAndAttachConsole() { - if (::AllocConsole()) { - FILE *unused; - if (freopen_s(&unused, "CONOUT$", "w", stdout)) { - _dup2(_fileno(stdout), 1); - } - if (freopen_s(&unused, "CONOUT$", "w", stderr)) { - _dup2(_fileno(stdout), 2); - } - std::ios::sync_with_stdio(); - FlutterDesktopResyncOutputStreams(); - } -} - -std::vector GetCommandLineArguments() { - // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. - int argc; - wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); - if (argv == nullptr) { - return std::vector(); - } - - std::vector command_line_arguments; - - // Skip the first argument as it's the binary name. - for (int i = 1; i < argc; i++) { - command_line_arguments.push_back(Utf8FromUtf16(argv[i])); - } - - ::LocalFree(argv); - - return command_line_arguments; -} - -std::string Utf8FromUtf16(const wchar_t* utf16_string) { - if (utf16_string == nullptr) { - return std::string(); - } - int target_length = ::WideCharToMultiByte( - CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, - -1, nullptr, 0, nullptr, nullptr); - std::string utf8_string; - if (target_length == 0 || target_length > utf8_string.max_size()) { - return utf8_string; - } - utf8_string.resize(target_length); - int converted_length = ::WideCharToMultiByte( - CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, - -1, utf8_string.data(), - target_length, nullptr, nullptr); - if (converted_length == 0) { - return std::string(); - } - return utf8_string; -} diff --git a/windows/runner/utils.h b/windows/runner/utils.h deleted file mode 100644 index 3879d547..00000000 --- a/windows/runner/utils.h +++ /dev/null @@ -1,19 +0,0 @@ -#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 deleted file mode 100644 index c10f08dc..00000000 --- a/windows/runner/win32_window.cpp +++ /dev/null @@ -1,245 +0,0 @@ -#include "win32_window.h" - -#include - -#include "resource.h" - -namespace { - -constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; - -// The number of Win32Window objects that currently exist. -static int g_active_window_count = 0; - -using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); - -// Scale helper to convert logical scaler values to physical using passed in -// scale factor -int Scale(int source, double scale_factor) { - return static_cast(source * scale_factor); -} - -// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. -// This API is only needed for PerMonitor V1 awareness mode. -void EnableFullDpiSupportIfAvailable(HWND hwnd) { - HMODULE user32_module = LoadLibraryA("User32.dll"); - if (!user32_module) { - return; - } - auto enable_non_client_dpi_scaling = - reinterpret_cast( - GetProcAddress(user32_module, "EnableNonClientDpiScaling")); - if (enable_non_client_dpi_scaling != nullptr) { - enable_non_client_dpi_scaling(hwnd); - FreeLibrary(user32_module); - } -} - -} // namespace - -// Manages the Win32Window's window class registration. -class WindowClassRegistrar { - public: - ~WindowClassRegistrar() = default; - - // Returns the singleton registar instance. - static WindowClassRegistrar* GetInstance() { - if (!instance_) { - instance_ = new WindowClassRegistrar(); - } - return instance_; - } - - // Returns the name of the window class, registering the class if it hasn't - // previously been registered. - const wchar_t* GetWindowClass(); - - // Unregisters the window class. Should only be called if there are no - // instances of the window. - void UnregisterWindowClass(); - - private: - WindowClassRegistrar() = default; - - static WindowClassRegistrar* instance_; - - bool class_registered_ = false; -}; - -WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; - -const wchar_t* WindowClassRegistrar::GetWindowClass() { - if (!class_registered_) { - WNDCLASS window_class{}; - window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); - window_class.lpszClassName = kWindowClassName; - window_class.style = CS_HREDRAW | CS_VREDRAW; - window_class.cbClsExtra = 0; - window_class.cbWndExtra = 0; - window_class.hInstance = GetModuleHandle(nullptr); - window_class.hIcon = - LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); - window_class.hbrBackground = 0; - window_class.lpszMenuName = nullptr; - window_class.lpfnWndProc = Win32Window::WndProc; - RegisterClass(&window_class); - class_registered_ = true; - } - return kWindowClassName; -} - -void WindowClassRegistrar::UnregisterWindowClass() { - UnregisterClass(kWindowClassName, nullptr); - class_registered_ = false; -} - -Win32Window::Win32Window() { - ++g_active_window_count; -} - -Win32Window::~Win32Window() { - --g_active_window_count; - Destroy(); -} - -bool Win32Window::CreateAndShow(const std::wstring& title, - const Point& origin, - const Size& size) { - Destroy(); - - const wchar_t* window_class = - WindowClassRegistrar::GetInstance()->GetWindowClass(); - - const POINT target_point = {static_cast(origin.x), - static_cast(origin.y)}; - HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); - UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); - double scale_factor = dpi / 96.0; - - HWND window = CreateWindow( - window_class, title.c_str(), WS_OVERLAPPEDWINDOW | WS_VISIBLE, - Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), - Scale(size.width, scale_factor), Scale(size.height, scale_factor), - nullptr, nullptr, GetModuleHandle(nullptr), this); - - if (!window) { - return false; - } - - return OnCreate(); -} - -// static -LRESULT CALLBACK Win32Window::WndProc(HWND const window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - if (message == WM_NCCREATE) { - auto window_struct = reinterpret_cast(lparam); - SetWindowLongPtr(window, GWLP_USERDATA, - reinterpret_cast(window_struct->lpCreateParams)); - - auto that = static_cast(window_struct->lpCreateParams); - EnableFullDpiSupportIfAvailable(window); - that->window_handle_ = window; - } else if (Win32Window* that = GetThisFromHandle(window)) { - return that->MessageHandler(window, message, wparam, lparam); - } - - return DefWindowProc(window, message, wparam, lparam); -} - -LRESULT -Win32Window::MessageHandler(HWND hwnd, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - switch (message) { - case WM_DESTROY: - window_handle_ = nullptr; - Destroy(); - if (quit_on_close_) { - PostQuitMessage(0); - } - return 0; - - case WM_DPICHANGED: { - auto newRectSize = reinterpret_cast(lparam); - LONG newWidth = newRectSize->right - newRectSize->left; - LONG newHeight = newRectSize->bottom - newRectSize->top; - - SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, - newHeight, SWP_NOZORDER | SWP_NOACTIVATE); - - return 0; - } - case WM_SIZE: { - RECT rect = GetClientArea(); - if (child_content_ != nullptr) { - // Size and position the child window. - MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, - rect.bottom - rect.top, TRUE); - } - return 0; - } - - case WM_ACTIVATE: - if (child_content_ != nullptr) { - SetFocus(child_content_); - } - return 0; - } - - return DefWindowProc(window_handle_, message, wparam, lparam); -} - -void Win32Window::Destroy() { - OnDestroy(); - - if (window_handle_) { - DestroyWindow(window_handle_); - window_handle_ = nullptr; - } - if (g_active_window_count == 0) { - WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); - } -} - -Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { - return reinterpret_cast( - GetWindowLongPtr(window, GWLP_USERDATA)); -} - -void Win32Window::SetChildContent(HWND content) { - child_content_ = content; - SetParent(content, window_handle_); - RECT frame = GetClientArea(); - - MoveWindow(content, frame.left, frame.top, frame.right - frame.left, - frame.bottom - frame.top, true); - - SetFocus(child_content_); -} - -RECT Win32Window::GetClientArea() { - RECT frame; - GetClientRect(window_handle_, &frame); - return frame; -} - -HWND Win32Window::GetHandle() { - return window_handle_; -} - -void Win32Window::SetQuitOnClose(bool quit_on_close) { - quit_on_close_ = quit_on_close; -} - -bool Win32Window::OnCreate() { - // No-op; provided for subclasses. - return true; -} - -void Win32Window::OnDestroy() { - // No-op; provided for subclasses. -} diff --git a/windows/runner/win32_window.h b/windows/runner/win32_window.h deleted file mode 100644 index 17ba4311..00000000 --- a/windows/runner/win32_window.h +++ /dev/null @@ -1,98 +0,0 @@ -#ifndef RUNNER_WIN32_WINDOW_H_ -#define RUNNER_WIN32_WINDOW_H_ - -#include - -#include -#include -#include - -// A class abstraction for a high DPI-aware Win32 Window. Intended to be -// inherited from by classes that wish to specialize with custom -// rendering and input handling -class Win32Window { - public: - struct Point { - unsigned int x; - unsigned int y; - Point(unsigned int x, unsigned int y) : x(x), y(y) {} - }; - - struct Size { - unsigned int width; - unsigned int height; - Size(unsigned int width, unsigned int height) - : width(width), height(height) {} - }; - - Win32Window(); - virtual ~Win32Window(); - - // Creates and shows a win32 window with |title| and position and size using - // |origin| and |size|. New windows are created on the default monitor. Window - // sizes are specified to the OS in physical pixels, hence to ensure a - // consistent size to will treat the width height passed in to this function - // as logical pixels and scale to appropriate for the default monitor. Returns - // true if the window was created successfully. - bool CreateAndShow(const std::wstring& title, - const Point& origin, - const Size& size); - - // Release OS resources associated with window. - void Destroy(); - - // Inserts |content| into the window tree. - void SetChildContent(HWND content); - - // Returns the backing Window handle to enable clients to set icon and other - // window properties. Returns nullptr if the window has been destroyed. - HWND GetHandle(); - - // If true, closing this window will quit the application. - void SetQuitOnClose(bool quit_on_close); - - // Return a RECT representing the bounds of the current client area. - RECT GetClientArea(); - - protected: - // Processes and route salient window messages for mouse handling, - // size change and DPI. Delegates handling of these to member overloads that - // inheriting classes can handle. - virtual LRESULT MessageHandler(HWND window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept; - - // Called when CreateAndShow is called, allowing subclass window-related - // setup. Subclasses should return false if setup fails. - virtual bool OnCreate(); - - // Called when Destroy is called. - virtual void OnDestroy(); - - private: - friend class WindowClassRegistrar; - - // OS callback called by message pump. Handles the WM_NCCREATE message which - // is passed when the non-client area is being created and enables automatic - // non-client DPI scaling so that the non-client area automatically - // responsponds to changes in DPI. All other messages are handled by - // MessageHandler. - static LRESULT CALLBACK WndProc(HWND const window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept; - - // Retrieves a class instance pointer for |window| - static Win32Window* GetThisFromHandle(HWND const window) noexcept; - - bool quit_on_close_ = false; - - // window handle for top level window. - HWND window_handle_ = nullptr; - - // window handle for hosted content. - HWND child_content_ = nullptr; -}; - -#endif // RUNNER_WIN32_WINDOW_H_ From d8b755e97759bc501fc8a85ae7e56a12fd977ba0 Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Mon, 16 Sep 2024 07:14:28 +0500 Subject: [PATCH 02/27] Home section with basic info setup --- lib/components/nav_bar.dart | 10 ++- lib/jaspr_options.dart | 8 ++- lib/main.dart | 8 +++ lib/pages/home.dart | 11 ++-- lib/sections/basic_info.dart | 94 +++++++++++++++++++++++++++++ lib/utils/assets.dart | 18 ++++++ web/fonts/poppins/Poppins-Bold.ttf | Bin 0 -> 153900 bytes web/icons/play-solid.svg | 1 + 8 files changed, 135 insertions(+), 15 deletions(-) create mode 100644 lib/sections/basic_info.dart create mode 100644 lib/utils/assets.dart create mode 100644 web/fonts/poppins/Poppins-Bold.ttf create mode 100644 web/icons/play-solid.svg diff --git a/lib/components/nav_bar.dart b/lib/components/nav_bar.dart index 5634462f..81497d43 100644 --- a/lib/components/nav_bar.dart +++ b/lib/components/nav_bar.dart @@ -9,9 +9,9 @@ class NavBar extends StatelessComponent { Iterable build(BuildContext context) sync* { yield section(classes: 'navbar', [ div([ - span([text('<')]), + span([text('< ')]), span(classes: 'brand', [text('Hamza')]), - span([text('/>')]), + span([text(' />')]), ]), div(classes: 'labels', [ a( @@ -89,11 +89,9 @@ class NavBar extends StatelessComponent { direction: FlexDirection.row, justifyContent: JustifyContent.end, ), - css.import( - 'fonts/agustina/agustina.otf', - ), css('.brand').text( - fontFamily: FontFamily('fonts/agustina/agustina.otf'), + fontFamily: FontFamily('Agustina'), + fontSize: 24.px, ), ]; } diff --git a/lib/jaspr_options.dart b/lib/jaspr_options.dart index ee466517..adf320ec 100644 --- a/lib/jaspr_options.dart +++ b/lib/jaspr_options.dart @@ -5,7 +5,8 @@ import 'package:jaspr/jaspr.dart'; import 'package:devfolio/components/app_button.dart' as prefix0; import 'package:devfolio/components/nav_bar.dart' as prefix1; import 'package:devfolio/pages/home.dart' as prefix2; -import 'package:devfolio/app.dart' as prefix3; +import 'package:devfolio/sections/basic_info.dart' as prefix3; +import 'package:devfolio/app.dart' as prefix4; /// Default [JasprOptions] for use with your jaspr project. /// @@ -25,14 +26,15 @@ import 'package:devfolio/app.dart' as prefix3; /// ``` final defaultJasprOptions = JasprOptions( clients: { - prefix3.App: ClientTarget('app'), + prefix4.App: ClientTarget('app'), prefix0.AppButton: ClientTarget('components/app_button', params: _prefix0AppButton), }, styles: () => [ ...prefix0.AppButton.styles, ...prefix1.NavBar.styles, ...prefix2.Home.styles, - ...prefix3.AppState.styles, + ...prefix3.BasicInfoSectionState.styles, + ...prefix4.AppState.styles, ], ); diff --git a/lib/main.dart b/lib/main.dart index 80f7e4e0..abb2778e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -36,6 +36,14 @@ void main() { .box(width: 100.percent, minHeight: 100.vh) .box(margin: EdgeInsets.zero, padding: EdgeInsets.zero), css('h1').text(fontSize: 4.rem).box(margin: EdgeInsets.unset), + css.fontFace( + family: 'Agustina', + url: '/fonts/agustina/agustina.otf', + ), + css.fontFace( + family: 'Montserrat', + url: '/fonts/montserrat/montserrat.ttf', + ), ], body: App(), )); diff --git a/lib/pages/home.dart b/lib/pages/home.dart index fcb20f8c..09818e7c 100644 --- a/lib/pages/home.dart +++ b/lib/pages/home.dart @@ -1,4 +1,5 @@ import 'package:devfolio/components/nav_bar.dart'; +import 'package:devfolio/sections/basic_info.dart'; import 'package:jaspr/jaspr.dart'; class Home extends StatelessComponent { @@ -6,12 +7,10 @@ class Home extends StatelessComponent { @override Iterable build(BuildContext context) sync* { - yield div( - classes: 'home-body', - [ - NavBar(), - ], - ); + yield div(classes: 'home-body', [ + NavBar(), + BasicInfoSection(), + ]); } @css diff --git a/lib/sections/basic_info.dart b/lib/sections/basic_info.dart new file mode 100644 index 00000000..491c873f --- /dev/null +++ b/lib/sections/basic_info.dart @@ -0,0 +1,94 @@ +import 'package:devfolio/utils/assets.dart'; +import 'package:jaspr/jaspr.dart'; + +class BasicInfoSection extends StatefulComponent { + const BasicInfoSection({super.key}); + + @override + State createState() => BasicInfoSectionState(); +} + +class BasicInfoSectionState extends State { + @override + Iterable build(BuildContext context) sync* { + yield section(classes: 'info-section', [ + div([ + div(classes: 'welcome', [ + span(classes: 'welcome-text', [ + text('WELCOME TO MY PORTFOLIO'), + ]), + img( + classes: 'wave', + src: StaticAssets.waveGif, + height: 35, + ) + ]), + h1(classes: 'first-name', [text('Muhammad')]), + h1(classes: 'last-name', [text('Hamza')]), + span(classes: 'subtitle', [ + img(src: StaticAssets.playIcon, height: 20), + span(classes: 'dynamic-subtitles', [ + text('Flutter Enthusiast'), + ]) + ]), + div(classes: 'socials', []), + ]), + div( + classes: 'main-image', + [img(src: StaticAssets.bwImage)], + ), + ]); + } + + @css + static final List styles = [ + css('.info-section') + .flexbox( + direction: FlexDirection.row, + alignItems: AlignItems.center, + justifyContent: JustifyContent.spaceBetween, + ) + .box( + padding: EdgeInsets.only( + left: 10.vw, + )), + css('.welcome').box(margin: EdgeInsets.only(bottom: 2.5.vh)).flexbox( + alignItems: AlignItems.end, + ), + css('.welcome-text') + .box( + padding: EdgeInsets.only(right: 12.px, bottom: 2.px), + ) + .text( + fontFamily: FontFamily('Montserrat'), + fontSize: 20.px, + ), + css('.first-name').box(padding: EdgeInsets.only(top: 3.vh)).text( + fontFamily: FontFamily('Montserrat'), + fontWeight: FontWeight.w100, + lineHeight: 3.vh, + ), + css.fontFace( + family: 'PoppinsBold', + url: '/fonts/poppins/Poppins-Bold.ttf', + ), + css('.last-name').text( + fontFamily: FontFamily('PoppinsBold'), + fontWeight: FontWeight.bolder, + ), + css('.subtitle') + .flexbox(direction: FlexDirection.row, alignItems: AlignItems.center), + css('.dynamic-subtitles') + .box(margin: EdgeInsets.only(left: 15.px)) + .text(fontSize: 18.px), + css('.socials') + .box( + padding: EdgeInsets.only(top: 2.vh), + ) + .flexbox( + direction: FlexDirection.row, + alignItems: AlignItems.center, + justifyContent: JustifyContent.spaceBetween, + ), + ]; +} diff --git a/lib/utils/assets.dart b/lib/utils/assets.dart new file mode 100644 index 00000000..661a1365 --- /dev/null +++ b/lib/utils/assets.dart @@ -0,0 +1,18 @@ +abstract class StaticAssets { + static const String waveGif = '/images/hi.gif'; + + /// Icons (SVG) + static const String playIcon = '/icons/play-solid.svg'; + + /// Profile Images + /// Three variants are required + /// 1. Black and white + /// 2. Colored image of same size + /// 3. Mobile image (Preferred with border and circular avatar) + /// + static const String bwImage = '/images/photos/black-white.png'; + static const String coloredImage = '/images/photos/colored.png'; + static const String mobileImage = '/images/photos/mobile.png'; + + /// Project Images +} diff --git a/web/fonts/poppins/Poppins-Bold.ttf b/web/fonts/poppins/Poppins-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b94d47f3af31505f3cfcba533da52b881b6a1b33 GIT binary patch literal 153900 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 G$NfLB&PKNY literal 0 HcmV?d00001 diff --git a/web/icons/play-solid.svg b/web/icons/play-solid.svg new file mode 100644 index 00000000..36054df9 --- /dev/null +++ b/web/icons/play-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file From 4dfa93cfad0499f6e2b9f340e51b39f49e241867 Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Mon, 16 Sep 2024 10:03:14 +0500 Subject: [PATCH 03/27] Tablet and desktop responsiveness --- lib/sections/basic_info.dart | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/lib/sections/basic_info.dart b/lib/sections/basic_info.dart index 491c873f..2df10ce4 100644 --- a/lib/sections/basic_info.dart +++ b/lib/sections/basic_info.dart @@ -12,7 +12,7 @@ class BasicInfoSectionState extends State { @override Iterable build(BuildContext context) sync* { yield section(classes: 'info-section', [ - div([ + div(classes: 'info', [ div(classes: 'welcome', [ span(classes: 'welcome-text', [ text('WELCOME TO MY PORTFOLIO'), @@ -26,17 +26,14 @@ class BasicInfoSectionState extends State { h1(classes: 'first-name', [text('Muhammad')]), h1(classes: 'last-name', [text('Hamza')]), span(classes: 'subtitle', [ - img(src: StaticAssets.playIcon, height: 20), + img(classes: 'play-icon', src: StaticAssets.playIcon, height: 20), span(classes: 'dynamic-subtitles', [ text('Flutter Enthusiast'), ]) ]), div(classes: 'socials', []), ]), - div( - classes: 'main-image', - [img(src: StaticAssets.bwImage)], - ), + div(classes: 'main-image', []), ]); } @@ -76,6 +73,10 @@ class BasicInfoSectionState extends State { fontFamily: FontFamily('PoppinsBold'), fontWeight: FontWeight.bolder, ), + css('.main-image').box(height: 85.vh, width: 75.vh).background( + image: ImageStyle.url(StaticAssets.bwImage), + size: BackgroundSize.cover, + ), css('.subtitle') .flexbox(direction: FlexDirection.row, alignItems: AlignItems.center), css('.dynamic-subtitles') @@ -90,5 +91,26 @@ class BasicInfoSectionState extends State { alignItems: AlignItems.center, justifyContent: JustifyContent.spaceBetween, ), + + /// MEDIA QUERY 1100px + css.media(MediaQuery.screen(maxWidth: 1100.px), [ + css('.welcome-text').text(fontSize: 15.px), + css('.first-name').text(fontSize: 50.px), + css('.last-name').text(fontSize: 50.px), + css('.dynamic-subtitles').text(fontSize: 14.px), + css('.main-image').box(height: 65.vh, width: 55.vh), + css('.play-icon').box(height: 15.px), + ]), + + /// MEDIA QUERY 786px + css.media(MediaQuery.screen(maxWidth: 786.px), [ + css('.info-section').flexbox(direction: FlexDirection.column), + css('.main-image').box(height: 55.vh, width: 45.vh).flexItem( + alignSelf: AlignSelf.end, + ), + css('.info').flexItem( + alignSelf: AlignSelf.start, + ), + ]), ]; } From bd7bea26ac07c11ca371f48b3a178a13f6608814 Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Mon, 16 Sep 2024 12:08:59 +0500 Subject: [PATCH 04/27] AboutMe section WIP --- lib/app.dart | 1 + lib/components/app_button.dart | 1 + lib/jaspr_options.dart | 13 +-- lib/main.dart | 8 +- lib/pages/home.dart | 3 +- lib/sections/about_me.dart | 153 +++++++++++++++++++++++++++++++++ lib/sections/basic_info.dart | 7 +- 7 files changed, 168 insertions(+), 18 deletions(-) create mode 100644 lib/sections/about_me.dart diff --git a/lib/app.dart b/lib/app.dart index cf995d57..66a89d78 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -56,6 +56,7 @@ class AppState extends State { css('p').text(color: Colors.white), css('a').text(color: Colors.white), css('h1').text(color: Colors.white), + css('h2').text(color: Colors.white), css('span').text(color: Colors.white), ]), ]; diff --git a/lib/components/app_button.dart b/lib/components/app_button.dart index 7bc2f541..69a38df9 100644 --- a/lib/components/app_button.dart +++ b/lib/components/app_button.dart @@ -38,6 +38,7 @@ class AppButton extends StatelessComponent { radius: BorderRadius.circular(6.px), border: Border.all(BorderSide( color: primaryColor, + width: 1.px, )), ) .background( diff --git a/lib/jaspr_options.dart b/lib/jaspr_options.dart index adf320ec..969ea4fb 100644 --- a/lib/jaspr_options.dart +++ b/lib/jaspr_options.dart @@ -5,8 +5,9 @@ import 'package:jaspr/jaspr.dart'; import 'package:devfolio/components/app_button.dart' as prefix0; import 'package:devfolio/components/nav_bar.dart' as prefix1; import 'package:devfolio/pages/home.dart' as prefix2; -import 'package:devfolio/sections/basic_info.dart' as prefix3; -import 'package:devfolio/app.dart' as prefix4; +import 'package:devfolio/sections/about_me.dart' as prefix3; +import 'package:devfolio/sections/basic_info.dart' as prefix4; +import 'package:devfolio/app.dart' as prefix5; /// Default [JasprOptions] for use with your jaspr project. /// @@ -26,15 +27,17 @@ import 'package:devfolio/app.dart' as prefix4; /// ``` final defaultJasprOptions = JasprOptions( clients: { - prefix4.App: ClientTarget('app'), + prefix5.App: ClientTarget('app'), prefix0.AppButton: ClientTarget('components/app_button', params: _prefix0AppButton), + prefix3.AboutMeSection: ClientTarget('sections/about_me'), }, styles: () => [ ...prefix0.AppButton.styles, ...prefix1.NavBar.styles, ...prefix2.Home.styles, - ...prefix3.BasicInfoSectionState.styles, - ...prefix4.AppState.styles, + ...prefix3.AboutMeSection.styles, + ...prefix4.BasicInfoSection.styles, + ...prefix5.AppState.styles, ], ); diff --git a/lib/main.dart b/lib/main.dart index abb2778e..743f50a5 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -26,13 +26,13 @@ void main() { title: 'Hamza', styles: [ // Special import rule to include to another css file. - css.import('https://fonts.googleapis.com/css?family=Poppins'), + css.import('https://fonts.googleapis.com/css?family=Montserrat'), // Each style rule takes a valid css selector and a set of styles. // Styles are defined using type-safe css bindings and can be freely chained and nested. css('html, body') .text( fontFamily: const FontFamily.list( - [FontFamily('Poppins'), FontFamilies.sansSerif])) + [FontFamily('Montserrat'), FontFamilies.sansSerif])) .box(width: 100.percent, minHeight: 100.vh) .box(margin: EdgeInsets.zero, padding: EdgeInsets.zero), css('h1').text(fontSize: 4.rem).box(margin: EdgeInsets.unset), @@ -40,10 +40,6 @@ void main() { family: 'Agustina', url: '/fonts/agustina/agustina.otf', ), - css.fontFace( - family: 'Montserrat', - url: '/fonts/montserrat/montserrat.ttf', - ), ], body: App(), )); diff --git a/lib/pages/home.dart b/lib/pages/home.dart index 09818e7c..bdae9de7 100644 --- a/lib/pages/home.dart +++ b/lib/pages/home.dart @@ -1,4 +1,5 @@ import 'package:devfolio/components/nav_bar.dart'; +import 'package:devfolio/sections/about_me.dart'; import 'package:devfolio/sections/basic_info.dart'; import 'package:jaspr/jaspr.dart'; @@ -10,6 +11,7 @@ class Home extends StatelessComponent { yield div(classes: 'home-body', [ NavBar(), BasicInfoSection(), + AboutMeSection(), ]); } @@ -17,7 +19,6 @@ class Home extends StatelessComponent { static final List styles = [ css('.home-body') .box( - height: 100.vh, width: 100.vw, ) .background( diff --git a/lib/sections/about_me.dart b/lib/sections/about_me.dart new file mode 100644 index 00000000..0f972ba9 --- /dev/null +++ b/lib/sections/about_me.dart @@ -0,0 +1,153 @@ +import 'package:devfolio/constants/theme.dart'; +import 'package:devfolio/utils/assets.dart'; +import 'package:jaspr/jaspr.dart'; + +@client +class AboutMeSection extends StatelessComponent { + const AboutMeSection({super.key}); + + @override + Iterable build(BuildContext context) sync* { + final tech = [ + 'Flutter', + 'Dart', + 'Firebase', + 'Python', + 'dart_frog', + 'jaspr', + 'nodejs', + 'express', + ]; + + yield section(classes: 'about-me-section', [ + span(classes: 'title', [ + text('About Me'), + ]), + span(classes: 'subtitle', [ + text('Get to know me :)'), + ]), + div(classes: 'section-body', [ + div(classes: 'profile-picture', []), + div(classes: 'about-details', [ + span( + classes: 'intro-label', + styles: Styles.text(color: primaryColor), + [ + text('Who am I?'), + ]), + span(classes: 'intro-heading', [ + text( + "I'm Muhammad Hamza, a Flutter Developer, Technical blog writer and UI/UX Designer."), + ]), + span( + classes: 'intro-details', + styles: Styles.text( + color: Colors.lightGrey, + ), + [ + text( + "I'm a fresh graduate with Computer Science as Majors from COMSATS University Islamabad. I have been working with Flutter for the past 2 years and have developed multiple applications for both Android and iOS platforms. I have a keen interest in UI/UX designing and have been working on it for the past 3 years. I have also been writing technical blogs for the past 2 years and have been a part of multiple technical writing communities."), + ]), + div(classes: 'divider', []), + span( + classes: 'tech-label', + styles: Styles.text(color: primaryColor), + [ + text('Technologies I have worked with:'), + ]), + div(classes: 'tech-stack', [ + for (final t in tech) + span([ + img(src: StaticAssets.playIcon, height: 10), + span(classes: 'tech-item', [ + text(t), + ]), + ]), + ]), + div(classes: 'divider', []), + ]), + ]) + ]); + } + + @css + static final List styles = [ + css('.about-me-section') + .flexbox( + direction: FlexDirection.column, + alignItems: AlignItems.center, + justifyContent: JustifyContent.start, + ) + .box( + padding: EdgeInsets.only(top: 5.vh), + height: 100.vh, + ), + css('.title').text( + fontFamily: FontFamily('Montserrat'), + fontWeight: FontWeight.w100, + fontSize: 40.px, + ), + css('.section-body') + .flexbox( + direction: FlexDirection.row, + alignItems: AlignItems.center, + justifyContent: JustifyContent.center, + ) + .box( + margin: EdgeInsets.only(top: 50.px), + width: 100.percent, + ), + css('.profile-picture') + .background( + image: ImageStyle.url( + StaticAssets.coloredImage, + ), + size: BackgroundSize.cover, + ) + .box( + height: 700.px, + width: 450.px, + margin: EdgeInsets.only(right: 100.px), + ), + css('.about-details') + .flexbox( + direction: FlexDirection.column, + alignItems: AlignItems.start, + justifyContent: JustifyContent.center, + ) + .box( + width: 750.px, + ), + css('.intro-label').text(fontSize: 18.px), + css('.intro-heading') + .box( + margin: EdgeInsets.symmetric(vertical: 15.px), + ) + .text(fontSize: 20.px), + css('.intro-details').text( + lineHeight: 3.vh, + wordSpacing: 1.5.px, + color: Colors.lightGrey, + ), + css('.divider') + .box( + height: 1.px, + width: 100.percent, + margin: EdgeInsets.symmetric(vertical: 2.vh), + ) + .background(color: Colors.lightGrey), + css('.tech-label').text(fontSize: 12.px), + css('.tech-stack') + .flexbox( + direction: FlexDirection.row, + alignItems: AlignItems.center, + justifyContent: JustifyContent.start, + ) + .box( + margin: EdgeInsets.only(top: 15.px), + ), + css('.tech-item') + .box(margin: EdgeInsets.only(right: 12.px, left: 5.px)) + .text(fontSize: 14.px), + ]; +} diff --git a/lib/sections/basic_info.dart b/lib/sections/basic_info.dart index 2df10ce4..fe34e816 100644 --- a/lib/sections/basic_info.dart +++ b/lib/sections/basic_info.dart @@ -1,14 +1,9 @@ import 'package:devfolio/utils/assets.dart'; import 'package:jaspr/jaspr.dart'; -class BasicInfoSection extends StatefulComponent { +class BasicInfoSection extends StatelessComponent { const BasicInfoSection({super.key}); - @override - State createState() => BasicInfoSectionState(); -} - -class BasicInfoSectionState extends State { @override Iterable build(BuildContext context) sync* { yield section(classes: 'info-section', [ From d15067f6a5181ce1f5ed3ae6363543451ec87ac9 Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Tue, 17 Sep 2024 06:09:24 +0500 Subject: [PATCH 05/27] about me section completed --- lib/sections/about_me.dart | 97 +++++++++++++++++++++++++++++++++++++- lib/utils/assets.dart | 8 ++++ 2 files changed, 104 insertions(+), 1 deletion(-) diff --git a/lib/sections/about_me.dart b/lib/sections/about_me.dart index 0f972ba9..5d7c86b2 100644 --- a/lib/sections/about_me.dart +++ b/lib/sections/about_me.dart @@ -1,3 +1,4 @@ +import 'package:devfolio/components/app_button.dart'; import 'package:devfolio/constants/theme.dart'; import 'package:devfolio/utils/assets.dart'; import 'package:jaspr/jaspr.dart'; @@ -19,6 +20,29 @@ class AboutMeSection extends StatelessComponent { 'express', ]; + final works = [ + { + 'image': StaticAssets.cui, + 'url': 'https://www.comsats.edu.pk/', + 'height': 50, + }, + { + 'image': StaticAssets.dsc, + 'url': 'https://developers.google.com/community/dsc', + 'height': 30, + }, + { + 'image': StaticAssets.flutterisl, + 'url': 'https://meetup.com/flutter-islamabad', + 'height': 60, + }, + { + 'image': StaticAssets.st, + 'url': 'https://www.sastaticket.pk/', + 'height': 60, + }, + ]; + yield section(classes: 'about-me-section', [ span(classes: 'title', [ text('About Me'), @@ -65,6 +89,61 @@ class AboutMeSection extends StatelessComponent { ]), ]), div(classes: 'divider', []), + div(classes: 'personal-row', [ + div([ + span(classes: 'personal-label', [ + text('Name: '), + ]), + span(classes: 'personal-value', [ + text(' Muhammad Hamza'), + ]), + ]), + div([ + span(classes: 'personal-label', [ + text('Email: '), + ]), + span(classes: 'personal-value', [ + text(' hamza.6.shakeel@gmail.com'), + ]), + ]) + ]), + div(styles: Styles.box(height: 15.px), []), + div(classes: 'personal-row', [ + div([ + span(classes: 'personal-label', [ + text('Age: '), + ]), + span(classes: 'personal-value', [ + text(' 25'), + ]), + ]), + div([ + span(classes: 'personal-label', [ + text('From: '), + ]), + span(classes: 'personal-value', [ + text(' Islamabad, PK'), + ]), + ]) + ]), + div(styles: Styles.box(height: 25.px), []), + div(classes: 'work-row', [ + AppButton( + label: 'RESUME', + onPressed: () {}, + ), + div(classes: 'divider', styles: Styles.box(width: 80.px), []), + for (final work in works) + a( + classes: 'work-item', + href: (work['url'] as String), + target: Target.blank, + [ + img( + src: (work['image'] as String), + height: (work['height'] as int)), + ]), + ]) ]), ]) ]); @@ -79,7 +158,7 @@ class AboutMeSection extends StatelessComponent { justifyContent: JustifyContent.start, ) .box( - padding: EdgeInsets.only(top: 5.vh), + padding: EdgeInsets.only(top: 5.vh, right: 5.vw), height: 100.vh, ), css('.title').text( @@ -149,5 +228,21 @@ class AboutMeSection extends StatelessComponent { css('.tech-item') .box(margin: EdgeInsets.only(right: 12.px, left: 5.px)) .text(fontSize: 14.px), + css('.personal-label').text( + fontWeight: FontWeight.bold, + fontSize: 12.px, + ), + css('.personal-value').text( + fontSize: 12.px, + ), + css('.personal-row').box(width: 100.percent).flexbox( + direction: FlexDirection.row, + justifyContent: JustifyContent.spaceBetween, + ), + css('.work-row').box(width: 100.percent).flexbox( + direction: FlexDirection.row, + alignItems: AlignItems.center, + justifyContent: JustifyContent.spaceBetween, + ), ]; } diff --git a/lib/utils/assets.dart b/lib/utils/assets.dart index 661a1365..cbb52efa 100644 --- a/lib/utils/assets.dart +++ b/lib/utils/assets.dart @@ -15,4 +15,12 @@ abstract class StaticAssets { static const String mobileImage = '/images/photos/mobile.png'; /// Project Images + /// + /// + + /// Work Images + static const String cui = '/images/work/cui.png'; + static const String dsc = '/images/work/dsc.png'; + static const String flutterisl = '/images/work/flutterIsl.png'; + static const String st = '/images/work/st.png'; } From ba9d6c53822976a04461b000ec58c639e5f823fa Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Tue, 17 Sep 2024 06:33:10 +0500 Subject: [PATCH 06/27] tablet resp --- lib/sections/about_me.dart | 44 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/lib/sections/about_me.dart b/lib/sections/about_me.dart index 5d7c86b2..11a379f4 100644 --- a/lib/sections/about_me.dart +++ b/lib/sections/about_me.dart @@ -221,6 +221,7 @@ class AboutMeSection extends StatelessComponent { direction: FlexDirection.row, alignItems: AlignItems.center, justifyContent: JustifyContent.start, + wrap: FlexWrap.wrap, ) .box( margin: EdgeInsets.only(top: 15.px), @@ -244,5 +245,48 @@ class AboutMeSection extends StatelessComponent { alignItems: AlignItems.center, justifyContent: JustifyContent.spaceBetween, ), + + /// MEDIA QUERIES + /// For smaller screens + css.media(MediaQuery.screen(maxWidth: 1350.px), [ + css('.profile-picture').box( + maxHeight: 100.percent, + margin: EdgeInsets.symmetric(horizontal: 50.px), + ), + css('.about-details').box(width: 45.vw), + ]), + + css.media(MediaQuery.screen(maxWidth: 1100.px), [ + css('.profile-picture').box( + maxHeight: 80.percent, + width: 400.px, + margin: EdgeInsets.symmetric(horizontal: 30.px), + ), + css('.about-details').box(width: 45.vw), + ]), + + css.media(MediaQuery.screen(maxWidth: 900.px), [ + css('.about-me-section').box( + padding: EdgeInsets.only(top: 3.vh, right: 0.vw), + ), + css('.section-body').flexbox( + direction: FlexDirection.column, + alignItems: AlignItems.center, + justifyContent: JustifyContent.start, + ), + css('.profile-picture') + .background( + image: ImageStyle.url( + StaticAssets.mobileImage, + ), + size: BackgroundSize.cover, + ) + .box( + width: 250.px, + height: 250.px, + ), + css('.about-details') + .box(width: 80.percent, margin: EdgeInsets.only(top: 40.px)), + ]), ]; } From d8bed5f9ee7bf982bcb4314608e9de5f7fc82c8a Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Tue, 17 Sep 2024 06:34:44 +0500 Subject: [PATCH 07/27] ID clickable --- lib/components/nav_bar.dart | 2 +- lib/sections/about_me.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/components/nav_bar.dart b/lib/components/nav_bar.dart index 81497d43..ac4ba7a6 100644 --- a/lib/components/nav_bar.dart +++ b/lib/components/nav_bar.dart @@ -22,7 +22,7 @@ class NavBar extends StatelessComponent { ], ), a( - href: '#', + href: '#about', classes: 'navbar-label', [ text('ABOUT'), diff --git a/lib/sections/about_me.dart b/lib/sections/about_me.dart index 11a379f4..cc447128 100644 --- a/lib/sections/about_me.dart +++ b/lib/sections/about_me.dart @@ -44,7 +44,7 @@ class AboutMeSection extends StatelessComponent { ]; yield section(classes: 'about-me-section', [ - span(classes: 'title', [ + span(classes: 'title', id: 'about', [ text('About Me'), ]), span(classes: 'subtitle', [ From b83c4f7dfb6df34906465ea8fe193e59ab8b0eab Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Tue, 17 Sep 2024 13:24:00 +0500 Subject: [PATCH 08/27] services section completed --- lib/components/nav_bar.dart | 1 + lib/components/service_card.dart | 56 +++++++++++++++++++++++ lib/constants/theme.dart | 1 + lib/jaspr_options.dart | 25 ++++++---- lib/pages/home.dart | 2 + lib/sections/about_me.dart | 1 - lib/sections/services.dart | 78 ++++++++++++++++++++++++++++++++ lib/utils/assets.dart | 11 +++-- 8 files changed, 161 insertions(+), 14 deletions(-) create mode 100644 lib/components/service_card.dart create mode 100644 lib/sections/services.dart diff --git a/lib/components/nav_bar.dart b/lib/components/nav_bar.dart index ac4ba7a6..77f3248d 100644 --- a/lib/components/nav_bar.dart +++ b/lib/components/nav_bar.dart @@ -2,6 +2,7 @@ import 'package:devfolio/components/app_button.dart'; import 'package:devfolio/constants/theme.dart'; import 'package:jaspr/jaspr.dart'; +@client class NavBar extends StatelessComponent { const NavBar({super.key}); diff --git a/lib/components/service_card.dart b/lib/components/service_card.dart new file mode 100644 index 00000000..77800dc1 --- /dev/null +++ b/lib/components/service_card.dart @@ -0,0 +1,56 @@ +import 'package:devfolio/constants/theme.dart'; +import 'package:jaspr/jaspr.dart'; + +class ServiceCard extends StatelessComponent { + final String icon; + final String label; + const ServiceCard({ + super.key, + required this.icon, + required this.label, + }); + + @override + Iterable build(BuildContext context) sync* { + yield div(classes: 'service-card', [ + img(src: icon, height: 80), + span(classes: 'service-title', [ + text(label), + ]), + ]); + } + + @css + static final List styles = [ + css('.service-card') + .flexbox( + direction: FlexDirection.column, + alignItems: AlignItems.center, + justifyContent: JustifyContent.center, + ) + .box( + padding: EdgeInsets.all(15.px), + height: 200.px, + width: 250.px, + radius: BorderRadius.circular(12.px), + margin: EdgeInsets.only(top: 15.px), + ) + .background( + color: themeGray, + ), + css('.service-title') + .text( + fontSize: 14.px, + ) + .box(margin: EdgeInsets.only(top: 10.px)), + css('.service-card:hover').box( + shadow: BoxShadow( + color: primaryColor, + offsetX: 0.px, + offsetY: 0.px, + blur: 8.px, + spread: 2.px, + ), + ), + ]; +} diff --git a/lib/constants/theme.dart b/lib/constants/theme.dart index 0912ec5f..d943c250 100644 --- a/lib/constants/theme.dart +++ b/lib/constants/theme.dart @@ -3,3 +3,4 @@ import 'package:jaspr/jaspr.dart'; // As your css styles are defined using just Dart, you can simply // use global variables or methods for common things like colors. const primaryColor = Color.hex('#C0392B'); +const themeGray = Color.hex('#212121'); diff --git a/lib/jaspr_options.dart b/lib/jaspr_options.dart index 969ea4fb..0bacd278 100644 --- a/lib/jaspr_options.dart +++ b/lib/jaspr_options.dart @@ -4,10 +4,12 @@ import 'package:jaspr/jaspr.dart'; import 'package:devfolio/components/app_button.dart' as prefix0; import 'package:devfolio/components/nav_bar.dart' as prefix1; -import 'package:devfolio/pages/home.dart' as prefix2; -import 'package:devfolio/sections/about_me.dart' as prefix3; -import 'package:devfolio/sections/basic_info.dart' as prefix4; -import 'package:devfolio/app.dart' as prefix5; +import 'package:devfolio/components/service_card.dart' as prefix2; +import 'package:devfolio/pages/home.dart' as prefix3; +import 'package:devfolio/sections/about_me.dart' as prefix4; +import 'package:devfolio/sections/basic_info.dart' as prefix5; +import 'package:devfolio/sections/services.dart' as prefix6; +import 'package:devfolio/app.dart' as prefix7; /// Default [JasprOptions] for use with your jaspr project. /// @@ -27,17 +29,20 @@ import 'package:devfolio/app.dart' as prefix5; /// ``` final defaultJasprOptions = JasprOptions( clients: { - prefix5.App: ClientTarget('app'), + prefix7.App: ClientTarget('app'), prefix0.AppButton: ClientTarget('components/app_button', params: _prefix0AppButton), - prefix3.AboutMeSection: ClientTarget('sections/about_me'), + prefix1.NavBar: ClientTarget('components/nav_bar'), + prefix4.AboutMeSection: ClientTarget('sections/about_me'), }, styles: () => [ ...prefix0.AppButton.styles, ...prefix1.NavBar.styles, - ...prefix2.Home.styles, - ...prefix3.AboutMeSection.styles, - ...prefix4.BasicInfoSection.styles, - ...prefix5.AppState.styles, + ...prefix2.ServiceCard.styles, + ...prefix3.Home.styles, + ...prefix4.AboutMeSection.styles, + ...prefix5.BasicInfoSection.styles, + ...prefix6.ServicesSection.styles, + ...prefix7.AppState.styles, ], ); diff --git a/lib/pages/home.dart b/lib/pages/home.dart index bdae9de7..bd085461 100644 --- a/lib/pages/home.dart +++ b/lib/pages/home.dart @@ -1,6 +1,7 @@ import 'package:devfolio/components/nav_bar.dart'; import 'package:devfolio/sections/about_me.dart'; import 'package:devfolio/sections/basic_info.dart'; +import 'package:devfolio/sections/services.dart'; import 'package:jaspr/jaspr.dart'; class Home extends StatelessComponent { @@ -12,6 +13,7 @@ class Home extends StatelessComponent { NavBar(), BasicInfoSection(), AboutMeSection(), + ServicesSection(), ]); } diff --git a/lib/sections/about_me.dart b/lib/sections/about_me.dart index cc447128..690708bc 100644 --- a/lib/sections/about_me.dart +++ b/lib/sections/about_me.dart @@ -159,7 +159,6 @@ class AboutMeSection extends StatelessComponent { ) .box( padding: EdgeInsets.only(top: 5.vh, right: 5.vw), - height: 100.vh, ), css('.title').text( fontFamily: FontFamily('Montserrat'), diff --git a/lib/sections/services.dart b/lib/sections/services.dart new file mode 100644 index 00000000..8cb788ca --- /dev/null +++ b/lib/sections/services.dart @@ -0,0 +1,78 @@ +import 'package:devfolio/components/service_card.dart'; +import 'package:devfolio/utils/assets.dart'; +import 'package:jaspr/jaspr.dart'; + +class ServicesSection extends StatelessComponent { + const ServicesSection({super.key}); + + @override + Iterable build(BuildContext context) sync* { + final List> services = [ + { + 'icon': StaticAssets.app, + 'title': 'Mobile Development', + }, + { + 'icon': StaticAssets.ui, + 'title': 'UI/UX Design', + }, + { + 'icon': StaticAssets.rapid, + 'title': 'Rapid Prototyping', + }, + { + 'icon': StaticAssets.blog, + 'title': 'Technical Writing', + }, + { + 'icon': StaticAssets.open, + 'title': 'Open Source - GitHub', + }, + ]; + + yield section(classes: 'services-section', [ + span(classes: 'title', [ + text('What I can do?'), + ]), + span(classes: 'subtitle', [ + text("I may not be perfect but surely I'm of some use :)"), + ]), + div(classes: 'section-body', [ + for (final service in services) + ServiceCard( + icon: service['icon'], + label: service['title'], + ), + ]) + ]); + } + + @css + static final List styles = [ + css('.services-section') + .flexbox( + direction: FlexDirection.column, + alignItems: AlignItems.center, + justifyContent: JustifyContent.start, + ) + .box( + padding: EdgeInsets.only(top: 5.vh, right: 5.vw), + ), + css('.title').text( + fontFamily: FontFamily('Montserrat'), + fontWeight: FontWeight.w100, + fontSize: 40.px, + ), + css('.section-body') + .flexbox( + direction: FlexDirection.row, + alignItems: AlignItems.center, + justifyContent: JustifyContent.spaceEvenly, + wrap: FlexWrap.wrap, + ) + .box( + margin: EdgeInsets.only(top: 50.px), + width: 100.percent, + ), + ]; +} diff --git a/lib/utils/assets.dart b/lib/utils/assets.dart index cbb52efa..0158f5a8 100644 --- a/lib/utils/assets.dart +++ b/lib/utils/assets.dart @@ -14,9 +14,14 @@ abstract class StaticAssets { static const String coloredImage = '/images/photos/colored.png'; static const String mobileImage = '/images/photos/mobile.png'; - /// Project Images - /// - /// + /// Services Icons + static const String app = '/images/services/app.png'; + static const String blog = '/images/services/blog.png'; + static const String fiverr = '/images/services/fiverr.png'; + static const String openb = '/images/services/open_b.png'; + static const String open = '/images/services/open.png'; + static const String rapid = '/images/services/rapid.png'; + static const String ui = '/images/services/ui.png'; /// Work Images static const String cui = '/images/work/cui.png'; From 26844e49b237aaa87d8f1ea0f313dfa6a09058d4 Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Tue, 17 Sep 2024 16:27:35 +0500 Subject: [PATCH 09/27] fa library added --- lib/main.dart | 7 +++++++ lib/pages/home.dart | 1 + lib/sections/about_me.dart | 5 +++-- lib/sections/basic_info.dart | 4 +++- lib/sections/services.dart | 3 +-- web/icons/play-solid.svg | 1 - 6 files changed, 15 insertions(+), 6 deletions(-) delete mode 100644 web/icons/play-solid.svg diff --git a/lib/main.dart b/lib/main.dart index 743f50a5..364dfca0 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -24,6 +24,13 @@ void main() { // with the provided parameters and components. runApp(Document( title: 'Hamza', + head: [ + link( + href: + 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css', + rel: 'stylesheet', + ), + ], styles: [ // Special import rule to include to another css file. css.import('https://fonts.googleapis.com/css?family=Montserrat'), diff --git a/lib/pages/home.dart b/lib/pages/home.dart index bd085461..1aeb8bea 100644 --- a/lib/pages/home.dart +++ b/lib/pages/home.dart @@ -22,6 +22,7 @@ class Home extends StatelessComponent { css('.home-body') .box( width: 100.vw, + padding: EdgeInsets.symmetric(horizontal: 50.px), ) .background( color: Colors.black, diff --git a/lib/sections/about_me.dart b/lib/sections/about_me.dart index 690708bc..921cd139 100644 --- a/lib/sections/about_me.dart +++ b/lib/sections/about_me.dart @@ -82,7 +82,7 @@ class AboutMeSection extends StatelessComponent { div(classes: 'tech-stack', [ for (final t in tech) span([ - img(src: StaticAssets.playIcon, height: 10), + i(classes: 'fa-solid fa-play play-icon', []), span(classes: 'tech-item', [ text(t), ]), @@ -158,8 +158,9 @@ class AboutMeSection extends StatelessComponent { justifyContent: JustifyContent.start, ) .box( - padding: EdgeInsets.only(top: 5.vh, right: 5.vw), + padding: EdgeInsets.only(top: 5.vh), ), + css('.play-icon').text(color: primaryColor), css('.title').text( fontFamily: FontFamily('Montserrat'), fontWeight: FontWeight.w100, diff --git a/lib/sections/basic_info.dart b/lib/sections/basic_info.dart index fe34e816..8037d084 100644 --- a/lib/sections/basic_info.dart +++ b/lib/sections/basic_info.dart @@ -1,3 +1,4 @@ +import 'package:devfolio/constants/theme.dart'; import 'package:devfolio/utils/assets.dart'; import 'package:jaspr/jaspr.dart'; @@ -21,7 +22,7 @@ class BasicInfoSection extends StatelessComponent { h1(classes: 'first-name', [text('Muhammad')]), h1(classes: 'last-name', [text('Hamza')]), span(classes: 'subtitle', [ - img(classes: 'play-icon', src: StaticAssets.playIcon, height: 20), + i(classes: 'fa-solid fa-play play-icon', []), span(classes: 'dynamic-subtitles', [ text('Flutter Enthusiast'), ]) @@ -72,6 +73,7 @@ class BasicInfoSection extends StatelessComponent { image: ImageStyle.url(StaticAssets.bwImage), size: BackgroundSize.cover, ), + css('.play-icon').text(color: primaryColor), css('.subtitle') .flexbox(direction: FlexDirection.row, alignItems: AlignItems.center), css('.dynamic-subtitles') diff --git a/lib/sections/services.dart b/lib/sections/services.dart index 8cb788ca..3ab1c7a0 100644 --- a/lib/sections/services.dart +++ b/lib/sections/services.dart @@ -56,7 +56,7 @@ class ServicesSection extends StatelessComponent { justifyContent: JustifyContent.start, ) .box( - padding: EdgeInsets.only(top: 5.vh, right: 5.vw), + padding: EdgeInsets.symmetric(vertical: 5.vh), ), css('.title').text( fontFamily: FontFamily('Montserrat'), @@ -72,7 +72,6 @@ class ServicesSection extends StatelessComponent { ) .box( margin: EdgeInsets.only(top: 50.px), - width: 100.percent, ), ]; } diff --git a/web/icons/play-solid.svg b/web/icons/play-solid.svg deleted file mode 100644 index 36054df9..00000000 --- a/web/icons/play-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file From a1e6599f25bd1be7310e0258a04d1d6e0f27645c Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Tue, 17 Sep 2024 16:42:41 +0500 Subject: [PATCH 10/27] spaces adjustments --- lib/pages/home.dart | 1 - lib/sections/about_me.dart | 7 +++--- lib/sections/basic_info.dart | 49 ++++++++++++++++++++++++++++++++++-- lib/sections/services.dart | 1 + 4 files changed, 52 insertions(+), 6 deletions(-) diff --git a/lib/pages/home.dart b/lib/pages/home.dart index 1aeb8bea..bd085461 100644 --- a/lib/pages/home.dart +++ b/lib/pages/home.dart @@ -22,7 +22,6 @@ class Home extends StatelessComponent { css('.home-body') .box( width: 100.vw, - padding: EdgeInsets.symmetric(horizontal: 50.px), ) .background( color: Colors.black, diff --git a/lib/sections/about_me.dart b/lib/sections/about_me.dart index 921cd139..12783e3c 100644 --- a/lib/sections/about_me.dart +++ b/lib/sections/about_me.dart @@ -159,6 +159,7 @@ class AboutMeSection extends StatelessComponent { ) .box( padding: EdgeInsets.only(top: 5.vh), + width: 100.percent, ), css('.play-icon').text(color: primaryColor), css('.title').text( @@ -169,12 +170,12 @@ class AboutMeSection extends StatelessComponent { css('.section-body') .flexbox( direction: FlexDirection.row, - alignItems: AlignItems.center, - justifyContent: JustifyContent.center, + // alignItems: AlignItems.center, + // justifyContent: JustifyContent.center, ) .box( margin: EdgeInsets.only(top: 50.px), - width: 100.percent, + // width: 100.percent, ), css('.profile-picture') .background( diff --git a/lib/sections/basic_info.dart b/lib/sections/basic_info.dart index 8037d084..4107f2d3 100644 --- a/lib/sections/basic_info.dart +++ b/lib/sections/basic_info.dart @@ -7,6 +7,33 @@ class BasicInfoSection extends StatelessComponent { @override Iterable build(BuildContext context) sync* { + final List> socials = [ + { + 'icon': 'fa-brands fa-square-facebook', + 'url': 'https://www.facebook.com/mhmzdev', + }, + { + 'icon': 'fa-brands fa-linkedin', + 'url': 'https://www.linkedin.com/in/mhmzdev/', + }, + { + 'icon': 'fa-brands fa-github', + 'url': 'https://github.com/mhmzdev', + }, + { + 'icon': 'fa-brands fa-x-twitter', + 'url': 'https://twitter.com/mhmzdev', + }, + { + 'icon': 'fa-brands fa-instagram', + 'url': 'https://www.instagram.com/mhmzdev/', + }, + { + 'icon': 'fa-brands fa-medium', + 'url': 'https://mhmzdev.medium.com', + }, + ]; + yield section(classes: 'info-section', [ div(classes: 'info', [ div(classes: 'welcome', [ @@ -27,7 +54,15 @@ class BasicInfoSection extends StatelessComponent { text('Flutter Enthusiast'), ]) ]), - div(classes: 'socials', []), + div(classes: 'socials', [ + for (final social in socials) + a( + classes: 'social-icon', + href: social['url'], + target: Target.blank, + [i(classes: social['icon'], [])], + ), + ]), ]), div(classes: 'main-image', []), ]); @@ -86,8 +121,18 @@ class BasicInfoSection extends StatelessComponent { .flexbox( direction: FlexDirection.row, alignItems: AlignItems.center, - justifyContent: JustifyContent.spaceBetween, ), + css('.social-icon') + .text( + fontSize: 25.px, + color: Colors.white, + ) + .box( + padding: EdgeInsets.only(right: 25.px), + ), + css('.social-icon:hover').text( + color: primaryColor, + ), /// MEDIA QUERY 1100px css.media(MediaQuery.screen(maxWidth: 1100.px), [ diff --git a/lib/sections/services.dart b/lib/sections/services.dart index 3ab1c7a0..c0103de4 100644 --- a/lib/sections/services.dart +++ b/lib/sections/services.dart @@ -72,6 +72,7 @@ class ServicesSection extends StatelessComponent { ) .box( margin: EdgeInsets.only(top: 50.px), + width: 100.percent, ), ]; } From 2577bf4b9e2668a44d928465014133eb0bcad35e Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Tue, 17 Sep 2024 16:50:23 +0500 Subject: [PATCH 11/27] transitions added --- lib/components/app_button.dart | 11 ++++++++--- lib/components/nav_bar.dart | 12 ++++++++---- lib/components/service_card.dart | 1 + lib/sections/basic_info.dart | 10 +++++++--- lib/sections/services.dart | 2 +- 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/lib/components/app_button.dart b/lib/components/app_button.dart index 69a38df9..407a78a4 100644 --- a/lib/components/app_button.dart +++ b/lib/components/app_button.dart @@ -44,9 +44,14 @@ class AppButton extends StatelessComponent { .background( color: Colors.transparent, ), - css('.app-button:hover').background( - color: primaryColor, - ), + css('.app-button:hover') + .background( + color: primaryColor, + ) + .box( + transition: Transition('background-color', duration: 500), + cursor: Cursor.pointer, + ), css('.label').text(fontSize: 12.px), ]; } diff --git a/lib/components/nav_bar.dart b/lib/components/nav_bar.dart index 77f3248d..eb3fd945 100644 --- a/lib/components/nav_bar.dart +++ b/lib/components/nav_bar.dart @@ -30,7 +30,7 @@ class NavBar extends StatelessComponent { ], ), a( - href: '#', + href: '#services', classes: 'navbar-label', [ text('SERVICES'), @@ -83,9 +83,13 @@ class NavBar extends StatelessComponent { justifyContent: JustifyContent.spaceBetween, alignItems: AlignItems.center, ), - css('.navbar-label:hover').text( - color: primaryColor, - ), + css('.navbar-label:hover') + .text( + color: primaryColor, + ) + .box( + transition: Transition('color', duration: 500), + ), css('.labels').flexbox( direction: FlexDirection.row, justifyContent: JustifyContent.end, diff --git a/lib/components/service_card.dart b/lib/components/service_card.dart index 77800dc1..ce81a838 100644 --- a/lib/components/service_card.dart +++ b/lib/components/service_card.dart @@ -51,6 +51,7 @@ class ServiceCard extends StatelessComponent { blur: 8.px, spread: 2.px, ), + transition: Transition('box-shadow', duration: 500), ), ]; } diff --git a/lib/sections/basic_info.dart b/lib/sections/basic_info.dart index 4107f2d3..2843b515 100644 --- a/lib/sections/basic_info.dart +++ b/lib/sections/basic_info.dart @@ -130,9 +130,13 @@ class BasicInfoSection extends StatelessComponent { .box( padding: EdgeInsets.only(right: 25.px), ), - css('.social-icon:hover').text( - color: primaryColor, - ), + css('.social-icon:hover') + .text( + color: primaryColor, + ) + .box( + transition: Transition('color', duration: 300), + ), /// MEDIA QUERY 1100px css.media(MediaQuery.screen(maxWidth: 1100.px), [ diff --git a/lib/sections/services.dart b/lib/sections/services.dart index c0103de4..563253a8 100644 --- a/lib/sections/services.dart +++ b/lib/sections/services.dart @@ -37,7 +37,7 @@ class ServicesSection extends StatelessComponent { span(classes: 'subtitle', [ text("I may not be perfect but surely I'm of some use :)"), ]), - div(classes: 'section-body', [ + div(classes: 'section-body', id: 'services', [ for (final service in services) ServiceCard( icon: service['icon'], From a325efc799c700a8e9a86237ea200bde65230f36 Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Tue, 17 Sep 2024 19:40:11 +0500 Subject: [PATCH 12/27] projects section completed --- lib/components/project_card.dart | 96 +++++++++++++++++++++++++++ lib/components/service_card.dart | 1 + lib/jaspr_options.dart | 37 +++++++---- lib/pages/home.dart | 2 + lib/sections/projects.dart | 107 +++++++++++++++++++++++++++++++ lib/utils/assets.dart | 16 ++++- 6 files changed, 242 insertions(+), 17 deletions(-) create mode 100644 lib/components/project_card.dart create mode 100644 lib/sections/projects.dart diff --git a/lib/components/project_card.dart b/lib/components/project_card.dart new file mode 100644 index 00000000..bcbe5f0b --- /dev/null +++ b/lib/components/project_card.dart @@ -0,0 +1,96 @@ +import 'package:devfolio/constants/theme.dart'; +import 'package:jaspr/jaspr.dart'; + +@client +class ProjectCard extends StatelessComponent { + final String title; + final String description; + final String icon; + final String banner; + final String url; + const ProjectCard({ + super.key, + required this.title, + required this.description, + required this.icon, + required this.banner, + required this.url, + }); + + @override + Iterable build(BuildContext context) sync* { + yield a(href: url, target: Target.blank, classes: 'banner-card', [ + div( + classes: 'banner-image', + styles: Styles.combine([ + Styles.background( + image: ImageStyle.url(banner), + size: BackgroundSize.cover, + ), + ]), + []), + img(src: icon, height: 40), + span(classes: 'service-title', [ + text(title), + ]), + span(classes: 'service-description', [ + text(description), + ]), + ]); + } + + @css + static final List styles = [ + css('.banner-card') + .flexbox( + direction: FlexDirection.column, + alignItems: AlignItems.center, + justifyContent: JustifyContent.center, + ) + .box( + height: 200.px, + width: 350.px, + radius: BorderRadius.circular(12.px), + margin: EdgeInsets.only(top: 25.px, left: 15.px, right: 15.px), + ) + .background( + color: themeGray, + ) + .text( + decoration: TextDecoration.none, + ), + css('.banner-card:hover').box( + shadow: BoxShadow( + color: primaryColor, + offsetX: 0.px, + offsetY: 0.px, + blur: 8.px, + spread: 2.px, + ), + transition: Transition('box-shadow', duration: 500), + cursor: Cursor.pointer, + ), + css('.banner-image').box( + height: 200.px, + width: 350.px, + ), + css('.service-description') + .text( + fontSize: 12.px, + align: TextAlign.center, + ) + .box( + padding: EdgeInsets.symmetric(horizontal: 10.px), + margin: EdgeInsets.only(top: 10.px), + ), + css('.banner-image').box( + opacity: 1.0, + radius: BorderRadius.circular(12.px), + position: Position.absolute(), + ), + css('.banner-image:hover').box( + opacity: 0, + transition: Transition('opacity', duration: 500), + ), + ]; +} diff --git a/lib/components/service_card.dart b/lib/components/service_card.dart index ce81a838..579e2246 100644 --- a/lib/components/service_card.dart +++ b/lib/components/service_card.dart @@ -1,6 +1,7 @@ import 'package:devfolio/constants/theme.dart'; import 'package:jaspr/jaspr.dart'; +@client class ServiceCard extends StatelessComponent { final String icon; final String label; diff --git a/lib/jaspr_options.dart b/lib/jaspr_options.dart index 0bacd278..c1fc130d 100644 --- a/lib/jaspr_options.dart +++ b/lib/jaspr_options.dart @@ -4,12 +4,14 @@ import 'package:jaspr/jaspr.dart'; import 'package:devfolio/components/app_button.dart' as prefix0; import 'package:devfolio/components/nav_bar.dart' as prefix1; -import 'package:devfolio/components/service_card.dart' as prefix2; -import 'package:devfolio/pages/home.dart' as prefix3; -import 'package:devfolio/sections/about_me.dart' as prefix4; -import 'package:devfolio/sections/basic_info.dart' as prefix5; -import 'package:devfolio/sections/services.dart' as prefix6; -import 'package:devfolio/app.dart' as prefix7; +import 'package:devfolio/components/project_card.dart' as prefix2; +import 'package:devfolio/components/service_card.dart' as prefix3; +import 'package:devfolio/pages/home.dart' as prefix4; +import 'package:devfolio/sections/about_me.dart' as prefix5; +import 'package:devfolio/sections/basic_info.dart' as prefix6; +import 'package:devfolio/sections/projects.dart' as prefix7; +import 'package:devfolio/sections/services.dart' as prefix8; +import 'package:devfolio/app.dart' as prefix9; /// Default [JasprOptions] for use with your jaspr project. /// @@ -29,22 +31,29 @@ import 'package:devfolio/app.dart' as prefix7; /// ``` final defaultJasprOptions = JasprOptions( clients: { - prefix7.App: ClientTarget('app'), + prefix9.App: ClientTarget('app'), prefix0.AppButton: ClientTarget('components/app_button', params: _prefix0AppButton), prefix1.NavBar: ClientTarget('components/nav_bar'), - prefix4.AboutMeSection: ClientTarget('sections/about_me'), + prefix2.ProjectCard: ClientTarget('components/project_card', params: _prefix2ProjectCard), + prefix3.ServiceCard: ClientTarget('components/service_card', params: _prefix3ServiceCard), + prefix5.AboutMeSection: ClientTarget('sections/about_me'), }, styles: () => [ ...prefix0.AppButton.styles, ...prefix1.NavBar.styles, - ...prefix2.ServiceCard.styles, - ...prefix3.Home.styles, - ...prefix4.AboutMeSection.styles, - ...prefix5.BasicInfoSection.styles, - ...prefix6.ServicesSection.styles, - ...prefix7.AppState.styles, + ...prefix2.ProjectCard.styles, + ...prefix3.ServiceCard.styles, + ...prefix4.Home.styles, + ...prefix5.AboutMeSection.styles, + ...prefix6.BasicInfoSection.styles, + ...prefix7.ProjectsSections.styles, + ...prefix8.ServicesSection.styles, + ...prefix9.AppState.styles, ], ); Map _prefix0AppButton(prefix0.AppButton c) => {'label': c.label, 'onPressed': c.onPressed, 'width': c.width, 'height': c.height}; +Map _prefix2ProjectCard(prefix2.ProjectCard c) => + {'title': c.title, 'description': c.description, 'icon': c.icon, 'banner': c.banner, 'url': c.url}; +Map _prefix3ServiceCard(prefix3.ServiceCard c) => {'icon': c.icon, 'label': c.label}; diff --git a/lib/pages/home.dart b/lib/pages/home.dart index bd085461..609b050c 100644 --- a/lib/pages/home.dart +++ b/lib/pages/home.dart @@ -1,6 +1,7 @@ import 'package:devfolio/components/nav_bar.dart'; import 'package:devfolio/sections/about_me.dart'; import 'package:devfolio/sections/basic_info.dart'; +import 'package:devfolio/sections/projects.dart'; import 'package:devfolio/sections/services.dart'; import 'package:jaspr/jaspr.dart'; @@ -14,6 +15,7 @@ class Home extends StatelessComponent { BasicInfoSection(), AboutMeSection(), ServicesSection(), + ProjectsSections(), ]); } diff --git a/lib/sections/projects.dart b/lib/sections/projects.dart new file mode 100644 index 00000000..d1610cb4 --- /dev/null +++ b/lib/sections/projects.dart @@ -0,0 +1,107 @@ +import 'package:devfolio/components/app_button.dart'; +import 'package:devfolio/components/project_card.dart'; +import 'package:devfolio/utils/assets.dart'; +import 'package:jaspr/jaspr.dart'; + +class ProjectsSections extends StatelessComponent { + const ProjectsSections({super.key}); + + @override + Iterable build(BuildContext context) sync* { + final List> projects = [ + { + 'banner': StaticAssets.snackbar, + 'icon': StaticAssets.flutter, + 'title': 'Awesome Snackbar', + 'description': + "A very unique dart package to uplift the snackbar experience in flutter. Available at pub.dev now!", + 'link': 'https://pub.dev/packages/awesome_snackbar', + }, + { + 'banner': StaticAssets.quranB, + 'icon': StaticAssets.quran, + 'title': 'Quran App', + 'description': + "Application of Holy book of Muslims, Al-Qur'an. Developed using Flutter. Powered with live RestAPI given in README.md", + 'link': 'https://github.com/mhmzdev/the-holy-quran-app', + }, + { + 'banner': StaticAssets.medkitB, + 'icon': StaticAssets.medkit, + 'title': 'MedKit', + 'description': + "A Phramacy app developed using Flutter powered with Firebase as database with Doctor and Patient panels.", + 'link': "https://github.com/mhmzdev/MedKit-Pharmacy-App-Using-Flutter", + }, + { + 'banner': StaticAssets.hereiamB, + 'icon': StaticAssets.hereiam, + 'title': 'Here I Am', + 'description': + "Here I am is an Alert app that Sends alert SMS holding your location (Address and Google Maps) to your loved ones.", + 'link': "https://github.com/mhmzdev/Here-I-Am-Alert-App", + }, + { + 'banner': StaticAssets.covidB, + 'icon': StaticAssets.covid, + 'title': 'Covid-19 Tracker', + 'description': + "A live trakcer for COVID19 stats across the Globe and my Home country Pakistan. It uses APIs so the data is live.", + 'link': "https://github.com/mhmzdev/Covid19-Tracker-App", + }, + ]; + + yield section(classes: 'projects-section', [ + span(classes: 'title', [ + text('Portfolio'), + ]), + span(classes: 'subtitle', [ + text("Here are few samples of my work :)"), + ]), + div(classes: 'section-body-projects', id: 'projects', [ + for (final project in projects) + ProjectCard( + banner: project['banner'], + icon: project['icon'], + title: project['title'], + description: project['description'], + url: project['link'], + ), + ]), + div(styles: Styles.box(height: 45.px), []), + AppButton( + label: 'See more', + onPressed: () {}, + ), + ]); + } + + @css + static final List styles = [ + css('.projects-section') + .flexbox( + direction: FlexDirection.column, + alignItems: AlignItems.center, + justifyContent: JustifyContent.start, + ) + .box( + padding: EdgeInsets.symmetric(vertical: 5.vh, horizontal: 10.vw), + ), + css('.title').text( + fontFamily: FontFamily('Montserrat'), + fontWeight: FontWeight.w100, + fontSize: 40.px, + ), + css('.section-body-projects') + .flexbox( + direction: FlexDirection.row, + alignItems: AlignItems.center, + justifyContent: JustifyContent.center, + wrap: FlexWrap.wrap, + ) + .box( + margin: EdgeInsets.only(top: 50.px), + width: 100.percent, + ), + ]; +} diff --git a/lib/utils/assets.dart b/lib/utils/assets.dart index 0158f5a8..c93dab4b 100644 --- a/lib/utils/assets.dart +++ b/lib/utils/assets.dart @@ -1,9 +1,6 @@ abstract class StaticAssets { static const String waveGif = '/images/hi.gif'; - /// Icons (SVG) - static const String playIcon = '/icons/play-solid.svg'; - /// Profile Images /// Three variants are required /// 1. Black and white @@ -28,4 +25,17 @@ abstract class StaticAssets { static const String dsc = '/images/work/dsc.png'; static const String flutterisl = '/images/work/flutterIsl.png'; static const String st = '/images/work/st.png'; + + /// Projects Images + static const String covid = '/images/projects/covid.png'; + static const String covidB = '/images/projects/covidB.png'; + static const String devfolio = '/images/projects/devfolio.png'; + static const String snackbar = '/images/projects/snackbar.png'; + static const String quran = '/images/projects/quran.png'; + static const String quranB = '/images/projects/quranB.png'; + static const String medkit = '/images/projects/medkit.png'; + static const String medkitB = '/images/projects/medkitB.png'; + static const String hereiam = '/images/projects/hereiam.png'; + static const String hereiamB = '/images/projects/hereiamB.png'; + static const String flutter = '/images/projects/flutter.png'; } From ac47623a42f3e7a3da4d3bdbefbfa08c8bea66a9 Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Tue, 17 Sep 2024 19:41:34 +0500 Subject: [PATCH 13/27] refactored colors --- lib/components/app_button.dart | 4 ++-- lib/components/nav_bar.dart | 2 +- lib/components/project_card.dart | 4 ++-- lib/components/service_card.dart | 4 ++-- lib/constants/theme.dart | 4 ++-- lib/sections/about_me.dart | 6 +++--- lib/sections/basic_info.dart | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/lib/components/app_button.dart b/lib/components/app_button.dart index 407a78a4..803e7129 100644 --- a/lib/components/app_button.dart +++ b/lib/components/app_button.dart @@ -37,7 +37,7 @@ class AppButton extends StatelessComponent { padding: EdgeInsets.all(10.px), radius: BorderRadius.circular(6.px), border: Border.all(BorderSide( - color: primaryColor, + color: themePrimaryColor, width: 1.px, )), ) @@ -46,7 +46,7 @@ class AppButton extends StatelessComponent { ), css('.app-button:hover') .background( - color: primaryColor, + color: themePrimaryColor, ) .box( transition: Transition('background-color', duration: 500), diff --git a/lib/components/nav_bar.dart b/lib/components/nav_bar.dart index eb3fd945..0d1e8ff1 100644 --- a/lib/components/nav_bar.dart +++ b/lib/components/nav_bar.dart @@ -85,7 +85,7 @@ class NavBar extends StatelessComponent { ), css('.navbar-label:hover') .text( - color: primaryColor, + color: themePrimaryColor, ) .box( transition: Transition('color', duration: 500), diff --git a/lib/components/project_card.dart b/lib/components/project_card.dart index bcbe5f0b..a308ed73 100644 --- a/lib/components/project_card.dart +++ b/lib/components/project_card.dart @@ -54,14 +54,14 @@ class ProjectCard extends StatelessComponent { margin: EdgeInsets.only(top: 25.px, left: 15.px, right: 15.px), ) .background( - color: themeGray, + color: themeDarkGreyColor, ) .text( decoration: TextDecoration.none, ), css('.banner-card:hover').box( shadow: BoxShadow( - color: primaryColor, + color: themePrimaryColor, offsetX: 0.px, offsetY: 0.px, blur: 8.px, diff --git a/lib/components/service_card.dart b/lib/components/service_card.dart index 579e2246..838166e7 100644 --- a/lib/components/service_card.dart +++ b/lib/components/service_card.dart @@ -37,7 +37,7 @@ class ServiceCard extends StatelessComponent { margin: EdgeInsets.only(top: 15.px), ) .background( - color: themeGray, + color: themeDarkGreyColor, ), css('.service-title') .text( @@ -46,7 +46,7 @@ class ServiceCard extends StatelessComponent { .box(margin: EdgeInsets.only(top: 10.px)), css('.service-card:hover').box( shadow: BoxShadow( - color: primaryColor, + color: themePrimaryColor, offsetX: 0.px, offsetY: 0.px, blur: 8.px, diff --git a/lib/constants/theme.dart b/lib/constants/theme.dart index d943c250..5329dcf0 100644 --- a/lib/constants/theme.dart +++ b/lib/constants/theme.dart @@ -2,5 +2,5 @@ import 'package:jaspr/jaspr.dart'; // As your css styles are defined using just Dart, you can simply // use global variables or methods for common things like colors. -const primaryColor = Color.hex('#C0392B'); -const themeGray = Color.hex('#212121'); +const themePrimaryColor = Color.hex('#C0392B'); +const themeDarkGreyColor = Color.hex('#212121'); diff --git a/lib/sections/about_me.dart b/lib/sections/about_me.dart index 12783e3c..b544fe9f 100644 --- a/lib/sections/about_me.dart +++ b/lib/sections/about_me.dart @@ -55,7 +55,7 @@ class AboutMeSection extends StatelessComponent { div(classes: 'about-details', [ span( classes: 'intro-label', - styles: Styles.text(color: primaryColor), + styles: Styles.text(color: themePrimaryColor), [ text('Who am I?'), ]), @@ -75,7 +75,7 @@ class AboutMeSection extends StatelessComponent { div(classes: 'divider', []), span( classes: 'tech-label', - styles: Styles.text(color: primaryColor), + styles: Styles.text(color: themePrimaryColor), [ text('Technologies I have worked with:'), ]), @@ -161,7 +161,7 @@ class AboutMeSection extends StatelessComponent { padding: EdgeInsets.only(top: 5.vh), width: 100.percent, ), - css('.play-icon').text(color: primaryColor), + css('.play-icon').text(color: themePrimaryColor), css('.title').text( fontFamily: FontFamily('Montserrat'), fontWeight: FontWeight.w100, diff --git a/lib/sections/basic_info.dart b/lib/sections/basic_info.dart index 2843b515..58a2d77b 100644 --- a/lib/sections/basic_info.dart +++ b/lib/sections/basic_info.dart @@ -108,7 +108,7 @@ class BasicInfoSection extends StatelessComponent { image: ImageStyle.url(StaticAssets.bwImage), size: BackgroundSize.cover, ), - css('.play-icon').text(color: primaryColor), + css('.play-icon').text(color: themePrimaryColor), css('.subtitle') .flexbox(direction: FlexDirection.row, alignItems: AlignItems.center), css('.dynamic-subtitles') @@ -132,7 +132,7 @@ class BasicInfoSection extends StatelessComponent { ), css('.social-icon:hover') .text( - color: primaryColor, + color: themePrimaryColor, ) .box( transition: Transition('color', duration: 300), From 1faffb241693b8b173126c1483888de90ef9bd80 Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Tue, 17 Sep 2024 20:01:00 +0500 Subject: [PATCH 14/27] contact section done --- lib/components/contact.dart | 75 +++++++++++++++++++++++++++++++++++++ lib/components/nav_bar.dart | 4 +- lib/jaspr_options.dart | 57 +++++++++++++++------------- lib/pages/home.dart | 2 + lib/sections/contact.dart | 72 +++++++++++++++++++++++++++++++++++ lib/sections/projects.dart | 5 --- lib/sections/services.dart | 5 --- 7 files changed, 183 insertions(+), 37 deletions(-) create mode 100644 lib/components/contact.dart create mode 100644 lib/sections/contact.dart diff --git a/lib/components/contact.dart b/lib/components/contact.dart new file mode 100644 index 00000000..e84f4718 --- /dev/null +++ b/lib/components/contact.dart @@ -0,0 +1,75 @@ +import 'package:devfolio/constants/theme.dart'; +import 'package:jaspr/jaspr.dart'; + +@client +class ContactCard extends StatelessComponent { + final String icon; + final String title; + final String description; + final String action; + const ContactCard({ + required this.icon, + required this.title, + required this.description, + required this.action, + }); + + @override + Iterable build(BuildContext context) sync* { + yield a(href: action, target: Target.blank, classes: 'contact-card', [ + i(classes: '$icon c-icon', []), + span(classes: 'c-title', [ + text(title), + ]), + span(classes: 'c-description', [ + text(description), + ]), + ]); + } + + @css + static final List styles = [ + css('.contact-card') + .text(decoration: TextDecoration.none) + .flexbox( + direction: FlexDirection.column, + alignItems: AlignItems.center, + justifyContent: JustifyContent.center, + ) + .box( + width: 300.px, + height: 150.px, + padding: EdgeInsets.all(15.px), + radius: BorderRadius.circular(12.px), + margin: EdgeInsets.only(top: 25.px, left: 15.px, right: 15.px), + ) + .background( + color: themeDarkGreyColor, + ), + css('.contact-card:hover').box( + shadow: BoxShadow( + color: themePrimaryColor, + offsetX: 0.px, + offsetY: 0.px, + blur: 8.px, + spread: 2.px, + ), + transition: Transition('box-shadow', duration: 500), + ), + css('.c-icon').text( + fontSize: 50.px, + color: themePrimaryColor, + ), + css('.c-title') + .text( + fontSize: 15.px, + color: themePrimaryColor, + ) + .box( + margin: EdgeInsets.symmetric(vertical: 15.px), + ), + css('.c-description').text( + fontSize: 12.px, + ), + ]; +} diff --git a/lib/components/nav_bar.dart b/lib/components/nav_bar.dart index 0d1e8ff1..71083af9 100644 --- a/lib/components/nav_bar.dart +++ b/lib/components/nav_bar.dart @@ -37,14 +37,14 @@ class NavBar extends StatelessComponent { ], ), a( - href: '#', + href: '#projects', classes: 'navbar-label', [ text('PROJECTS'), ], ), a( - href: '#', + href: '#contact', classes: 'navbar-label', [ text('CONTACT'), diff --git a/lib/jaspr_options.dart b/lib/jaspr_options.dart index c1fc130d..ca2ea9c1 100644 --- a/lib/jaspr_options.dart +++ b/lib/jaspr_options.dart @@ -3,15 +3,17 @@ import 'package:jaspr/jaspr.dart'; import 'package:devfolio/components/app_button.dart' as prefix0; -import 'package:devfolio/components/nav_bar.dart' as prefix1; -import 'package:devfolio/components/project_card.dart' as prefix2; -import 'package:devfolio/components/service_card.dart' as prefix3; -import 'package:devfolio/pages/home.dart' as prefix4; -import 'package:devfolio/sections/about_me.dart' as prefix5; -import 'package:devfolio/sections/basic_info.dart' as prefix6; -import 'package:devfolio/sections/projects.dart' as prefix7; -import 'package:devfolio/sections/services.dart' as prefix8; -import 'package:devfolio/app.dart' as prefix9; +import 'package:devfolio/components/contact.dart' as prefix1; +import 'package:devfolio/components/nav_bar.dart' as prefix2; +import 'package:devfolio/components/project_card.dart' as prefix3; +import 'package:devfolio/components/service_card.dart' as prefix4; +import 'package:devfolio/pages/home.dart' as prefix5; +import 'package:devfolio/sections/about_me.dart' as prefix6; +import 'package:devfolio/sections/basic_info.dart' as prefix7; +import 'package:devfolio/sections/contact.dart' as prefix8; +import 'package:devfolio/sections/projects.dart' as prefix9; +import 'package:devfolio/sections/services.dart' as prefix10; +import 'package:devfolio/app.dart' as prefix11; /// Default [JasprOptions] for use with your jaspr project. /// @@ -31,29 +33,34 @@ import 'package:devfolio/app.dart' as prefix9; /// ``` final defaultJasprOptions = JasprOptions( clients: { - prefix9.App: ClientTarget('app'), + prefix11.App: ClientTarget('app'), prefix0.AppButton: ClientTarget('components/app_button', params: _prefix0AppButton), - prefix1.NavBar: ClientTarget('components/nav_bar'), - prefix2.ProjectCard: ClientTarget('components/project_card', params: _prefix2ProjectCard), - prefix3.ServiceCard: ClientTarget('components/service_card', params: _prefix3ServiceCard), - prefix5.AboutMeSection: ClientTarget('sections/about_me'), + prefix1.ContactCard: ClientTarget('components/contact', params: _prefix1ContactCard), + prefix2.NavBar: ClientTarget('components/nav_bar'), + prefix3.ProjectCard: ClientTarget('components/project_card', params: _prefix3ProjectCard), + prefix4.ServiceCard: ClientTarget('components/service_card', params: _prefix4ServiceCard), + prefix6.AboutMeSection: ClientTarget('sections/about_me'), }, styles: () => [ ...prefix0.AppButton.styles, - ...prefix1.NavBar.styles, - ...prefix2.ProjectCard.styles, - ...prefix3.ServiceCard.styles, - ...prefix4.Home.styles, - ...prefix5.AboutMeSection.styles, - ...prefix6.BasicInfoSection.styles, - ...prefix7.ProjectsSections.styles, - ...prefix8.ServicesSection.styles, - ...prefix9.AppState.styles, + ...prefix1.ContactCard.styles, + ...prefix2.NavBar.styles, + ...prefix3.ProjectCard.styles, + ...prefix4.ServiceCard.styles, + ...prefix5.Home.styles, + ...prefix6.AboutMeSection.styles, + ...prefix7.BasicInfoSection.styles, + ...prefix8.ContactSection.styles, + ...prefix9.ProjectsSections.styles, + ...prefix10.ServicesSection.styles, + ...prefix11.AppState.styles, ], ); Map _prefix0AppButton(prefix0.AppButton c) => {'label': c.label, 'onPressed': c.onPressed, 'width': c.width, 'height': c.height}; -Map _prefix2ProjectCard(prefix2.ProjectCard c) => +Map _prefix1ContactCard(prefix1.ContactCard c) => + {'icon': c.icon, 'title': c.title, 'description': c.description, 'action': c.action}; +Map _prefix3ProjectCard(prefix3.ProjectCard c) => {'title': c.title, 'description': c.description, 'icon': c.icon, 'banner': c.banner, 'url': c.url}; -Map _prefix3ServiceCard(prefix3.ServiceCard c) => {'icon': c.icon, 'label': c.label}; +Map _prefix4ServiceCard(prefix4.ServiceCard c) => {'icon': c.icon, 'label': c.label}; diff --git a/lib/pages/home.dart b/lib/pages/home.dart index 609b050c..1426e71c 100644 --- a/lib/pages/home.dart +++ b/lib/pages/home.dart @@ -1,6 +1,7 @@ import 'package:devfolio/components/nav_bar.dart'; import 'package:devfolio/sections/about_me.dart'; import 'package:devfolio/sections/basic_info.dart'; +import 'package:devfolio/sections/contact.dart'; import 'package:devfolio/sections/projects.dart'; import 'package:devfolio/sections/services.dart'; import 'package:jaspr/jaspr.dart'; @@ -16,6 +17,7 @@ class Home extends StatelessComponent { AboutMeSection(), ServicesSection(), ProjectsSections(), + ContactSection(), ]); } diff --git a/lib/sections/contact.dart b/lib/sections/contact.dart new file mode 100644 index 00000000..3ee60294 --- /dev/null +++ b/lib/sections/contact.dart @@ -0,0 +1,72 @@ +import 'package:devfolio/components/contact.dart'; +import 'package:jaspr/jaspr.dart'; + +class ContactSection extends StatelessComponent { + const ContactSection({super.key}); + + @override + Iterable build(BuildContext context) sync* { + final List> contactInfo = [ + { + 'icon': 'fa-duotone fa-solid fa-house', + 'title': 'Location', + 'description': 'Islamabad, PK', + 'action': 'https://maps.app.goo.gl/ek2SSNh26K1i4HNF6', + }, + { + 'icon': 'fa-duotone fa-solid fa-phone', + 'title': 'Phone', + 'description': '+92 346 0159889', + 'action': 'https://wa.me/923460159889', + }, + { + 'icon': 'fa-duotone fa-solid fa-envelope', + 'title': 'Email', + 'description': 'hamza.6.shakeel@gmail.com', + 'action': 'mailto:hamza.6.shakeel@gmail.com', + }, + ]; + + yield section(classes: 'contact-section', [ + span(classes: 'title', [ + text('Get in Touch'), + ]), + span(classes: 'subtitle', [ + text("Let's build something together :)"), + ]), + div(classes: 'contact-body', id: 'contact', [ + for (final contact in contactInfo) + ContactCard( + icon: contact['icon'], + title: contact['title'], + description: contact['description'], + action: contact['action'], + ), + ]) + ]); + } + + @css + static final List styles = [ + css('.contact-section') + .flexbox( + direction: FlexDirection.column, + alignItems: AlignItems.center, + justifyContent: JustifyContent.start, + ) + .box( + padding: EdgeInsets.symmetric(vertical: 5.vh, horizontal: 10.vw), + ), + css('.contact-body') + .flexbox( + direction: FlexDirection.row, + alignItems: AlignItems.center, + justifyContent: JustifyContent.center, + wrap: FlexWrap.wrap, + ) + .box( + margin: EdgeInsets.only(top: 50.px), + width: 100.percent, + ), + ]; +} diff --git a/lib/sections/projects.dart b/lib/sections/projects.dart index d1610cb4..17e6394b 100644 --- a/lib/sections/projects.dart +++ b/lib/sections/projects.dart @@ -87,11 +87,6 @@ class ProjectsSections extends StatelessComponent { .box( padding: EdgeInsets.symmetric(vertical: 5.vh, horizontal: 10.vw), ), - css('.title').text( - fontFamily: FontFamily('Montserrat'), - fontWeight: FontWeight.w100, - fontSize: 40.px, - ), css('.section-body-projects') .flexbox( direction: FlexDirection.row, diff --git a/lib/sections/services.dart b/lib/sections/services.dart index 563253a8..2078a24b 100644 --- a/lib/sections/services.dart +++ b/lib/sections/services.dart @@ -58,11 +58,6 @@ class ServicesSection extends StatelessComponent { .box( padding: EdgeInsets.symmetric(vertical: 5.vh), ), - css('.title').text( - fontFamily: FontFamily('Montserrat'), - fontWeight: FontWeight.w100, - fontSize: 40.px, - ), css('.section-body') .flexbox( direction: FlexDirection.row, From 0a6d39424eb5174e8236ca45df1e38349bb79fd4 Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Tue, 17 Sep 2024 20:11:09 +0500 Subject: [PATCH 15/27] footer --- lib/components/footer.dart | 39 ++++++++++++++++++++++++++ lib/jaspr_options.dart | 57 ++++++++++++++++++++------------------ lib/pages/home.dart | 2 ++ 3 files changed, 71 insertions(+), 27 deletions(-) create mode 100644 lib/components/footer.dart diff --git a/lib/components/footer.dart b/lib/components/footer.dart new file mode 100644 index 00000000..80670681 --- /dev/null +++ b/lib/components/footer.dart @@ -0,0 +1,39 @@ +import 'package:jaspr/jaspr.dart'; + +@client +class Footer extends StatelessComponent { + const Footer({super.key}); + + @override + Iterable build(BuildContext context) sync* { + yield footer(classes: 'foot', [ + span([text('Developed in 💙 with')]), + a( + href: 'https://docs.page/schultek/jaspr', + classes: 'tech-name', + target: Target.blank, + styles: Styles.text(color: Color.hex('#1977d1')), + [text('Jaspr')]), + ]); + } + + @css + static final List styles = [ + css('.foot') + .flexbox( + direction: FlexDirection.row, + alignItems: AlignItems.center, + justifyContent: JustifyContent.center, + ) + .box( + padding: EdgeInsets.symmetric(vertical: 2.vh), + ) + .text(fontSize: 12.px), + css('.tech-name') + .text( + fontSize: 12.px, + decoration: TextDecoration.none, + ) + .box(margin: EdgeInsets.only(left: 5.px)), + ]; +} diff --git a/lib/jaspr_options.dart b/lib/jaspr_options.dart index ca2ea9c1..36d5b54d 100644 --- a/lib/jaspr_options.dart +++ b/lib/jaspr_options.dart @@ -4,16 +4,17 @@ import 'package:jaspr/jaspr.dart'; import 'package:devfolio/components/app_button.dart' as prefix0; import 'package:devfolio/components/contact.dart' as prefix1; -import 'package:devfolio/components/nav_bar.dart' as prefix2; -import 'package:devfolio/components/project_card.dart' as prefix3; -import 'package:devfolio/components/service_card.dart' as prefix4; -import 'package:devfolio/pages/home.dart' as prefix5; -import 'package:devfolio/sections/about_me.dart' as prefix6; -import 'package:devfolio/sections/basic_info.dart' as prefix7; -import 'package:devfolio/sections/contact.dart' as prefix8; -import 'package:devfolio/sections/projects.dart' as prefix9; -import 'package:devfolio/sections/services.dart' as prefix10; -import 'package:devfolio/app.dart' as prefix11; +import 'package:devfolio/components/footer.dart' as prefix2; +import 'package:devfolio/components/nav_bar.dart' as prefix3; +import 'package:devfolio/components/project_card.dart' as prefix4; +import 'package:devfolio/components/service_card.dart' as prefix5; +import 'package:devfolio/pages/home.dart' as prefix6; +import 'package:devfolio/sections/about_me.dart' as prefix7; +import 'package:devfolio/sections/basic_info.dart' as prefix8; +import 'package:devfolio/sections/contact.dart' as prefix9; +import 'package:devfolio/sections/projects.dart' as prefix10; +import 'package:devfolio/sections/services.dart' as prefix11; +import 'package:devfolio/app.dart' as prefix12; /// Default [JasprOptions] for use with your jaspr project. /// @@ -33,27 +34,29 @@ import 'package:devfolio/app.dart' as prefix11; /// ``` final defaultJasprOptions = JasprOptions( clients: { - prefix11.App: ClientTarget('app'), + prefix12.App: ClientTarget('app'), prefix0.AppButton: ClientTarget('components/app_button', params: _prefix0AppButton), prefix1.ContactCard: ClientTarget('components/contact', params: _prefix1ContactCard), - prefix2.NavBar: ClientTarget('components/nav_bar'), - prefix3.ProjectCard: ClientTarget('components/project_card', params: _prefix3ProjectCard), - prefix4.ServiceCard: ClientTarget('components/service_card', params: _prefix4ServiceCard), - prefix6.AboutMeSection: ClientTarget('sections/about_me'), + prefix2.Footer: ClientTarget('components/footer'), + prefix3.NavBar: ClientTarget('components/nav_bar'), + prefix4.ProjectCard: ClientTarget('components/project_card', params: _prefix4ProjectCard), + prefix5.ServiceCard: ClientTarget('components/service_card', params: _prefix5ServiceCard), + prefix7.AboutMeSection: ClientTarget('sections/about_me'), }, styles: () => [ ...prefix0.AppButton.styles, ...prefix1.ContactCard.styles, - ...prefix2.NavBar.styles, - ...prefix3.ProjectCard.styles, - ...prefix4.ServiceCard.styles, - ...prefix5.Home.styles, - ...prefix6.AboutMeSection.styles, - ...prefix7.BasicInfoSection.styles, - ...prefix8.ContactSection.styles, - ...prefix9.ProjectsSections.styles, - ...prefix10.ServicesSection.styles, - ...prefix11.AppState.styles, + ...prefix2.Footer.styles, + ...prefix3.NavBar.styles, + ...prefix4.ProjectCard.styles, + ...prefix5.ServiceCard.styles, + ...prefix6.Home.styles, + ...prefix7.AboutMeSection.styles, + ...prefix8.BasicInfoSection.styles, + ...prefix9.ContactSection.styles, + ...prefix10.ProjectsSections.styles, + ...prefix11.ServicesSection.styles, + ...prefix12.AppState.styles, ], ); @@ -61,6 +64,6 @@ Map _prefix0AppButton(prefix0.AppButton c) => {'label': c.label, 'onPressed': c.onPressed, 'width': c.width, 'height': c.height}; Map _prefix1ContactCard(prefix1.ContactCard c) => {'icon': c.icon, 'title': c.title, 'description': c.description, 'action': c.action}; -Map _prefix3ProjectCard(prefix3.ProjectCard c) => +Map _prefix4ProjectCard(prefix4.ProjectCard c) => {'title': c.title, 'description': c.description, 'icon': c.icon, 'banner': c.banner, 'url': c.url}; -Map _prefix4ServiceCard(prefix4.ServiceCard c) => {'icon': c.icon, 'label': c.label}; +Map _prefix5ServiceCard(prefix5.ServiceCard c) => {'icon': c.icon, 'label': c.label}; diff --git a/lib/pages/home.dart b/lib/pages/home.dart index 1426e71c..22f9e9d7 100644 --- a/lib/pages/home.dart +++ b/lib/pages/home.dart @@ -1,3 +1,4 @@ +import 'package:devfolio/components/footer.dart'; import 'package:devfolio/components/nav_bar.dart'; import 'package:devfolio/sections/about_me.dart'; import 'package:devfolio/sections/basic_info.dart'; @@ -18,6 +19,7 @@ class Home extends StatelessComponent { ServicesSection(), ProjectsSections(), ContactSection(), + Footer(), ]); } From 165c06c78eb6770fa5874448507c6c472a496e56 Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Tue, 17 Sep 2024 20:19:27 +0500 Subject: [PATCH 16/27] minor adjustment overall --- lib/components/app_button.dart | 19 ++++++++++++++----- lib/components/nav_bar.dart | 3 ++- lib/components/service_card.dart | 6 ++++-- lib/jaspr_options.dart | 2 +- lib/sections/about_me.dart | 3 ++- lib/sections/projects.dart | 2 +- lib/sections/services.dart | 2 +- 7 files changed, 25 insertions(+), 12 deletions(-) diff --git a/lib/components/app_button.dart b/lib/components/app_button.dart index 803e7129..7e44824e 100644 --- a/lib/components/app_button.dart +++ b/lib/components/app_button.dart @@ -4,7 +4,7 @@ import 'package:jaspr/jaspr.dart'; @client class AppButton extends StatelessComponent { final String label; - final void Function() onPressed; + final String href; final Unit? width; final Unit? height; @@ -12,17 +12,18 @@ class AppButton extends StatelessComponent { const AppButton({ super.key, required this.label, - required this.onPressed, + required this.href, this.width, this.height, }); @override Iterable build(BuildContext context) sync* { - yield button( + yield a( classes: 'app-button', + target: Target.blank, styles: Styles.box(width: width, height: height), - onClick: onPressed, + href: href, [ span(classes: 'label', [text(label)]) ], @@ -33,7 +34,7 @@ class AppButton extends StatelessComponent { static final List styles = [ css('.app-button') .box( - width: 130.px, + width: 100.px, padding: EdgeInsets.all(10.px), radius: BorderRadius.circular(6.px), border: Border.all(BorderSide( @@ -41,6 +42,14 @@ class AppButton extends StatelessComponent { width: 1.px, )), ) + .flexbox( + direction: FlexDirection.row, + alignItems: AlignItems.center, + justifyContent: JustifyContent.center, + ) + .text( + decoration: TextDecoration.none, + ) .background( color: Colors.transparent, ), diff --git a/lib/components/nav_bar.dart b/lib/components/nav_bar.dart index 71083af9..0f49358e 100644 --- a/lib/components/nav_bar.dart +++ b/lib/components/nav_bar.dart @@ -52,7 +52,8 @@ class NavBar extends StatelessComponent { ), AppButton( label: 'RESUME', - onPressed: () {}, + href: + "https://drive.google.com/drive/u/0/folders/1E6NxJlmnW2lTYTszcbODdpXiPFYe_kBM", ), ]), ]); diff --git a/lib/components/service_card.dart b/lib/components/service_card.dart index 838166e7..9522007c 100644 --- a/lib/components/service_card.dart +++ b/lib/components/service_card.dart @@ -34,7 +34,7 @@ class ServiceCard extends StatelessComponent { height: 200.px, width: 250.px, radius: BorderRadius.circular(12.px), - margin: EdgeInsets.only(top: 15.px), + margin: EdgeInsets.only(top: 25.px, left: 15.px, right: 15.px), ) .background( color: themeDarkGreyColor, @@ -43,7 +43,9 @@ class ServiceCard extends StatelessComponent { .text( fontSize: 14.px, ) - .box(margin: EdgeInsets.only(top: 10.px)), + .box( + margin: EdgeInsets.only(top: 10.px), + ), css('.service-card:hover').box( shadow: BoxShadow( color: themePrimaryColor, diff --git a/lib/jaspr_options.dart b/lib/jaspr_options.dart index 36d5b54d..343ac69a 100644 --- a/lib/jaspr_options.dart +++ b/lib/jaspr_options.dart @@ -61,7 +61,7 @@ final defaultJasprOptions = JasprOptions( ); Map _prefix0AppButton(prefix0.AppButton c) => - {'label': c.label, 'onPressed': c.onPressed, 'width': c.width, 'height': c.height}; + {'label': c.label, 'href': c.href, 'width': c.width, 'height': c.height}; Map _prefix1ContactCard(prefix1.ContactCard c) => {'icon': c.icon, 'title': c.title, 'description': c.description, 'action': c.action}; Map _prefix4ProjectCard(prefix4.ProjectCard c) => diff --git a/lib/sections/about_me.dart b/lib/sections/about_me.dart index b544fe9f..1779ef73 100644 --- a/lib/sections/about_me.dart +++ b/lib/sections/about_me.dart @@ -130,7 +130,8 @@ class AboutMeSection extends StatelessComponent { div(classes: 'work-row', [ AppButton( label: 'RESUME', - onPressed: () {}, + href: + "https://drive.google.com/drive/u/0/folders/1E6NxJlmnW2lTYTszcbODdpXiPFYe_kBM", ), div(classes: 'divider', styles: Styles.box(width: 80.px), []), for (final work in works) diff --git a/lib/sections/projects.dart b/lib/sections/projects.dart index 17e6394b..3ce2a6a5 100644 --- a/lib/sections/projects.dart +++ b/lib/sections/projects.dart @@ -71,7 +71,7 @@ class ProjectsSections extends StatelessComponent { div(styles: Styles.box(height: 45.px), []), AppButton( label: 'See more', - onPressed: () {}, + href: 'https://github.com/mhmzdev', ), ]); } diff --git a/lib/sections/services.dart b/lib/sections/services.dart index 2078a24b..921b4425 100644 --- a/lib/sections/services.dart +++ b/lib/sections/services.dart @@ -62,7 +62,7 @@ class ServicesSection extends StatelessComponent { .flexbox( direction: FlexDirection.row, alignItems: AlignItems.center, - justifyContent: JustifyContent.spaceEvenly, + justifyContent: JustifyContent.center, wrap: FlexWrap.wrap, ) .box( From 120a9f0c3303e8c863499215305320dbdf67a98d Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Tue, 17 Sep 2024 21:05:59 +0500 Subject: [PATCH 17/27] basic test added for button --- pubspec.yaml | 1 + test/components/app_button_test.dart | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 test/components/app_button_test.dart diff --git a/pubspec.yaml b/pubspec.yaml index faa3d9b2..e555c9b4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -14,6 +14,7 @@ dev_dependencies: jaspr_builder: ^0.15.1 jaspr_lints: ^0.1.1 lints: ^3.0.0 + jaspr_test: ^0.15.1 jaspr: mode: static diff --git a/test/components/app_button_test.dart b/test/components/app_button_test.dart new file mode 100644 index 00000000..52c6a717 --- /dev/null +++ b/test/components/app_button_test.dart @@ -0,0 +1,21 @@ +import 'package:devfolio/components/app_button.dart'; +import 'package:jaspr_test/jaspr_test.dart'; + +void main() { + testComponents( + 'app button default test', + (ComponentTester tester) async { + const label = 'Open google'; + await tester.pumpComponent( + AppButton( + label: label, + href: 'https://google.com', + ), + ); + + expect(find.tag('a'), findsOneComponent); + expect(find.tag('span'), findsOneComponent); + expect(find.text(label), findsOneComponent); + }, + ); +} From 3749d2caf958f4c1ef38f6dac7612524a507de2d Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Thu, 19 Sep 2024 16:44:55 +0500 Subject: [PATCH 18/27] updated base --- lib/main.dart | 9 +++++++++ lib/sections/about_me.dart | 14 +++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 364dfca0..49ba9296 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -4,6 +4,7 @@ // To run code on the client, use the @client annotation. // Server-specific jaspr import. +import 'package:devfolio/constants/theme.dart'; import 'package:jaspr/server.dart'; // Imports the [App] component. @@ -24,6 +25,7 @@ void main() { // with the provided parameters and components. runApp(Document( title: 'Hamza', + base: '/devfolio-jaspr/', head: [ link( href: @@ -47,6 +49,13 @@ void main() { family: 'Agustina', url: '/fonts/agustina/agustina.otf', ), + css('::-webkit-scrollbar').box(width: 8.px, height: 0.px), + css('::-webkit-scrollbar-track').box( + radius: BorderRadius.circular(8.px), + ), + css('::-webkit-scrollbar-thumb') + .box(radius: BorderRadius.circular(8.px)) + .background(color: themePrimaryColor), ], body: App(), )); diff --git a/lib/sections/about_me.dart b/lib/sections/about_me.dart index 1779ef73..f1081af1 100644 --- a/lib/sections/about_me.dart +++ b/lib/sections/about_me.dart @@ -50,7 +50,7 @@ class AboutMeSection extends StatelessComponent { span(classes: 'subtitle', [ text('Get to know me :)'), ]), - div(classes: 'section-body', [ + div(classes: 'about-section-body', [ div(classes: 'profile-picture', []), div(classes: 'about-details', [ span( @@ -159,7 +159,7 @@ class AboutMeSection extends StatelessComponent { justifyContent: JustifyContent.start, ) .box( - padding: EdgeInsets.only(top: 5.vh), + // padding: EdgeInsets.only(top: 5.vh), width: 100.percent, ), css('.play-icon').text(color: themePrimaryColor), @@ -168,15 +168,15 @@ class AboutMeSection extends StatelessComponent { fontWeight: FontWeight.w100, fontSize: 40.px, ), - css('.section-body') + css('.about-section-body') .flexbox( direction: FlexDirection.row, - // alignItems: AlignItems.center, - // justifyContent: JustifyContent.center, + alignItems: AlignItems.center, + justifyContent: JustifyContent.center, ) .box( margin: EdgeInsets.only(top: 50.px), - // width: 100.percent, + width: 100.percent, ), css('.profile-picture') .background( @@ -271,7 +271,7 @@ class AboutMeSection extends StatelessComponent { css('.about-me-section').box( padding: EdgeInsets.only(top: 3.vh, right: 0.vw), ), - css('.section-body').flexbox( + css('.about-section-body').flexbox( direction: FlexDirection.column, alignItems: AlignItems.center, justifyContent: JustifyContent.start, From d5919b776fa8851c0e4ca404e1972ba765f60cc8 Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Mon, 30 Sep 2024 08:11:46 +0500 Subject: [PATCH 19/27] readme updated --- README.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 9a89ebf6..cceac52f 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Get started now by cloning :)

## 🧑‍💻 Devfolio -Is a multi-platform portfolio for developers available for mobile, windows and web. Includes the following sections: +Its a portfolio website for developers developed using `Jaspr`. Includes the following sections: - Home - About - Services @@ -27,11 +27,13 @@ Is a multi-platform portfolio for developers available for mobile, windows and w ## 🔗 Useful links -🌐 Web App: https://mhmzdev.github.io/devfolio +🌐 Web App: https://mhmzdev.github.io/devfolio-jaspr -📱 Android App: https://play.google.com/store/apps/details?id=com.hmz.folio +💻 Old Flutter App: https://github.com/m-hamzashakeel/devfolio -📙 Article: https://mhamzadev.medium.com/folio-responsive-portfolio-using-flutter-2-0-86ae3e6cce4f +[DEPRECATED]📱 Android App: https://play.google.com/store/apps/details?id=com.hmz.folio + +[DEPRECATED]📙 Article: https://mhamzadev.medium.com/folio-responsive-portfolio-using-flutter-2-0-86ae3e6cce4f ## 🔑 License @@ -45,8 +47,8 @@ Is a multi-platform portfolio for developers available for mobile, windows and w You can also follow my GitHub Profile to stay updated about my latest projects: -[![GitHub Follow](https://img.shields.io/badge/Connect-Hamza-blue.svg?logo=Github&longCache=true&style=social&label=Follow)](https://github.com/m-hamzashakeel) +[![GitHub Follow](https://img.shields.io/badge/Connect-Hamza-blue.svg?logo=Github&longCache=true&style=social&label=Follow)](https://github.com/mhmzdev) If you liked the repo then kindly support it by giving it a star ⭐! -Copyright (c) 2020 MUHAMMAD HAMZA +Copyright (c) 2024 MUHAMMAD HAMZA \ No newline at end of file From f5073f09351bd824f2c214609d496efa26ba53b3 Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Mon, 30 Sep 2024 08:13:00 +0500 Subject: [PATCH 20/27] link added --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cceac52f..bc39f403 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -## Let's recreate your Portfolio +## Portfolio Website - Devfolio Get started now by cloning :) @@ -18,7 +18,7 @@ Get started now by cloning :) ## 🧑‍💻 Devfolio -Its a portfolio website for developers developed using `Jaspr`. Includes the following sections: +Its a portfolio website for developers developed using [Jaspr](https://docs.page/schultek/jaspr). Includes the following sections: - Home - About - Services From f4748e5f0503883f214c0dbe4d634fda6eb32cf4 Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Mon, 30 Sep 2024 08:14:34 +0500 Subject: [PATCH 21/27] hosting for assets fixed --- lib/main.dart | 6 +++-- lib/utils/assets.dart | 52 +++++++++++++++++++++---------------------- 2 files changed, 30 insertions(+), 28 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 49ba9296..9c9d54d0 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -25,7 +25,9 @@ void main() { // with the provided parameters and components. runApp(Document( title: 'Hamza', - base: '/devfolio-jaspr/', + /// Uncomment this line to deploy on github pages just in case your websit is like https://mhmzdev.github.io/devfolio-jaspr/ + /// If its on the base repo, then you don't need to do this + // base: 'devfolio-jaspr/', head: [ link( href: @@ -47,7 +49,7 @@ void main() { css('h1').text(fontSize: 4.rem).box(margin: EdgeInsets.unset), css.fontFace( family: 'Agustina', - url: '/fonts/agustina/agustina.otf', + url: 'fonts/agustina/agustina.otf', ), css('::-webkit-scrollbar').box(width: 8.px, height: 0.px), css('::-webkit-scrollbar-track').box( diff --git a/lib/utils/assets.dart b/lib/utils/assets.dart index c93dab4b..8f90e839 100644 --- a/lib/utils/assets.dart +++ b/lib/utils/assets.dart @@ -1,5 +1,5 @@ abstract class StaticAssets { - static const String waveGif = '/images/hi.gif'; + static const String waveGif = 'images/hi.gif'; /// Profile Images /// Three variants are required @@ -7,35 +7,35 @@ abstract class StaticAssets { /// 2. Colored image of same size /// 3. Mobile image (Preferred with border and circular avatar) /// - static const String bwImage = '/images/photos/black-white.png'; - static const String coloredImage = '/images/photos/colored.png'; - static const String mobileImage = '/images/photos/mobile.png'; + static const String bwImage = 'images/photos/black-white.png'; + static const String coloredImage = 'images/photos/colored.png'; + static const String mobileImage = 'images/photos/mobile.png'; /// Services Icons - static const String app = '/images/services/app.png'; - static const String blog = '/images/services/blog.png'; - static const String fiverr = '/images/services/fiverr.png'; - static const String openb = '/images/services/open_b.png'; - static const String open = '/images/services/open.png'; - static const String rapid = '/images/services/rapid.png'; - static const String ui = '/images/services/ui.png'; + static const String app = 'images/services/app.png'; + static const String blog = 'images/services/blog.png'; + static const String fiverr = 'images/services/fiverr.png'; + static const String openb = 'images/services/open_b.png'; + static const String open = 'images/services/open.png'; + static const String rapid = 'images/services/rapid.png'; + static const String ui = 'images/services/ui.png'; /// Work Images - static const String cui = '/images/work/cui.png'; - static const String dsc = '/images/work/dsc.png'; - static const String flutterisl = '/images/work/flutterIsl.png'; - static const String st = '/images/work/st.png'; + static const String cui = 'images/work/cui.png'; + static const String dsc = 'images/work/dsc.png'; + static const String flutterisl = 'images/work/flutterIsl.png'; + static const String st = 'images/work/st.png'; /// Projects Images - static const String covid = '/images/projects/covid.png'; - static const String covidB = '/images/projects/covidB.png'; - static const String devfolio = '/images/projects/devfolio.png'; - static const String snackbar = '/images/projects/snackbar.png'; - static const String quran = '/images/projects/quran.png'; - static const String quranB = '/images/projects/quranB.png'; - static const String medkit = '/images/projects/medkit.png'; - static const String medkitB = '/images/projects/medkitB.png'; - static const String hereiam = '/images/projects/hereiam.png'; - static const String hereiamB = '/images/projects/hereiamB.png'; - static const String flutter = '/images/projects/flutter.png'; + static const String covid = 'images/projects/covid.png'; + static const String covidB = 'images/projects/covidB.png'; + static const String devfolio = 'images/projects/devfolio.png'; + static const String snackbar = 'images/projects/snackbar.png'; + static const String quran = 'images/projects/quran.png'; + static const String quranB = 'images/projects/quranB.png'; + static const String medkit = 'images/projects/medkit.png'; + static const String medkitB = 'images/projects/medkitB.png'; + static const String hereiam = 'images/projects/hereiam.png'; + static const String hereiamB = 'images/projects/hereiamB.png'; + static const String flutter = 'images/projects/flutter.png'; } From 59ac27f0695e209ac3fd5c4d9a46c0593801ec55 Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Mon, 30 Sep 2024 08:44:26 +0500 Subject: [PATCH 22/27] loading data from dart.json and dart model for better DX --- build.yaml | 19 ++ data.json | 156 +++++++++++++ lib/models/about.dart | 16 ++ lib/models/about.freezed.dart | 216 ++++++++++++++++++ lib/models/about.g.dart | 22 ++ lib/models/basic.dart | 20 ++ lib/models/basic.freezed.dart | 314 ++++++++++++++++++++++++++ lib/models/basic.g.dart | 31 +++ lib/models/contact.dart | 17 ++ lib/models/contact.freezed.dart | 218 ++++++++++++++++++ lib/models/contact.g.dart | 23 ++ lib/models/data.dart | 24 ++ lib/models/data.freezed.dart | 325 +++++++++++++++++++++++++++ lib/models/data.g.dart | 34 +++ lib/models/project.dart | 18 ++ lib/models/project.freezed.dart | 246 ++++++++++++++++++++ lib/models/project.g.dart | 25 +++ lib/models/service_data.dart | 15 ++ lib/models/service_data.freezed.dart | 182 +++++++++++++++ lib/models/service_data.g.dart | 19 ++ lib/models/social.dart | 14 ++ lib/models/social.freezed.dart | 177 +++++++++++++++ lib/models/social.g.dart | 18 ++ lib/models/work.dart | 15 ++ lib/models/work.freezed.dart | 195 ++++++++++++++++ lib/models/work.g.dart | 20 ++ pubspec.yaml | 5 + 27 files changed, 2384 insertions(+) create mode 100644 build.yaml create mode 100644 data.json create mode 100644 lib/models/about.dart create mode 100644 lib/models/about.freezed.dart create mode 100644 lib/models/about.g.dart create mode 100644 lib/models/basic.dart create mode 100644 lib/models/basic.freezed.dart create mode 100644 lib/models/basic.g.dart create mode 100644 lib/models/contact.dart create mode 100644 lib/models/contact.freezed.dart create mode 100644 lib/models/contact.g.dart create mode 100644 lib/models/data.dart create mode 100644 lib/models/data.freezed.dart create mode 100644 lib/models/data.g.dart create mode 100644 lib/models/project.dart create mode 100644 lib/models/project.freezed.dart create mode 100644 lib/models/project.g.dart create mode 100644 lib/models/service_data.dart create mode 100644 lib/models/service_data.freezed.dart create mode 100644 lib/models/service_data.g.dart create mode 100644 lib/models/social.dart create mode 100644 lib/models/social.freezed.dart create mode 100644 lib/models/social.g.dart create mode 100644 lib/models/work.dart create mode 100644 lib/models/work.freezed.dart create mode 100644 lib/models/work.g.dart diff --git a/build.yaml b/build.yaml new file mode 100644 index 00000000..fb7cef69 --- /dev/null +++ b/build.yaml @@ -0,0 +1,19 @@ +targets: + $default: + builders: + json_serializable: + options: + # The default value for each is listed. + any_map: false + checked: false + constructor: "" + create_factory: true + create_field_map: false + create_per_field_to_json: false + create_to_json: true + disallow_unrecognized_keys: false + explicit_to_json: true + field_rename: none + generic_argument_factories: false + ignore_unannotated: false + include_if_null: true \ No newline at end of file diff --git a/data.json b/data.json new file mode 100644 index 00000000..433431cb --- /dev/null +++ b/data.json @@ -0,0 +1,156 @@ +{ + "basic": { + "firstName": "Muhammad", + "lastName": "Hamza", + "age": 22, + "email": "hamza.6.shakeel@gmail.com", + "phone": "+92 346 0159889", + "address": "Islamabad, PK", + "photos": [ + "images/photos/bw.png", + "images/photos/colored.png", + "images/photos/mobile.png" + ], + "resume": "https://drive.google.com/drive/u/0/folders/1E6NxJlmnW2lTYTszcbODdpXiPFYe_kBM" + }, + "socials": [ + { + "icon": "fa-brands fa-square-facebook", + "url": "https://www.facebook.com/mhmzdev" + }, + { + "icon": "fa-brands fa-linkedin", + "url": "https://www.linkedin.com/in/mhmzdev/" + }, + { + "icon": "fa-brands fa-github", + "url": "https://github.com/mhmzdev" + }, + { + "icon": "fa-brands fa-x-twitter", + "url": "https://twitter.com/mhmzdev" + }, + { + "icon": "fa-brands fa-instagram", + "url": "https://www.instagram.com/mhmzdev/" + }, + { + "icon": "fa-brands fa-medium", + "url": "https://mhmzdev.medium.com" + } + ], + "aboutMe": { + "description": "I'm a fresh graduate with Computer Science as Majors from COMSATS University Islamabad. I have been working with Flutter for the past 2 years and have developed multiple applications for both Android and iOS platforms. I have a keen interest in UI/UX designing and have been working on it for the past 3 years. I have also been writing technical blogs for the past 2 years and have been a part of multiple technical writing communities.", + "tech": [ + "Flutter", + "Dart", + "Firebase", + "Python", + "dart_frog", + "jaspr", + "nodejs", + "express" + ], + "works": [ + { + "image": "images/work/cui.png", + "url": "https://www.comsats.edu.pk/", + "height": 50 + }, + { + "image": "images/work/dsc.png", + "url": "https://developers.google.com/community/dsc", + "height": 30 + }, + { + "image": "images/work/flutterisl.png", + "url": "https://meetup.com/flutter-islamabad", + "height": 60 + }, + { + "image": "images/work/st.png", + "url": "https://www.sastaticket.pk/", + "height": 60 + } + ] + }, + "services": [ + { + "icon": "images/services/mobile.png", + "title": "Mobile Development" + }, + { + "icon": "images/services/ui.png", + "title": "UI/UX Design" + }, + { + "icon": "images/services/rapid.png", + "title": "Rapid Prototyping" + }, + { + "icon": "images/services/blog.png", + "title": "Technical Writing" + }, + { + "icon": "images/services/open.png", + "title": "Open Source - GitHub" + } + ], + "projects": [ + { + "banner": "images/projects/snackbar.png", + "icon": "images/projects/flutter.png", + "title": "Awesome Snackbar", + "description": "A very unique dart package to uplift the snackbar experience in flutter. Available at pub.dev now!", + "link": "https://pub.dev/packages/awesome_snackbar" + }, + { + "banner": "images/projects/quranB.png", + "icon": "images/projects/quran.png", + "title": "Quran App", + "description": "Application of Holy book of Muslims, Al-Qur'an. Developed using Flutter. Powered with live RestAPI given in README.md", + "link": "https://github.com/mhmzdev/the-holy-quran-app" + }, + { + "banner": "images/projects/medkitB.png", + "icon": "images/projects/medkit.png", + "title": "MedKit", + "description": "A Phramacy app developed using Flutter powered with Firebase as database with Doctor and Patient panels.", + "link": "https://github.com/mhmzdev/MedKit-Pharmacy-App-Using-Flutter" + }, + { + "banner": "images/projects/hereiamB.png", + "icon": "images/projects/hereiam.png", + "title": "Here I Am", + "description": "Here I am is an Alert app that Sends alert SMS holding your location (Address and Google Maps) to your loved ones.", + "link": "https://github.com/mhmzdev/Here-I-Am-Alert-App" + }, + { + "banner": "images/projects/covidB.png", + "icon": "images/projects/covid.png", + "title": "Covid-19 Tracker", + "description": "A live trakcer for COVID19 stats across the Globe and my Home country Pakistan. It uses APIs so the data is live.", + "link": "https://github.com/mhmzdev/Covid19-Tracker-App" + } + ], + "contact": [ + { + "icon": "fa-duotone fa-solid fa-house", + "title": "Location", + "description": "Islamabad, PK", + "action": "https://maps.app.goo.gl/ek2SSNh26K1i4HNF6" + }, + { + "icon": "fa-duotone fa-solid fa-phone", + "title": "Phone", + "description": "+92 346 0159889", + "action": "https://wa.me/923460159889" + }, + { + "icon": "fa-duotone fa-solid fa-envelope", + "title": "Email", + "description": "hamza.6.shakeel@gmail.com", + "action": "mailto:hamza.6.shakeel@gmail.com" + } + ] +} \ No newline at end of file diff --git a/lib/models/about.dart b/lib/models/about.dart new file mode 100644 index 00000000..2c6e98a4 --- /dev/null +++ b/lib/models/about.dart @@ -0,0 +1,16 @@ +import 'package:devfolio/models/work.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'about.freezed.dart'; +part 'about.g.dart'; + +@freezed +class About with _$About { + const factory About({ + required String description, + required List tech, + required List works, + }) = _About; + + factory About.fromJson(Map json) => _$AboutFromJson(json); +} diff --git a/lib/models/about.freezed.dart b/lib/models/about.freezed.dart new file mode 100644 index 00000000..3e5f9b48 --- /dev/null +++ b/lib/models/about.freezed.dart @@ -0,0 +1,216 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'about.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); + +About _$AboutFromJson(Map json) { + return _About.fromJson(json); +} + +/// @nodoc +mixin _$About { + String get description => throw _privateConstructorUsedError; + List get tech => throw _privateConstructorUsedError; + List get works => throw _privateConstructorUsedError; + + /// Serializes this About to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of About + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $AboutCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $AboutCopyWith<$Res> { + factory $AboutCopyWith(About value, $Res Function(About) then) = + _$AboutCopyWithImpl<$Res, About>; + @useResult + $Res call({String description, List tech, List works}); +} + +/// @nodoc +class _$AboutCopyWithImpl<$Res, $Val extends About> + implements $AboutCopyWith<$Res> { + _$AboutCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of About + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? description = null, + Object? tech = null, + Object? works = null, + }) { + return _then(_value.copyWith( + description: null == description + ? _value.description + : description // ignore: cast_nullable_to_non_nullable + as String, + tech: null == tech + ? _value.tech + : tech // ignore: cast_nullable_to_non_nullable + as List, + works: null == works + ? _value.works + : works // ignore: cast_nullable_to_non_nullable + as List, + ) as $Val); + } +} + +/// @nodoc +abstract class _$$AboutImplCopyWith<$Res> implements $AboutCopyWith<$Res> { + factory _$$AboutImplCopyWith( + _$AboutImpl value, $Res Function(_$AboutImpl) then) = + __$$AboutImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({String description, List tech, List works}); +} + +/// @nodoc +class __$$AboutImplCopyWithImpl<$Res> + extends _$AboutCopyWithImpl<$Res, _$AboutImpl> + implements _$$AboutImplCopyWith<$Res> { + __$$AboutImplCopyWithImpl( + _$AboutImpl _value, $Res Function(_$AboutImpl) _then) + : super(_value, _then); + + /// Create a copy of About + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? description = null, + Object? tech = null, + Object? works = null, + }) { + return _then(_$AboutImpl( + description: null == description + ? _value.description + : description // ignore: cast_nullable_to_non_nullable + as String, + tech: null == tech + ? _value._tech + : tech // ignore: cast_nullable_to_non_nullable + as List, + works: null == works + ? _value._works + : works // ignore: cast_nullable_to_non_nullable + as List, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$AboutImpl implements _About { + const _$AboutImpl( + {required this.description, + required final List tech, + required final List works}) + : _tech = tech, + _works = works; + + factory _$AboutImpl.fromJson(Map json) => + _$$AboutImplFromJson(json); + + @override + final String description; + final List _tech; + @override + List get tech { + if (_tech is EqualUnmodifiableListView) return _tech; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_tech); + } + + final List _works; + @override + List get works { + if (_works is EqualUnmodifiableListView) return _works; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_works); + } + + @override + String toString() { + return 'About(description: $description, tech: $tech, works: $works)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$AboutImpl && + (identical(other.description, description) || + other.description == description) && + const DeepCollectionEquality().equals(other._tech, _tech) && + const DeepCollectionEquality().equals(other._works, _works)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + description, + const DeepCollectionEquality().hash(_tech), + const DeepCollectionEquality().hash(_works)); + + /// Create a copy of About + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$AboutImplCopyWith<_$AboutImpl> get copyWith => + __$$AboutImplCopyWithImpl<_$AboutImpl>(this, _$identity); + + @override + Map toJson() { + return _$$AboutImplToJson( + this, + ); + } +} + +abstract class _About implements About { + const factory _About( + {required final String description, + required final List tech, + required final List works}) = _$AboutImpl; + + factory _About.fromJson(Map json) = _$AboutImpl.fromJson; + + @override + String get description; + @override + List get tech; + @override + List get works; + + /// Create a copy of About + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$AboutImplCopyWith<_$AboutImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/models/about.g.dart b/lib/models/about.g.dart new file mode 100644 index 00000000..5af466d1 --- /dev/null +++ b/lib/models/about.g.dart @@ -0,0 +1,22 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'about.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$AboutImpl _$$AboutImplFromJson(Map json) => _$AboutImpl( + description: json['description'] as String, + tech: (json['tech'] as List).map((e) => e as String).toList(), + works: (json['works'] as List) + .map((e) => Work.fromJson(e as Map)) + .toList(), + ); + +Map _$$AboutImplToJson(_$AboutImpl instance) => + { + 'description': instance.description, + 'tech': instance.tech, + 'works': instance.works.map((e) => e.toJson()).toList(), + }; diff --git a/lib/models/basic.dart b/lib/models/basic.dart new file mode 100644 index 00000000..a8e1fb43 --- /dev/null +++ b/lib/models/basic.dart @@ -0,0 +1,20 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'basic.freezed.dart'; +part 'basic.g.dart'; + +@freezed +class Basic with _$Basic { + const factory Basic({ + required String firstName, + required String lastName, + required int age, + required String email, + required String phone, + required String address, + required List photos, + required String resume, + }) = _Basic; + + factory Basic.fromJson(Map json) => _$BasicFromJson(json); +} diff --git a/lib/models/basic.freezed.dart b/lib/models/basic.freezed.dart new file mode 100644 index 00000000..54f1f2cc --- /dev/null +++ b/lib/models/basic.freezed.dart @@ -0,0 +1,314 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'basic.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); + +Basic _$BasicFromJson(Map json) { + return _Basic.fromJson(json); +} + +/// @nodoc +mixin _$Basic { + String get firstName => throw _privateConstructorUsedError; + String get lastName => throw _privateConstructorUsedError; + int get age => throw _privateConstructorUsedError; + String get email => throw _privateConstructorUsedError; + String get phone => throw _privateConstructorUsedError; + String get address => throw _privateConstructorUsedError; + List get photos => throw _privateConstructorUsedError; + String get resume => throw _privateConstructorUsedError; + + /// Serializes this Basic to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of Basic + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $BasicCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $BasicCopyWith<$Res> { + factory $BasicCopyWith(Basic value, $Res Function(Basic) then) = + _$BasicCopyWithImpl<$Res, Basic>; + @useResult + $Res call( + {String firstName, + String lastName, + int age, + String email, + String phone, + String address, + List photos, + String resume}); +} + +/// @nodoc +class _$BasicCopyWithImpl<$Res, $Val extends Basic> + implements $BasicCopyWith<$Res> { + _$BasicCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of Basic + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? firstName = null, + Object? lastName = null, + Object? age = null, + Object? email = null, + Object? phone = null, + Object? address = null, + Object? photos = null, + Object? resume = null, + }) { + return _then(_value.copyWith( + firstName: null == firstName + ? _value.firstName + : firstName // ignore: cast_nullable_to_non_nullable + as String, + lastName: null == lastName + ? _value.lastName + : lastName // ignore: cast_nullable_to_non_nullable + as String, + age: null == age + ? _value.age + : age // ignore: cast_nullable_to_non_nullable + as int, + email: null == email + ? _value.email + : email // ignore: cast_nullable_to_non_nullable + as String, + phone: null == phone + ? _value.phone + : phone // ignore: cast_nullable_to_non_nullable + as String, + address: null == address + ? _value.address + : address // ignore: cast_nullable_to_non_nullable + as String, + photos: null == photos + ? _value.photos + : photos // ignore: cast_nullable_to_non_nullable + as List, + resume: null == resume + ? _value.resume + : resume // ignore: cast_nullable_to_non_nullable + as String, + ) as $Val); + } +} + +/// @nodoc +abstract class _$$BasicImplCopyWith<$Res> implements $BasicCopyWith<$Res> { + factory _$$BasicImplCopyWith( + _$BasicImpl value, $Res Function(_$BasicImpl) then) = + __$$BasicImplCopyWithImpl<$Res>; + @override + @useResult + $Res call( + {String firstName, + String lastName, + int age, + String email, + String phone, + String address, + List photos, + String resume}); +} + +/// @nodoc +class __$$BasicImplCopyWithImpl<$Res> + extends _$BasicCopyWithImpl<$Res, _$BasicImpl> + implements _$$BasicImplCopyWith<$Res> { + __$$BasicImplCopyWithImpl( + _$BasicImpl _value, $Res Function(_$BasicImpl) _then) + : super(_value, _then); + + /// Create a copy of Basic + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? firstName = null, + Object? lastName = null, + Object? age = null, + Object? email = null, + Object? phone = null, + Object? address = null, + Object? photos = null, + Object? resume = null, + }) { + return _then(_$BasicImpl( + firstName: null == firstName + ? _value.firstName + : firstName // ignore: cast_nullable_to_non_nullable + as String, + lastName: null == lastName + ? _value.lastName + : lastName // ignore: cast_nullable_to_non_nullable + as String, + age: null == age + ? _value.age + : age // ignore: cast_nullable_to_non_nullable + as int, + email: null == email + ? _value.email + : email // ignore: cast_nullable_to_non_nullable + as String, + phone: null == phone + ? _value.phone + : phone // ignore: cast_nullable_to_non_nullable + as String, + address: null == address + ? _value.address + : address // ignore: cast_nullable_to_non_nullable + as String, + photos: null == photos + ? _value._photos + : photos // ignore: cast_nullable_to_non_nullable + as List, + resume: null == resume + ? _value.resume + : resume // ignore: cast_nullable_to_non_nullable + as String, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$BasicImpl implements _Basic { + const _$BasicImpl( + {required this.firstName, + required this.lastName, + required this.age, + required this.email, + required this.phone, + required this.address, + required final List photos, + required this.resume}) + : _photos = photos; + + factory _$BasicImpl.fromJson(Map json) => + _$$BasicImplFromJson(json); + + @override + final String firstName; + @override + final String lastName; + @override + final int age; + @override + final String email; + @override + final String phone; + @override + final String address; + final List _photos; + @override + List get photos { + if (_photos is EqualUnmodifiableListView) return _photos; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_photos); + } + + @override + final String resume; + + @override + String toString() { + return 'Basic(firstName: $firstName, lastName: $lastName, age: $age, email: $email, phone: $phone, address: $address, photos: $photos, resume: $resume)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$BasicImpl && + (identical(other.firstName, firstName) || + other.firstName == firstName) && + (identical(other.lastName, lastName) || + other.lastName == lastName) && + (identical(other.age, age) || other.age == age) && + (identical(other.email, email) || other.email == email) && + (identical(other.phone, phone) || other.phone == phone) && + (identical(other.address, address) || other.address == address) && + const DeepCollectionEquality().equals(other._photos, _photos) && + (identical(other.resume, resume) || other.resume == resume)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash(runtimeType, firstName, lastName, age, email, + phone, address, const DeepCollectionEquality().hash(_photos), resume); + + /// Create a copy of Basic + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$BasicImplCopyWith<_$BasicImpl> get copyWith => + __$$BasicImplCopyWithImpl<_$BasicImpl>(this, _$identity); + + @override + Map toJson() { + return _$$BasicImplToJson( + this, + ); + } +} + +abstract class _Basic implements Basic { + const factory _Basic( + {required final String firstName, + required final String lastName, + required final int age, + required final String email, + required final String phone, + required final String address, + required final List photos, + required final String resume}) = _$BasicImpl; + + factory _Basic.fromJson(Map json) = _$BasicImpl.fromJson; + + @override + String get firstName; + @override + String get lastName; + @override + int get age; + @override + String get email; + @override + String get phone; + @override + String get address; + @override + List get photos; + @override + String get resume; + + /// Create a copy of Basic + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$BasicImplCopyWith<_$BasicImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/models/basic.g.dart b/lib/models/basic.g.dart new file mode 100644 index 00000000..8f644f17 --- /dev/null +++ b/lib/models/basic.g.dart @@ -0,0 +1,31 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'basic.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$BasicImpl _$$BasicImplFromJson(Map json) => _$BasicImpl( + firstName: json['firstName'] as String, + lastName: json['lastName'] as String, + age: (json['age'] as num).toInt(), + email: json['email'] as String, + phone: json['phone'] as String, + address: json['address'] as String, + photos: + (json['photos'] as List).map((e) => e as String).toList(), + resume: json['resume'] as String, + ); + +Map _$$BasicImplToJson(_$BasicImpl instance) => + { + 'firstName': instance.firstName, + 'lastName': instance.lastName, + 'age': instance.age, + 'email': instance.email, + 'phone': instance.phone, + 'address': instance.address, + 'photos': instance.photos, + 'resume': instance.resume, + }; diff --git a/lib/models/contact.dart b/lib/models/contact.dart new file mode 100644 index 00000000..db37a21b --- /dev/null +++ b/lib/models/contact.dart @@ -0,0 +1,17 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'contact.freezed.dart'; +part 'contact.g.dart'; + +@freezed +class Contact with _$Contact { + const factory Contact({ + required String icon, + required String title, + required String description, + required String action, + }) = _Contact; + + factory Contact.fromJson(Map json) => + _$ContactFromJson(json); +} diff --git a/lib/models/contact.freezed.dart b/lib/models/contact.freezed.dart new file mode 100644 index 00000000..44505b97 --- /dev/null +++ b/lib/models/contact.freezed.dart @@ -0,0 +1,218 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'contact.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); + +Contact _$ContactFromJson(Map json) { + return _Contact.fromJson(json); +} + +/// @nodoc +mixin _$Contact { + String get icon => throw _privateConstructorUsedError; + String get title => throw _privateConstructorUsedError; + String get description => throw _privateConstructorUsedError; + String get action => throw _privateConstructorUsedError; + + /// Serializes this Contact to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of Contact + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ContactCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ContactCopyWith<$Res> { + factory $ContactCopyWith(Contact value, $Res Function(Contact) then) = + _$ContactCopyWithImpl<$Res, Contact>; + @useResult + $Res call({String icon, String title, String description, String action}); +} + +/// @nodoc +class _$ContactCopyWithImpl<$Res, $Val extends Contact> + implements $ContactCopyWith<$Res> { + _$ContactCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of Contact + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? icon = null, + Object? title = null, + Object? description = null, + Object? action = null, + }) { + return _then(_value.copyWith( + icon: null == icon + ? _value.icon + : icon // ignore: cast_nullable_to_non_nullable + as String, + title: null == title + ? _value.title + : title // ignore: cast_nullable_to_non_nullable + as String, + description: null == description + ? _value.description + : description // ignore: cast_nullable_to_non_nullable + as String, + action: null == action + ? _value.action + : action // ignore: cast_nullable_to_non_nullable + as String, + ) as $Val); + } +} + +/// @nodoc +abstract class _$$ContactImplCopyWith<$Res> implements $ContactCopyWith<$Res> { + factory _$$ContactImplCopyWith( + _$ContactImpl value, $Res Function(_$ContactImpl) then) = + __$$ContactImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({String icon, String title, String description, String action}); +} + +/// @nodoc +class __$$ContactImplCopyWithImpl<$Res> + extends _$ContactCopyWithImpl<$Res, _$ContactImpl> + implements _$$ContactImplCopyWith<$Res> { + __$$ContactImplCopyWithImpl( + _$ContactImpl _value, $Res Function(_$ContactImpl) _then) + : super(_value, _then); + + /// Create a copy of Contact + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? icon = null, + Object? title = null, + Object? description = null, + Object? action = null, + }) { + return _then(_$ContactImpl( + icon: null == icon + ? _value.icon + : icon // ignore: cast_nullable_to_non_nullable + as String, + title: null == title + ? _value.title + : title // ignore: cast_nullable_to_non_nullable + as String, + description: null == description + ? _value.description + : description // ignore: cast_nullable_to_non_nullable + as String, + action: null == action + ? _value.action + : action // ignore: cast_nullable_to_non_nullable + as String, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$ContactImpl implements _Contact { + const _$ContactImpl( + {required this.icon, + required this.title, + required this.description, + required this.action}); + + factory _$ContactImpl.fromJson(Map json) => + _$$ContactImplFromJson(json); + + @override + final String icon; + @override + final String title; + @override + final String description; + @override + final String action; + + @override + String toString() { + return 'Contact(icon: $icon, title: $title, description: $description, action: $action)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ContactImpl && + (identical(other.icon, icon) || other.icon == icon) && + (identical(other.title, title) || other.title == title) && + (identical(other.description, description) || + other.description == description) && + (identical(other.action, action) || other.action == action)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => + Object.hash(runtimeType, icon, title, description, action); + + /// Create a copy of Contact + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ContactImplCopyWith<_$ContactImpl> get copyWith => + __$$ContactImplCopyWithImpl<_$ContactImpl>(this, _$identity); + + @override + Map toJson() { + return _$$ContactImplToJson( + this, + ); + } +} + +abstract class _Contact implements Contact { + const factory _Contact( + {required final String icon, + required final String title, + required final String description, + required final String action}) = _$ContactImpl; + + factory _Contact.fromJson(Map json) = _$ContactImpl.fromJson; + + @override + String get icon; + @override + String get title; + @override + String get description; + @override + String get action; + + /// Create a copy of Contact + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ContactImplCopyWith<_$ContactImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/models/contact.g.dart b/lib/models/contact.g.dart new file mode 100644 index 00000000..bfa7f3d6 --- /dev/null +++ b/lib/models/contact.g.dart @@ -0,0 +1,23 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'contact.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$ContactImpl _$$ContactImplFromJson(Map json) => + _$ContactImpl( + icon: json['icon'] as String, + title: json['title'] as String, + description: json['description'] as String, + action: json['action'] as String, + ); + +Map _$$ContactImplToJson(_$ContactImpl instance) => + { + 'icon': instance.icon, + 'title': instance.title, + 'description': instance.description, + 'action': instance.action, + }; diff --git a/lib/models/data.dart b/lib/models/data.dart new file mode 100644 index 00000000..2bf8c0fb --- /dev/null +++ b/lib/models/data.dart @@ -0,0 +1,24 @@ +import 'package:devfolio/models/about.dart'; +import 'package:devfolio/models/basic.dart'; +import 'package:devfolio/models/contact.dart'; +import 'package:devfolio/models/project.dart'; +import 'package:devfolio/models/service_data.dart'; +import 'package:devfolio/models/social.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'data.freezed.dart'; +part 'data.g.dart'; + +@freezed +class Data with _$Data { + const factory Data({ + required Basic basic, + required List socials, + required About about, + required List services, + required List projects, + required List contact, + }) = _Data; + + factory Data.fromJson(Map json) => _$DataFromJson(json); +} diff --git a/lib/models/data.freezed.dart b/lib/models/data.freezed.dart new file mode 100644 index 00000000..eff836a0 --- /dev/null +++ b/lib/models/data.freezed.dart @@ -0,0 +1,325 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'data.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); + +Data _$DataFromJson(Map json) { + return _Data.fromJson(json); +} + +/// @nodoc +mixin _$Data { + Basic get basic => throw _privateConstructorUsedError; + List get socials => throw _privateConstructorUsedError; + About get about => throw _privateConstructorUsedError; + List get services => throw _privateConstructorUsedError; + List get projects => throw _privateConstructorUsedError; + List get contact => throw _privateConstructorUsedError; + + /// Serializes this Data to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of Data + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $DataCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $DataCopyWith<$Res> { + factory $DataCopyWith(Data value, $Res Function(Data) then) = + _$DataCopyWithImpl<$Res, Data>; + @useResult + $Res call( + {Basic basic, + List socials, + About about, + List services, + List projects, + List contact}); + + $BasicCopyWith<$Res> get basic; + $AboutCopyWith<$Res> get about; +} + +/// @nodoc +class _$DataCopyWithImpl<$Res, $Val extends Data> + implements $DataCopyWith<$Res> { + _$DataCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of Data + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? basic = null, + Object? socials = null, + Object? about = null, + Object? services = null, + Object? projects = null, + Object? contact = null, + }) { + return _then(_value.copyWith( + basic: null == basic + ? _value.basic + : basic // ignore: cast_nullable_to_non_nullable + as Basic, + socials: null == socials + ? _value.socials + : socials // ignore: cast_nullable_to_non_nullable + as List, + about: null == about + ? _value.about + : about // ignore: cast_nullable_to_non_nullable + as About, + services: null == services + ? _value.services + : services // ignore: cast_nullable_to_non_nullable + as List, + projects: null == projects + ? _value.projects + : projects // ignore: cast_nullable_to_non_nullable + as List, + contact: null == contact + ? _value.contact + : contact // ignore: cast_nullable_to_non_nullable + as List, + ) as $Val); + } + + /// Create a copy of Data + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $BasicCopyWith<$Res> get basic { + return $BasicCopyWith<$Res>(_value.basic, (value) { + return _then(_value.copyWith(basic: value) as $Val); + }); + } + + /// Create a copy of Data + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $AboutCopyWith<$Res> get about { + return $AboutCopyWith<$Res>(_value.about, (value) { + return _then(_value.copyWith(about: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$DataImplCopyWith<$Res> implements $DataCopyWith<$Res> { + factory _$$DataImplCopyWith( + _$DataImpl value, $Res Function(_$DataImpl) then) = + __$$DataImplCopyWithImpl<$Res>; + @override + @useResult + $Res call( + {Basic basic, + List socials, + About about, + List services, + List projects, + List contact}); + + @override + $BasicCopyWith<$Res> get basic; + @override + $AboutCopyWith<$Res> get about; +} + +/// @nodoc +class __$$DataImplCopyWithImpl<$Res> + extends _$DataCopyWithImpl<$Res, _$DataImpl> + implements _$$DataImplCopyWith<$Res> { + __$$DataImplCopyWithImpl(_$DataImpl _value, $Res Function(_$DataImpl) _then) + : super(_value, _then); + + /// Create a copy of Data + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? basic = null, + Object? socials = null, + Object? about = null, + Object? services = null, + Object? projects = null, + Object? contact = null, + }) { + return _then(_$DataImpl( + basic: null == basic + ? _value.basic + : basic // ignore: cast_nullable_to_non_nullable + as Basic, + socials: null == socials + ? _value._socials + : socials // ignore: cast_nullable_to_non_nullable + as List, + about: null == about + ? _value.about + : about // ignore: cast_nullable_to_non_nullable + as About, + services: null == services + ? _value._services + : services // ignore: cast_nullable_to_non_nullable + as List, + projects: null == projects + ? _value._projects + : projects // ignore: cast_nullable_to_non_nullable + as List, + contact: null == contact + ? _value._contact + : contact // ignore: cast_nullable_to_non_nullable + as List, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$DataImpl implements _Data { + const _$DataImpl( + {required this.basic, + required final List socials, + required this.about, + required final List services, + required final List projects, + required final List contact}) + : _socials = socials, + _services = services, + _projects = projects, + _contact = contact; + + factory _$DataImpl.fromJson(Map json) => + _$$DataImplFromJson(json); + + @override + final Basic basic; + final List _socials; + @override + List get socials { + if (_socials is EqualUnmodifiableListView) return _socials; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_socials); + } + + @override + final About about; + final List _services; + @override + List get services { + if (_services is EqualUnmodifiableListView) return _services; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_services); + } + + final List _projects; + @override + List get projects { + if (_projects is EqualUnmodifiableListView) return _projects; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_projects); + } + + final List _contact; + @override + List get contact { + if (_contact is EqualUnmodifiableListView) return _contact; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_contact); + } + + @override + String toString() { + return 'Data(basic: $basic, socials: $socials, about: $about, services: $services, projects: $projects, contact: $contact)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DataImpl && + (identical(other.basic, basic) || other.basic == basic) && + const DeepCollectionEquality().equals(other._socials, _socials) && + (identical(other.about, about) || other.about == about) && + const DeepCollectionEquality().equals(other._services, _services) && + const DeepCollectionEquality().equals(other._projects, _projects) && + const DeepCollectionEquality().equals(other._contact, _contact)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + basic, + const DeepCollectionEquality().hash(_socials), + about, + const DeepCollectionEquality().hash(_services), + const DeepCollectionEquality().hash(_projects), + const DeepCollectionEquality().hash(_contact)); + + /// Create a copy of Data + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DataImplCopyWith<_$DataImpl> get copyWith => + __$$DataImplCopyWithImpl<_$DataImpl>(this, _$identity); + + @override + Map toJson() { + return _$$DataImplToJson( + this, + ); + } +} + +abstract class _Data implements Data { + const factory _Data( + {required final Basic basic, + required final List socials, + required final About about, + required final List services, + required final List projects, + required final List contact}) = _$DataImpl; + + factory _Data.fromJson(Map json) = _$DataImpl.fromJson; + + @override + Basic get basic; + @override + List get socials; + @override + About get about; + @override + List get services; + @override + List get projects; + @override + List get contact; + + /// Create a copy of Data + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DataImplCopyWith<_$DataImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/models/data.g.dart b/lib/models/data.g.dart new file mode 100644 index 00000000..e96e0bb2 --- /dev/null +++ b/lib/models/data.g.dart @@ -0,0 +1,34 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'data.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$DataImpl _$$DataImplFromJson(Map json) => _$DataImpl( + basic: Basic.fromJson(json['basic'] as Map), + socials: (json['socials'] as List) + .map((e) => Social.fromJson(e as Map)) + .toList(), + about: About.fromJson(json['about'] as Map), + services: (json['services'] as List) + .map((e) => ServiceData.fromJson(e as Map)) + .toList(), + projects: (json['projects'] as List) + .map((e) => Project.fromJson(e as Map)) + .toList(), + contact: (json['contact'] as List) + .map((e) => Contact.fromJson(e as Map)) + .toList(), + ); + +Map _$$DataImplToJson(_$DataImpl instance) => + { + 'basic': instance.basic.toJson(), + 'socials': instance.socials.map((e) => e.toJson()).toList(), + 'about': instance.about.toJson(), + 'services': instance.services.map((e) => e.toJson()).toList(), + 'projects': instance.projects.map((e) => e.toJson()).toList(), + 'contact': instance.contact.map((e) => e.toJson()).toList(), + }; diff --git a/lib/models/project.dart b/lib/models/project.dart new file mode 100644 index 00000000..b05c68bd --- /dev/null +++ b/lib/models/project.dart @@ -0,0 +1,18 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'project.freezed.dart'; +part 'project.g.dart'; + +@freezed +class Project with _$Project { + const factory Project({ + required String banner, + required String icon, + required String title, + required String description, + required String link, + }) = _Project; + + factory Project.fromJson(Map json) => + _$ProjectFromJson(json); +} diff --git a/lib/models/project.freezed.dart b/lib/models/project.freezed.dart new file mode 100644 index 00000000..a4225516 --- /dev/null +++ b/lib/models/project.freezed.dart @@ -0,0 +1,246 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'project.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); + +Project _$ProjectFromJson(Map json) { + return _Project.fromJson(json); +} + +/// @nodoc +mixin _$Project { + String get banner => throw _privateConstructorUsedError; + String get icon => throw _privateConstructorUsedError; + String get title => throw _privateConstructorUsedError; + String get description => throw _privateConstructorUsedError; + String get link => throw _privateConstructorUsedError; + + /// Serializes this Project to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of Project + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ProjectCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProjectCopyWith<$Res> { + factory $ProjectCopyWith(Project value, $Res Function(Project) then) = + _$ProjectCopyWithImpl<$Res, Project>; + @useResult + $Res call( + {String banner, + String icon, + String title, + String description, + String link}); +} + +/// @nodoc +class _$ProjectCopyWithImpl<$Res, $Val extends Project> + implements $ProjectCopyWith<$Res> { + _$ProjectCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of Project + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? banner = null, + Object? icon = null, + Object? title = null, + Object? description = null, + Object? link = null, + }) { + return _then(_value.copyWith( + banner: null == banner + ? _value.banner + : banner // ignore: cast_nullable_to_non_nullable + as String, + icon: null == icon + ? _value.icon + : icon // ignore: cast_nullable_to_non_nullable + as String, + title: null == title + ? _value.title + : title // ignore: cast_nullable_to_non_nullable + as String, + description: null == description + ? _value.description + : description // ignore: cast_nullable_to_non_nullable + as String, + link: null == link + ? _value.link + : link // ignore: cast_nullable_to_non_nullable + as String, + ) as $Val); + } +} + +/// @nodoc +abstract class _$$ProjectImplCopyWith<$Res> implements $ProjectCopyWith<$Res> { + factory _$$ProjectImplCopyWith( + _$ProjectImpl value, $Res Function(_$ProjectImpl) then) = + __$$ProjectImplCopyWithImpl<$Res>; + @override + @useResult + $Res call( + {String banner, + String icon, + String title, + String description, + String link}); +} + +/// @nodoc +class __$$ProjectImplCopyWithImpl<$Res> + extends _$ProjectCopyWithImpl<$Res, _$ProjectImpl> + implements _$$ProjectImplCopyWith<$Res> { + __$$ProjectImplCopyWithImpl( + _$ProjectImpl _value, $Res Function(_$ProjectImpl) _then) + : super(_value, _then); + + /// Create a copy of Project + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? banner = null, + Object? icon = null, + Object? title = null, + Object? description = null, + Object? link = null, + }) { + return _then(_$ProjectImpl( + banner: null == banner + ? _value.banner + : banner // ignore: cast_nullable_to_non_nullable + as String, + icon: null == icon + ? _value.icon + : icon // ignore: cast_nullable_to_non_nullable + as String, + title: null == title + ? _value.title + : title // ignore: cast_nullable_to_non_nullable + as String, + description: null == description + ? _value.description + : description // ignore: cast_nullable_to_non_nullable + as String, + link: null == link + ? _value.link + : link // ignore: cast_nullable_to_non_nullable + as String, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$ProjectImpl implements _Project { + const _$ProjectImpl( + {required this.banner, + required this.icon, + required this.title, + required this.description, + required this.link}); + + factory _$ProjectImpl.fromJson(Map json) => + _$$ProjectImplFromJson(json); + + @override + final String banner; + @override + final String icon; + @override + final String title; + @override + final String description; + @override + final String link; + + @override + String toString() { + return 'Project(banner: $banner, icon: $icon, title: $title, description: $description, link: $link)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ProjectImpl && + (identical(other.banner, banner) || other.banner == banner) && + (identical(other.icon, icon) || other.icon == icon) && + (identical(other.title, title) || other.title == title) && + (identical(other.description, description) || + other.description == description) && + (identical(other.link, link) || other.link == link)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => + Object.hash(runtimeType, banner, icon, title, description, link); + + /// Create a copy of Project + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ProjectImplCopyWith<_$ProjectImpl> get copyWith => + __$$ProjectImplCopyWithImpl<_$ProjectImpl>(this, _$identity); + + @override + Map toJson() { + return _$$ProjectImplToJson( + this, + ); + } +} + +abstract class _Project implements Project { + const factory _Project( + {required final String banner, + required final String icon, + required final String title, + required final String description, + required final String link}) = _$ProjectImpl; + + factory _Project.fromJson(Map json) = _$ProjectImpl.fromJson; + + @override + String get banner; + @override + String get icon; + @override + String get title; + @override + String get description; + @override + String get link; + + /// Create a copy of Project + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ProjectImplCopyWith<_$ProjectImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/models/project.g.dart b/lib/models/project.g.dart new file mode 100644 index 00000000..df463587 --- /dev/null +++ b/lib/models/project.g.dart @@ -0,0 +1,25 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'project.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$ProjectImpl _$$ProjectImplFromJson(Map json) => + _$ProjectImpl( + banner: json['banner'] as String, + icon: json['icon'] as String, + title: json['title'] as String, + description: json['description'] as String, + link: json['link'] as String, + ); + +Map _$$ProjectImplToJson(_$ProjectImpl instance) => + { + 'banner': instance.banner, + 'icon': instance.icon, + 'title': instance.title, + 'description': instance.description, + 'link': instance.link, + }; diff --git a/lib/models/service_data.dart b/lib/models/service_data.dart new file mode 100644 index 00000000..b5936c4d --- /dev/null +++ b/lib/models/service_data.dart @@ -0,0 +1,15 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'service_data.freezed.dart'; +part 'service_data.g.dart'; + +@freezed +class ServiceData with _$ServiceData { + const factory ServiceData({ + required String icon, + required String title, + }) = _ServiceData; + + factory ServiceData.fromJson(Map json) => + _$ServiceDataFromJson(json); +} diff --git a/lib/models/service_data.freezed.dart b/lib/models/service_data.freezed.dart new file mode 100644 index 00000000..27500208 --- /dev/null +++ b/lib/models/service_data.freezed.dart @@ -0,0 +1,182 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'service_data.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); + +ServiceData _$ServiceDataFromJson(Map json) { + return _ServiceData.fromJson(json); +} + +/// @nodoc +mixin _$ServiceData { + String get icon => throw _privateConstructorUsedError; + String get title => throw _privateConstructorUsedError; + + /// Serializes this ServiceData to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of ServiceData + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ServiceDataCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ServiceDataCopyWith<$Res> { + factory $ServiceDataCopyWith( + ServiceData value, $Res Function(ServiceData) then) = + _$ServiceDataCopyWithImpl<$Res, ServiceData>; + @useResult + $Res call({String icon, String title}); +} + +/// @nodoc +class _$ServiceDataCopyWithImpl<$Res, $Val extends ServiceData> + implements $ServiceDataCopyWith<$Res> { + _$ServiceDataCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ServiceData + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? icon = null, + Object? title = null, + }) { + return _then(_value.copyWith( + icon: null == icon + ? _value.icon + : icon // ignore: cast_nullable_to_non_nullable + as String, + title: null == title + ? _value.title + : title // ignore: cast_nullable_to_non_nullable + as String, + ) as $Val); + } +} + +/// @nodoc +abstract class _$$ServiceDataImplCopyWith<$Res> + implements $ServiceDataCopyWith<$Res> { + factory _$$ServiceDataImplCopyWith( + _$ServiceDataImpl value, $Res Function(_$ServiceDataImpl) then) = + __$$ServiceDataImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({String icon, String title}); +} + +/// @nodoc +class __$$ServiceDataImplCopyWithImpl<$Res> + extends _$ServiceDataCopyWithImpl<$Res, _$ServiceDataImpl> + implements _$$ServiceDataImplCopyWith<$Res> { + __$$ServiceDataImplCopyWithImpl( + _$ServiceDataImpl _value, $Res Function(_$ServiceDataImpl) _then) + : super(_value, _then); + + /// Create a copy of ServiceData + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? icon = null, + Object? title = null, + }) { + return _then(_$ServiceDataImpl( + icon: null == icon + ? _value.icon + : icon // ignore: cast_nullable_to_non_nullable + as String, + title: null == title + ? _value.title + : title // ignore: cast_nullable_to_non_nullable + as String, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$ServiceDataImpl implements _ServiceData { + const _$ServiceDataImpl({required this.icon, required this.title}); + + factory _$ServiceDataImpl.fromJson(Map json) => + _$$ServiceDataImplFromJson(json); + + @override + final String icon; + @override + final String title; + + @override + String toString() { + return 'ServiceData(icon: $icon, title: $title)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ServiceDataImpl && + (identical(other.icon, icon) || other.icon == icon) && + (identical(other.title, title) || other.title == title)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash(runtimeType, icon, title); + + /// Create a copy of ServiceData + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ServiceDataImplCopyWith<_$ServiceDataImpl> get copyWith => + __$$ServiceDataImplCopyWithImpl<_$ServiceDataImpl>(this, _$identity); + + @override + Map toJson() { + return _$$ServiceDataImplToJson( + this, + ); + } +} + +abstract class _ServiceData implements ServiceData { + const factory _ServiceData( + {required final String icon, + required final String title}) = _$ServiceDataImpl; + + factory _ServiceData.fromJson(Map json) = + _$ServiceDataImpl.fromJson; + + @override + String get icon; + @override + String get title; + + /// Create a copy of ServiceData + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ServiceDataImplCopyWith<_$ServiceDataImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/models/service_data.g.dart b/lib/models/service_data.g.dart new file mode 100644 index 00000000..2434450a --- /dev/null +++ b/lib/models/service_data.g.dart @@ -0,0 +1,19 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'service_data.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$ServiceDataImpl _$$ServiceDataImplFromJson(Map json) => + _$ServiceDataImpl( + icon: json['icon'] as String, + title: json['title'] as String, + ); + +Map _$$ServiceDataImplToJson(_$ServiceDataImpl instance) => + { + 'icon': instance.icon, + 'title': instance.title, + }; diff --git a/lib/models/social.dart b/lib/models/social.dart new file mode 100644 index 00000000..fa6c608b --- /dev/null +++ b/lib/models/social.dart @@ -0,0 +1,14 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'social.freezed.dart'; +part 'social.g.dart'; + +@freezed +class Social with _$Social { + const factory Social({ + required String icon, + required String url, + }) = _Social; + + factory Social.fromJson(Map json) => _$SocialFromJson(json); +} diff --git a/lib/models/social.freezed.dart b/lib/models/social.freezed.dart new file mode 100644 index 00000000..727bd63d --- /dev/null +++ b/lib/models/social.freezed.dart @@ -0,0 +1,177 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'social.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); + +Social _$SocialFromJson(Map json) { + return _Social.fromJson(json); +} + +/// @nodoc +mixin _$Social { + String get icon => throw _privateConstructorUsedError; + String get url => throw _privateConstructorUsedError; + + /// Serializes this Social to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of Social + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $SocialCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $SocialCopyWith<$Res> { + factory $SocialCopyWith(Social value, $Res Function(Social) then) = + _$SocialCopyWithImpl<$Res, Social>; + @useResult + $Res call({String icon, String url}); +} + +/// @nodoc +class _$SocialCopyWithImpl<$Res, $Val extends Social> + implements $SocialCopyWith<$Res> { + _$SocialCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of Social + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? icon = null, + Object? url = null, + }) { + return _then(_value.copyWith( + icon: null == icon + ? _value.icon + : icon // ignore: cast_nullable_to_non_nullable + as String, + url: null == url + ? _value.url + : url // ignore: cast_nullable_to_non_nullable + as String, + ) as $Val); + } +} + +/// @nodoc +abstract class _$$SocialImplCopyWith<$Res> implements $SocialCopyWith<$Res> { + factory _$$SocialImplCopyWith( + _$SocialImpl value, $Res Function(_$SocialImpl) then) = + __$$SocialImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({String icon, String url}); +} + +/// @nodoc +class __$$SocialImplCopyWithImpl<$Res> + extends _$SocialCopyWithImpl<$Res, _$SocialImpl> + implements _$$SocialImplCopyWith<$Res> { + __$$SocialImplCopyWithImpl( + _$SocialImpl _value, $Res Function(_$SocialImpl) _then) + : super(_value, _then); + + /// Create a copy of Social + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? icon = null, + Object? url = null, + }) { + return _then(_$SocialImpl( + icon: null == icon + ? _value.icon + : icon // ignore: cast_nullable_to_non_nullable + as String, + url: null == url + ? _value.url + : url // ignore: cast_nullable_to_non_nullable + as String, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$SocialImpl implements _Social { + const _$SocialImpl({required this.icon, required this.url}); + + factory _$SocialImpl.fromJson(Map json) => + _$$SocialImplFromJson(json); + + @override + final String icon; + @override + final String url; + + @override + String toString() { + return 'Social(icon: $icon, url: $url)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$SocialImpl && + (identical(other.icon, icon) || other.icon == icon) && + (identical(other.url, url) || other.url == url)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash(runtimeType, icon, url); + + /// Create a copy of Social + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$SocialImplCopyWith<_$SocialImpl> get copyWith => + __$$SocialImplCopyWithImpl<_$SocialImpl>(this, _$identity); + + @override + Map toJson() { + return _$$SocialImplToJson( + this, + ); + } +} + +abstract class _Social implements Social { + const factory _Social( + {required final String icon, required final String url}) = _$SocialImpl; + + factory _Social.fromJson(Map json) = _$SocialImpl.fromJson; + + @override + String get icon; + @override + String get url; + + /// Create a copy of Social + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$SocialImplCopyWith<_$SocialImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/models/social.g.dart b/lib/models/social.g.dart new file mode 100644 index 00000000..1bf07ecf --- /dev/null +++ b/lib/models/social.g.dart @@ -0,0 +1,18 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'social.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$SocialImpl _$$SocialImplFromJson(Map json) => _$SocialImpl( + icon: json['icon'] as String, + url: json['url'] as String, + ); + +Map _$$SocialImplToJson(_$SocialImpl instance) => + { + 'icon': instance.icon, + 'url': instance.url, + }; diff --git a/lib/models/work.dart b/lib/models/work.dart new file mode 100644 index 00000000..6e772e71 --- /dev/null +++ b/lib/models/work.dart @@ -0,0 +1,15 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'work.freezed.dart'; +part 'work.g.dart'; + +@freezed +class Work with _$Work { + const factory Work({ + required String image, + required String url, + required int height, + }) = _Work; + + factory Work.fromJson(Map json) => _$WorkFromJson(json); +} diff --git a/lib/models/work.freezed.dart b/lib/models/work.freezed.dart new file mode 100644 index 00000000..4ed46ffd --- /dev/null +++ b/lib/models/work.freezed.dart @@ -0,0 +1,195 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'work.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); + +Work _$WorkFromJson(Map json) { + return _Work.fromJson(json); +} + +/// @nodoc +mixin _$Work { + String get image => throw _privateConstructorUsedError; + String get url => throw _privateConstructorUsedError; + int get height => throw _privateConstructorUsedError; + + /// Serializes this Work to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of Work + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $WorkCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $WorkCopyWith<$Res> { + factory $WorkCopyWith(Work value, $Res Function(Work) then) = + _$WorkCopyWithImpl<$Res, Work>; + @useResult + $Res call({String image, String url, int height}); +} + +/// @nodoc +class _$WorkCopyWithImpl<$Res, $Val extends Work> + implements $WorkCopyWith<$Res> { + _$WorkCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of Work + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? image = null, + Object? url = null, + Object? height = null, + }) { + return _then(_value.copyWith( + image: null == image + ? _value.image + : image // ignore: cast_nullable_to_non_nullable + as String, + url: null == url + ? _value.url + : url // ignore: cast_nullable_to_non_nullable + as String, + height: null == height + ? _value.height + : height // ignore: cast_nullable_to_non_nullable + as int, + ) as $Val); + } +} + +/// @nodoc +abstract class _$$WorkImplCopyWith<$Res> implements $WorkCopyWith<$Res> { + factory _$$WorkImplCopyWith( + _$WorkImpl value, $Res Function(_$WorkImpl) then) = + __$$WorkImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({String image, String url, int height}); +} + +/// @nodoc +class __$$WorkImplCopyWithImpl<$Res> + extends _$WorkCopyWithImpl<$Res, _$WorkImpl> + implements _$$WorkImplCopyWith<$Res> { + __$$WorkImplCopyWithImpl(_$WorkImpl _value, $Res Function(_$WorkImpl) _then) + : super(_value, _then); + + /// Create a copy of Work + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? image = null, + Object? url = null, + Object? height = null, + }) { + return _then(_$WorkImpl( + image: null == image + ? _value.image + : image // ignore: cast_nullable_to_non_nullable + as String, + url: null == url + ? _value.url + : url // ignore: cast_nullable_to_non_nullable + as String, + height: null == height + ? _value.height + : height // ignore: cast_nullable_to_non_nullable + as int, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$WorkImpl implements _Work { + const _$WorkImpl( + {required this.image, required this.url, required this.height}); + + factory _$WorkImpl.fromJson(Map json) => + _$$WorkImplFromJson(json); + + @override + final String image; + @override + final String url; + @override + final int height; + + @override + String toString() { + return 'Work(image: $image, url: $url, height: $height)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$WorkImpl && + (identical(other.image, image) || other.image == image) && + (identical(other.url, url) || other.url == url) && + (identical(other.height, height) || other.height == height)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash(runtimeType, image, url, height); + + /// Create a copy of Work + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$WorkImplCopyWith<_$WorkImpl> get copyWith => + __$$WorkImplCopyWithImpl<_$WorkImpl>(this, _$identity); + + @override + Map toJson() { + return _$$WorkImplToJson( + this, + ); + } +} + +abstract class _Work implements Work { + const factory _Work( + {required final String image, + required final String url, + required final int height}) = _$WorkImpl; + + factory _Work.fromJson(Map json) = _$WorkImpl.fromJson; + + @override + String get image; + @override + String get url; + @override + int get height; + + /// Create a copy of Work + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$WorkImplCopyWith<_$WorkImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/models/work.g.dart b/lib/models/work.g.dart new file mode 100644 index 00000000..4650fa4e --- /dev/null +++ b/lib/models/work.g.dart @@ -0,0 +1,20 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'work.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$WorkImpl _$$WorkImplFromJson(Map json) => _$WorkImpl( + image: json['image'] as String, + url: json['url'] as String, + height: (json['height'] as num).toInt(), + ); + +Map _$$WorkImplToJson(_$WorkImpl instance) => + { + 'image': instance.image, + 'url': instance.url, + 'height': instance.height, + }; diff --git a/pubspec.yaml b/pubspec.yaml index e555c9b4..663aa812 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -7,6 +7,8 @@ environment: dependencies: jaspr: ^0.15.1 + freezed_annotation: ^2.4.1 + json_annotation: ^4.8.1 dev_dependencies: build_runner: ^2.4.0 @@ -16,6 +18,9 @@ dev_dependencies: lints: ^3.0.0 jaspr_test: ^0.15.1 + freezed: ^2.4.1 + json_serializable: ^6.7.1 + jaspr: mode: static From 324a31de1fee111e871080dba559179e9cb09046 Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Sat, 5 Oct 2024 19:56:45 +0500 Subject: [PATCH 23/27] dynamic data via data.json files --- lib/app.dart | 2 +- data.json => lib/data/data.json | 7 +-- lib/jaspr_options.dart | 3 +- lib/models/about.dart | 1 + lib/models/about.freezed.dart | 42 ++++++++++++++--- lib/models/about.g.dart | 2 + lib/pages/home.dart | 43 ++++++++++++++---- lib/sections/about_me.dart | 80 ++++++++++----------------------- lib/sections/basic_info.dart | 45 ++++++------------- lib/sections/contact.dart | 38 +++++----------- lib/sections/projects.dart | 61 +++++-------------------- lib/sections/services.dart | 35 ++++----------- 12 files changed, 146 insertions(+), 213 deletions(-) rename data.json => lib/data/data.json (96%) diff --git a/lib/app.dart b/lib/app.dart index 66a89d78..042c5ddf 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -42,7 +42,7 @@ class AppState extends State { // Renders a
html element with children. yield div(classes: 'main', [ - const Home(), + Home(), ]); } diff --git a/data.json b/lib/data/data.json similarity index 96% rename from data.json rename to lib/data/data.json index 433431cb..042fe324 100644 --- a/data.json +++ b/lib/data/data.json @@ -39,7 +39,8 @@ "url": "https://mhmzdev.medium.com" } ], - "aboutMe": { + "about": { + "heading": "I'm Muhammad Hamza, a Flutter Developer, Technical blog writer and UI/UX Designer.", "description": "I'm a fresh graduate with Computer Science as Majors from COMSATS University Islamabad. I have been working with Flutter for the past 2 years and have developed multiple applications for both Android and iOS platforms. I have a keen interest in UI/UX designing and have been working on it for the past 3 years. I have also been writing technical blogs for the past 2 years and have been a part of multiple technical writing communities.", "tech": [ "Flutter", @@ -63,7 +64,7 @@ "height": 30 }, { - "image": "images/work/flutterisl.png", + "image": "images/work/flutterIsl.png", "url": "https://meetup.com/flutter-islamabad", "height": 60 }, @@ -76,7 +77,7 @@ }, "services": [ { - "icon": "images/services/mobile.png", + "icon": "images/services/app.png", "title": "Mobile Development" }, { diff --git a/lib/jaspr_options.dart b/lib/jaspr_options.dart index 343ac69a..6460aa4e 100644 --- a/lib/jaspr_options.dart +++ b/lib/jaspr_options.dart @@ -41,7 +41,7 @@ final defaultJasprOptions = JasprOptions( prefix3.NavBar: ClientTarget('components/nav_bar'), prefix4.ProjectCard: ClientTarget('components/project_card', params: _prefix4ProjectCard), prefix5.ServiceCard: ClientTarget('components/service_card', params: _prefix5ServiceCard), - prefix7.AboutMeSection: ClientTarget('sections/about_me'), + prefix7.AboutMeSection: ClientTarget('sections/about_me', params: _prefix7AboutMeSection), }, styles: () => [ ...prefix0.AppButton.styles, @@ -67,3 +67,4 @@ Map _prefix1ContactCard(prefix1.ContactCard c) => Map _prefix4ProjectCard(prefix4.ProjectCard c) => {'title': c.title, 'description': c.description, 'icon': c.icon, 'banner': c.banner, 'url': c.url}; Map _prefix5ServiceCard(prefix5.ServiceCard c) => {'icon': c.icon, 'label': c.label}; +Map _prefix7AboutMeSection(prefix7.AboutMeSection c) => {'about': c.about, 'basic': c.basic}; diff --git a/lib/models/about.dart b/lib/models/about.dart index 2c6e98a4..4d20fa95 100644 --- a/lib/models/about.dart +++ b/lib/models/about.dart @@ -10,6 +10,7 @@ class About with _$About { required String description, required List tech, required List works, + required String heading, }) = _About; factory About.fromJson(Map json) => _$AboutFromJson(json); diff --git a/lib/models/about.freezed.dart b/lib/models/about.freezed.dart index 3e5f9b48..b04683dd 100644 --- a/lib/models/about.freezed.dart +++ b/lib/models/about.freezed.dart @@ -23,6 +23,7 @@ mixin _$About { String get description => throw _privateConstructorUsedError; List get tech => throw _privateConstructorUsedError; List get works => throw _privateConstructorUsedError; + String get heading => throw _privateConstructorUsedError; /// Serializes this About to a JSON map. Map toJson() => throw _privateConstructorUsedError; @@ -38,7 +39,11 @@ abstract class $AboutCopyWith<$Res> { factory $AboutCopyWith(About value, $Res Function(About) then) = _$AboutCopyWithImpl<$Res, About>; @useResult - $Res call({String description, List tech, List works}); + $Res call( + {String description, + List tech, + List works, + String heading}); } /// @nodoc @@ -59,6 +64,7 @@ class _$AboutCopyWithImpl<$Res, $Val extends About> Object? description = null, Object? tech = null, Object? works = null, + Object? heading = null, }) { return _then(_value.copyWith( description: null == description @@ -73,6 +79,10 @@ class _$AboutCopyWithImpl<$Res, $Val extends About> ? _value.works : works // ignore: cast_nullable_to_non_nullable as List, + heading: null == heading + ? _value.heading + : heading // ignore: cast_nullable_to_non_nullable + as String, ) as $Val); } } @@ -84,7 +94,11 @@ abstract class _$$AboutImplCopyWith<$Res> implements $AboutCopyWith<$Res> { __$$AboutImplCopyWithImpl<$Res>; @override @useResult - $Res call({String description, List tech, List works}); + $Res call( + {String description, + List tech, + List works, + String heading}); } /// @nodoc @@ -103,6 +117,7 @@ class __$$AboutImplCopyWithImpl<$Res> Object? description = null, Object? tech = null, Object? works = null, + Object? heading = null, }) { return _then(_$AboutImpl( description: null == description @@ -117,6 +132,10 @@ class __$$AboutImplCopyWithImpl<$Res> ? _value._works : works // ignore: cast_nullable_to_non_nullable as List, + heading: null == heading + ? _value.heading + : heading // ignore: cast_nullable_to_non_nullable + as String, )); } } @@ -127,7 +146,8 @@ class _$AboutImpl implements _About { const _$AboutImpl( {required this.description, required final List tech, - required final List works}) + required final List works, + required this.heading}) : _tech = tech, _works = works; @@ -152,9 +172,12 @@ class _$AboutImpl implements _About { return EqualUnmodifiableListView(_works); } + @override + final String heading; + @override String toString() { - return 'About(description: $description, tech: $tech, works: $works)'; + return 'About(description: $description, tech: $tech, works: $works, heading: $heading)'; } @override @@ -165,7 +188,8 @@ class _$AboutImpl implements _About { (identical(other.description, description) || other.description == description) && const DeepCollectionEquality().equals(other._tech, _tech) && - const DeepCollectionEquality().equals(other._works, _works)); + const DeepCollectionEquality().equals(other._works, _works) && + (identical(other.heading, heading) || other.heading == heading)); } @JsonKey(includeFromJson: false, includeToJson: false) @@ -174,7 +198,8 @@ class _$AboutImpl implements _About { runtimeType, description, const DeepCollectionEquality().hash(_tech), - const DeepCollectionEquality().hash(_works)); + const DeepCollectionEquality().hash(_works), + heading); /// Create a copy of About /// with the given fields replaced by the non-null parameter values. @@ -196,7 +221,8 @@ abstract class _About implements About { const factory _About( {required final String description, required final List tech, - required final List works}) = _$AboutImpl; + required final List works, + required final String heading}) = _$AboutImpl; factory _About.fromJson(Map json) = _$AboutImpl.fromJson; @@ -206,6 +232,8 @@ abstract class _About implements About { List get tech; @override List get works; + @override + String get heading; /// Create a copy of About /// with the given fields replaced by the non-null parameter values. diff --git a/lib/models/about.g.dart b/lib/models/about.g.dart index 5af466d1..13fcaefd 100644 --- a/lib/models/about.g.dart +++ b/lib/models/about.g.dart @@ -12,6 +12,7 @@ _$AboutImpl _$$AboutImplFromJson(Map json) => _$AboutImpl( works: (json['works'] as List) .map((e) => Work.fromJson(e as Map)) .toList(), + heading: json['heading'] as String, ); Map _$$AboutImplToJson(_$AboutImpl instance) => @@ -19,4 +20,5 @@ Map _$$AboutImplToJson(_$AboutImpl instance) => 'description': instance.description, 'tech': instance.tech, 'works': instance.works.map((e) => e.toJson()).toList(), + 'heading': instance.heading, }; diff --git a/lib/pages/home.dart b/lib/pages/home.dart index 22f9e9d7..9e93155a 100644 --- a/lib/pages/home.dart +++ b/lib/pages/home.dart @@ -1,24 +1,49 @@ +import 'dart:convert'; +import 'dart:io'; import 'package:devfolio/components/footer.dart'; import 'package:devfolio/components/nav_bar.dart'; +import 'package:devfolio/models/data.dart'; import 'package:devfolio/sections/about_me.dart'; import 'package:devfolio/sections/basic_info.dart'; import 'package:devfolio/sections/contact.dart'; import 'package:devfolio/sections/projects.dart'; import 'package:devfolio/sections/services.dart'; -import 'package:jaspr/jaspr.dart'; +import 'package:jaspr/server.dart'; -class Home extends StatelessComponent { - const Home({super.key}); +class Home extends AsyncStatelessComponent { + Future fetchData() async { + final String responseProjects = + File('lib/data/data.json').readAsStringSync(); + final Map raw = + jsonDecode(responseProjects) as Map; + + final data = Data.fromJson(raw); + return data; + } @override - Iterable build(BuildContext context) sync* { + Stream build(BuildContext context) async* { + final data = await fetchData(); + yield div(classes: 'home-body', [ NavBar(), - BasicInfoSection(), - AboutMeSection(), - ServicesSection(), - ProjectsSections(), - ContactSection(), + BasicInfoSection( + basic: data.basic, + socials: data.socials, + ), + AboutMeSection( + about: data.about, + basic: data.basic, + ), + ServicesSection( + services: data.services, + ), + ProjectsSections( + projects: data.projects, + ), + ContactSection( + contacts: data.contact, + ), Footer(), ]); } diff --git a/lib/sections/about_me.dart b/lib/sections/about_me.dart index f1081af1..cf419cf0 100644 --- a/lib/sections/about_me.dart +++ b/lib/sections/about_me.dart @@ -1,48 +1,22 @@ import 'package:devfolio/components/app_button.dart'; import 'package:devfolio/constants/theme.dart'; +import 'package:devfolio/models/about.dart'; +import 'package:devfolio/models/basic.dart'; import 'package:devfolio/utils/assets.dart'; import 'package:jaspr/jaspr.dart'; @client class AboutMeSection extends StatelessComponent { - const AboutMeSection({super.key}); + final About about; + final Basic basic; + const AboutMeSection({ + super.key, + required this.about, + required this.basic, + }); @override Iterable build(BuildContext context) sync* { - final tech = [ - 'Flutter', - 'Dart', - 'Firebase', - 'Python', - 'dart_frog', - 'jaspr', - 'nodejs', - 'express', - ]; - - final works = [ - { - 'image': StaticAssets.cui, - 'url': 'https://www.comsats.edu.pk/', - 'height': 50, - }, - { - 'image': StaticAssets.dsc, - 'url': 'https://developers.google.com/community/dsc', - 'height': 30, - }, - { - 'image': StaticAssets.flutterisl, - 'url': 'https://meetup.com/flutter-islamabad', - 'height': 60, - }, - { - 'image': StaticAssets.st, - 'url': 'https://www.sastaticket.pk/', - 'height': 60, - }, - ]; - yield section(classes: 'about-me-section', [ span(classes: 'title', id: 'about', [ text('About Me'), @@ -60,8 +34,7 @@ class AboutMeSection extends StatelessComponent { text('Who am I?'), ]), span(classes: 'intro-heading', [ - text( - "I'm Muhammad Hamza, a Flutter Developer, Technical blog writer and UI/UX Designer."), + text(about.heading), ]), span( classes: 'intro-details', @@ -69,8 +42,7 @@ class AboutMeSection extends StatelessComponent { color: Colors.lightGrey, ), [ - text( - "I'm a fresh graduate with Computer Science as Majors from COMSATS University Islamabad. I have been working with Flutter for the past 2 years and have developed multiple applications for both Android and iOS platforms. I have a keen interest in UI/UX designing and have been working on it for the past 3 years. I have also been writing technical blogs for the past 2 years and have been a part of multiple technical writing communities."), + text(about.description), ]), div(classes: 'divider', []), span( @@ -80,7 +52,7 @@ class AboutMeSection extends StatelessComponent { text('Technologies I have worked with:'), ]), div(classes: 'tech-stack', [ - for (final t in tech) + for (final t in about.tech) span([ i(classes: 'fa-solid fa-play play-icon', []), span(classes: 'tech-item', [ @@ -95,7 +67,7 @@ class AboutMeSection extends StatelessComponent { text('Name: '), ]), span(classes: 'personal-value', [ - text(' Muhammad Hamza'), + text('${basic.firstName} ${basic.lastName}'), ]), ]), div([ @@ -103,7 +75,7 @@ class AboutMeSection extends StatelessComponent { text('Email: '), ]), span(classes: 'personal-value', [ - text(' hamza.6.shakeel@gmail.com'), + text(basic.email), ]), ]) ]), @@ -114,7 +86,7 @@ class AboutMeSection extends StatelessComponent { text('Age: '), ]), span(classes: 'personal-value', [ - text(' 25'), + text(basic.age.toString()), ]), ]), div([ @@ -122,7 +94,7 @@ class AboutMeSection extends StatelessComponent { text('From: '), ]), span(classes: 'personal-value', [ - text(' Islamabad, PK'), + text(basic.address), ]), ]) ]), @@ -130,20 +102,16 @@ class AboutMeSection extends StatelessComponent { div(classes: 'work-row', [ AppButton( label: 'RESUME', - href: - "https://drive.google.com/drive/u/0/folders/1E6NxJlmnW2lTYTszcbODdpXiPFYe_kBM", + href: basic.resume, ), div(classes: 'divider', styles: Styles.box(width: 80.px), []), - for (final work in works) - a( - classes: 'work-item', - href: (work['url'] as String), - target: Target.blank, - [ - img( - src: (work['image'] as String), - height: (work['height'] as int)), - ]), + for (final work in about.works) + a(classes: 'work-item', href: work.url, target: Target.blank, [ + img( + src: work.image, + height: work.height, + ), + ]), ]) ]), ]) diff --git a/lib/sections/basic_info.dart b/lib/sections/basic_info.dart index 58a2d77b..0ef40d2c 100644 --- a/lib/sections/basic_info.dart +++ b/lib/sections/basic_info.dart @@ -1,39 +1,20 @@ import 'package:devfolio/constants/theme.dart'; +import 'package:devfolio/models/basic.dart'; +import 'package:devfolio/models/social.dart'; import 'package:devfolio/utils/assets.dart'; import 'package:jaspr/jaspr.dart'; class BasicInfoSection extends StatelessComponent { - const BasicInfoSection({super.key}); + final Basic basic; + final List socials; + const BasicInfoSection({ + super.key, + required this.basic, + required this.socials, + }); @override Iterable build(BuildContext context) sync* { - final List> socials = [ - { - 'icon': 'fa-brands fa-square-facebook', - 'url': 'https://www.facebook.com/mhmzdev', - }, - { - 'icon': 'fa-brands fa-linkedin', - 'url': 'https://www.linkedin.com/in/mhmzdev/', - }, - { - 'icon': 'fa-brands fa-github', - 'url': 'https://github.com/mhmzdev', - }, - { - 'icon': 'fa-brands fa-x-twitter', - 'url': 'https://twitter.com/mhmzdev', - }, - { - 'icon': 'fa-brands fa-instagram', - 'url': 'https://www.instagram.com/mhmzdev/', - }, - { - 'icon': 'fa-brands fa-medium', - 'url': 'https://mhmzdev.medium.com', - }, - ]; - yield section(classes: 'info-section', [ div(classes: 'info', [ div(classes: 'welcome', [ @@ -46,8 +27,8 @@ class BasicInfoSection extends StatelessComponent { height: 35, ) ]), - h1(classes: 'first-name', [text('Muhammad')]), - h1(classes: 'last-name', [text('Hamza')]), + h1(classes: 'first-name', [text(basic.firstName)]), + h1(classes: 'last-name', [text(basic.lastName)]), span(classes: 'subtitle', [ i(classes: 'fa-solid fa-play play-icon', []), span(classes: 'dynamic-subtitles', [ @@ -58,9 +39,9 @@ class BasicInfoSection extends StatelessComponent { for (final social in socials) a( classes: 'social-icon', - href: social['url'], + href: social.url, target: Target.blank, - [i(classes: social['icon'], [])], + [i(classes: social.icon, [])], ), ]), ]), diff --git a/lib/sections/contact.dart b/lib/sections/contact.dart index 3ee60294..e7202713 100644 --- a/lib/sections/contact.dart +++ b/lib/sections/contact.dart @@ -1,32 +1,16 @@ import 'package:devfolio/components/contact.dart'; +import 'package:devfolio/models/contact.dart'; import 'package:jaspr/jaspr.dart'; class ContactSection extends StatelessComponent { - const ContactSection({super.key}); + final List contacts; + const ContactSection({ + super.key, + required this.contacts, + }); @override Iterable build(BuildContext context) sync* { - final List> contactInfo = [ - { - 'icon': 'fa-duotone fa-solid fa-house', - 'title': 'Location', - 'description': 'Islamabad, PK', - 'action': 'https://maps.app.goo.gl/ek2SSNh26K1i4HNF6', - }, - { - 'icon': 'fa-duotone fa-solid fa-phone', - 'title': 'Phone', - 'description': '+92 346 0159889', - 'action': 'https://wa.me/923460159889', - }, - { - 'icon': 'fa-duotone fa-solid fa-envelope', - 'title': 'Email', - 'description': 'hamza.6.shakeel@gmail.com', - 'action': 'mailto:hamza.6.shakeel@gmail.com', - }, - ]; - yield section(classes: 'contact-section', [ span(classes: 'title', [ text('Get in Touch'), @@ -35,12 +19,12 @@ class ContactSection extends StatelessComponent { text("Let's build something together :)"), ]), div(classes: 'contact-body', id: 'contact', [ - for (final contact in contactInfo) + for (final contact in contacts) ContactCard( - icon: contact['icon'], - title: contact['title'], - description: contact['description'], - action: contact['action'], + icon: contact.icon, + title: contact.title, + description: contact.description, + action: contact.action, ), ]) ]); diff --git a/lib/sections/projects.dart b/lib/sections/projects.dart index 3ce2a6a5..b7509e3c 100644 --- a/lib/sections/projects.dart +++ b/lib/sections/projects.dart @@ -1,56 +1,17 @@ import 'package:devfolio/components/app_button.dart'; import 'package:devfolio/components/project_card.dart'; -import 'package:devfolio/utils/assets.dart'; +import 'package:devfolio/models/project.dart'; import 'package:jaspr/jaspr.dart'; class ProjectsSections extends StatelessComponent { - const ProjectsSections({super.key}); + final List projects; + const ProjectsSections({ + super.key, + required this.projects, + }); @override Iterable build(BuildContext context) sync* { - final List> projects = [ - { - 'banner': StaticAssets.snackbar, - 'icon': StaticAssets.flutter, - 'title': 'Awesome Snackbar', - 'description': - "A very unique dart package to uplift the snackbar experience in flutter. Available at pub.dev now!", - 'link': 'https://pub.dev/packages/awesome_snackbar', - }, - { - 'banner': StaticAssets.quranB, - 'icon': StaticAssets.quran, - 'title': 'Quran App', - 'description': - "Application of Holy book of Muslims, Al-Qur'an. Developed using Flutter. Powered with live RestAPI given in README.md", - 'link': 'https://github.com/mhmzdev/the-holy-quran-app', - }, - { - 'banner': StaticAssets.medkitB, - 'icon': StaticAssets.medkit, - 'title': 'MedKit', - 'description': - "A Phramacy app developed using Flutter powered with Firebase as database with Doctor and Patient panels.", - 'link': "https://github.com/mhmzdev/MedKit-Pharmacy-App-Using-Flutter", - }, - { - 'banner': StaticAssets.hereiamB, - 'icon': StaticAssets.hereiam, - 'title': 'Here I Am', - 'description': - "Here I am is an Alert app that Sends alert SMS holding your location (Address and Google Maps) to your loved ones.", - 'link': "https://github.com/mhmzdev/Here-I-Am-Alert-App", - }, - { - 'banner': StaticAssets.covidB, - 'icon': StaticAssets.covid, - 'title': 'Covid-19 Tracker', - 'description': - "A live trakcer for COVID19 stats across the Globe and my Home country Pakistan. It uses APIs so the data is live.", - 'link': "https://github.com/mhmzdev/Covid19-Tracker-App", - }, - ]; - yield section(classes: 'projects-section', [ span(classes: 'title', [ text('Portfolio'), @@ -61,11 +22,11 @@ class ProjectsSections extends StatelessComponent { div(classes: 'section-body-projects', id: 'projects', [ for (final project in projects) ProjectCard( - banner: project['banner'], - icon: project['icon'], - title: project['title'], - description: project['description'], - url: project['link'], + banner: project.banner, + icon: project.icon, + title: project.title, + description: project.description, + url: project.link, ), ]), div(styles: Styles.box(height: 45.px), []), diff --git a/lib/sections/services.dart b/lib/sections/services.dart index 921b4425..1744575e 100644 --- a/lib/sections/services.dart +++ b/lib/sections/services.dart @@ -1,35 +1,16 @@ import 'package:devfolio/components/service_card.dart'; -import 'package:devfolio/utils/assets.dart'; +import 'package:devfolio/models/service_data.dart'; import 'package:jaspr/jaspr.dart'; class ServicesSection extends StatelessComponent { - const ServicesSection({super.key}); + final List services; + const ServicesSection({ + super.key, + required this.services, + }); @override Iterable build(BuildContext context) sync* { - final List> services = [ - { - 'icon': StaticAssets.app, - 'title': 'Mobile Development', - }, - { - 'icon': StaticAssets.ui, - 'title': 'UI/UX Design', - }, - { - 'icon': StaticAssets.rapid, - 'title': 'Rapid Prototyping', - }, - { - 'icon': StaticAssets.blog, - 'title': 'Technical Writing', - }, - { - 'icon': StaticAssets.open, - 'title': 'Open Source - GitHub', - }, - ]; - yield section(classes: 'services-section', [ span(classes: 'title', [ text('What I can do?'), @@ -40,8 +21,8 @@ class ServicesSection extends StatelessComponent { div(classes: 'section-body', id: 'services', [ for (final service in services) ServiceCard( - icon: service['icon'], - label: service['title'], + icon: service.icon, + label: service.title, ), ]) ]); From 4d366cd7901178bf83cc4841d519eb8c51d58400 Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Sat, 5 Oct 2024 20:09:07 +0500 Subject: [PATCH 24/27] moved the data file to asses --- lib/pages/home.dart | 2 +- {lib => web}/data/data.json | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename {lib => web}/data/data.json (100%) diff --git a/lib/pages/home.dart b/lib/pages/home.dart index 9e93155a..2705335f 100644 --- a/lib/pages/home.dart +++ b/lib/pages/home.dart @@ -13,7 +13,7 @@ import 'package:jaspr/server.dart'; class Home extends AsyncStatelessComponent { Future fetchData() async { final String responseProjects = - File('lib/data/data.json').readAsStringSync(); + File('web/data/data.json').readAsStringSync(); final Map raw = jsonDecode(responseProjects) as Map; diff --git a/lib/data/data.json b/web/data/data.json similarity index 100% rename from lib/data/data.json rename to web/data/data.json From e3789f58d4fa404eabe2b24e41756ab0148408bf Mon Sep 17 00:00:00 2001 From: Abdullah Al Mahmud Date: Wed, 9 Oct 2024 15:40:40 +0600 Subject: [PATCH 25/27] fix: replace `jaspr_web_compilers` with `build_web_compilers` to resolve JSON file loading issue in production --- lib/pages/home.dart | 1 + pubspec.lock | 102 +++++++++++++++++++++++++++++++++++++++++--- pubspec.yaml | 3 +- 3 files changed, 97 insertions(+), 9 deletions(-) diff --git a/lib/pages/home.dart b/lib/pages/home.dart index 2705335f..259acaa0 100644 --- a/lib/pages/home.dart +++ b/lib/pages/home.dart @@ -1,5 +1,6 @@ import 'dart:convert'; import 'dart:io'; + import 'package:devfolio/components/footer.dart'; import 'package:devfolio/components/nav_bar.dart'; import 'package:devfolio/models/data.dart'; diff --git a/pubspec.lock b/pubspec.lock index 9266776b..9fbdf555 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -134,6 +134,14 @@ packages: url: "https://pub.dev" source: hosted version: "7.3.2" + build_web_compilers: + dependency: "direct dev" + description: + name: build_web_compilers + sha256: e8d818410cc8b4dc96c4960ce0ab84fe3f2b0ca6576cc130fd7277b56eba9d68 + url: "https://pub.dev" + source: hosted + version: "4.0.11" built_collection: dependency: transitive description: @@ -198,6 +206,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.1" + coverage: + dependency: transitive + description: + name: coverage + sha256: c1fb2dce3c0085f39dc72668e85f8e0210ec7de05345821ff58530567df345a5 + url: "https://pub.dev" + source: hosted + version: "1.9.2" crypto: dependency: transitive description: @@ -262,8 +278,16 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" + freezed: + dependency: "direct dev" + description: + name: freezed + sha256: "44c19278dd9d89292cf46e97dc0c1e52ce03275f40a97c5a348e802a924bf40e" + url: "https://pub.dev" + source: hosted + version: "2.5.7" freezed_annotation: - dependency: transitive + dependency: "direct main" description: name: freezed_annotation sha256: c2e2d632dd9b8a2b7751117abcfc2b4888ecfe181bd9fca7170d9ef02e595fe2 @@ -366,14 +390,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.1.1" - jaspr_web_compilers: + jaspr_test: dependency: "direct dev" description: - name: jaspr_web_compilers - sha256: "068e42fbb89e5a7b7d47849886669b80a0d9e011f76bbfd85f6444d0b80cc4f4" + name: jaspr_test + sha256: "06286fbcfb9dfb933931d46d19c1fded6a6f165d48183c335b03ab36e7290f5d" url: "https://pub.dev" source: hosted - version: "4.0.10" + version: "0.15.1" js: dependency: transitive description: @@ -383,13 +407,21 @@ packages: source: hosted version: "0.6.7" json_annotation: - dependency: transitive + dependency: "direct main" description: name: json_annotation sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" url: "https://pub.dev" source: hosted version: "4.9.0" + json_serializable: + dependency: "direct dev" + description: + name: json_serializable + sha256: ea1432d167339ea9b5bb153f0571d0039607a873d6e04e0117af043f14a1fd4b + url: "https://pub.dev" + source: hosted + version: "6.8.0" lints: dependency: "direct dev" description: @@ -438,6 +470,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.6" + node_preamble: + dependency: transitive + description: + name: node_preamble + sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db" + url: "https://pub.dev" + source: hosted + version: "2.0.2" package_config: dependency: transitive description: @@ -518,6 +558,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.1.0" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" + url: "https://pub.dev" + source: hosted + version: "3.0.2" shelf_proxy: dependency: transitive description: @@ -550,6 +598,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.5.0" + source_helper: + dependency: transitive + description: + name: source_helper + sha256: "6adebc0006c37dd63fe05bca0a929b99f06402fc95aa35bf36d67f5c06de01fd" + url: "https://pub.dev" + source: hosted + version: "1.3.4" + source_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b + url: "https://pub.dev" + source: hosted + version: "2.1.2" source_maps: dependency: transitive description: @@ -614,6 +678,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.1" + test: + dependency: transitive + description: + name: test + sha256: "713a8789d62f3233c46b4a90b174737b2c04cb6ae4500f2aa8b1be8f03f5e67f" + url: "https://pub.dev" + source: hosted + version: "1.25.8" test_api: dependency: transitive description: @@ -622,6 +694,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.3" + test_core: + dependency: transitive + description: + name: test_core + sha256: "12391302411737c176b0b5d6491f466b0dd56d4763e347b6714efbaa74d7953d" + url: "https://pub.dev" + source: hosted + version: "0.6.5" timing: dependency: transitive description: @@ -686,6 +766,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.1" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572" + url: "https://pub.dev" + source: hosted + version: "1.2.1" yaml: dependency: transitive description: @@ -695,4 +783,4 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.5.0-259.0.dev <3.6.0" + dart: ">=3.5.0-259.0.dev <3.7.0" diff --git a/pubspec.yaml b/pubspec.yaml index 663aa812..25b1b4df 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -12,7 +12,7 @@ dependencies: dev_dependencies: build_runner: ^2.4.0 - jaspr_web_compilers: ^4.0.10 + build_web_compilers: ^4.0.10 jaspr_builder: ^0.15.1 jaspr_lints: ^0.1.1 lints: ^3.0.0 @@ -23,4 +23,3 @@ dev_dependencies: jaspr: mode: static - From 686aaec738e61ab450ffd3fcbc5d04fd4e48fb5a Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Wed, 9 Oct 2024 14:58:11 +0500 Subject: [PATCH 26/27] WIP --- lib/main.dart | 7 +++++++ lib/pages/home.dart | 6 +++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 9c9d54d0..fdc0529e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -35,6 +35,13 @@ void main() { rel: 'stylesheet', ), ], + charset: 'utf-8', + viewport: 'width=device-width, initial-scale=1, shrink-to-fit=no', + meta: { + "og:title": "Hamza - Random Dude!", + "og:url": "https://www.mhmz.dev", + }, + lang: 'en', styles: [ // Special import rule to include to another css file. css.import('https://fonts.googleapis.com/css?family=Montserrat'), diff --git a/lib/pages/home.dart b/lib/pages/home.dart index 2705335f..b95acf57 100644 --- a/lib/pages/home.dart +++ b/lib/pages/home.dart @@ -12,10 +12,10 @@ import 'package:jaspr/server.dart'; class Home extends AsyncStatelessComponent { Future fetchData() async { - final String responseProjects = - File('web/data/data.json').readAsStringSync(); + final String fileResponse = + File('${Directory.current.path}/web/data/data.json').readAsStringSync(); final Map raw = - jsonDecode(responseProjects) as Map; + jsonDecode(fileResponse) as Map; final data = Data.fromJson(raw); return data; From a45ca724f31301fe08b74ac654d3726cf1265573 Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Wed, 9 Oct 2024 15:10:06 +0500 Subject: [PATCH 27/27] removed yaml --- .github/workflows/build.yaml | 45 ------------------------------------ 1 file changed, 45 deletions(-) delete mode 100644 .github/workflows/build.yaml diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml deleted file mode 100644 index d81628a7..00000000 --- a/.github/workflows/build.yaml +++ /dev/null @@ -1,45 +0,0 @@ -# name: build_and_test - -# on: -# pull_request: -# branches: [main] -# workflow_dispatch: - -# jobs: -# build: -# runs-on: ubuntu-latest -# steps: -# - name: Checkout repository -# uses: actions/checkout@v3 - -# - name: Set up Flutter -# uses: subosito/flutter-action@v2 -# with: -# flutter-version: "3.24.2" -# channel: stable -# cache: true -# cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" - -# - name: Create blank ..env file -# run: touch .env - -# - name: Get Dependencies -# run: flutter pub get - -# - name: Analyze -# run: dart analyze --no-fatal-warnings - -# - name: Check Formatting -# run: dart format lib test --set-exit-if-changed - -# - name: Run Tests -# # TODO: create github action to generate goldens on Linux, and -# # remove --update-goldens here so the test fails on changes -# run: flutter test --coverage --update-goldens - -# - name: Check Test Coverage -# uses: VeryGoodOpenSource/very_good_coverage@v2 -# with: -# path: 'coverage/lcov.info' -# # This number will fluctuate until the tests touch all code files in the app -# min_coverage: 18.3 \ No newline at end of file