diff --git a/.firebase/hosting.YnVpbGRcd2Vi.cache b/.firebase/hosting.YnVpbGRcd2Vi.cache deleted file mode 100644 index db8388b..0000000 --- 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 ee9221f..0000000 --- a/.firebaserc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "projects": { - "default": "mhmzdev-666" - } -} diff --git a/.gitignore b/.gitignore index b4fecd5..3ddf8a8 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 70adc63..0000000 --- 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 ab7cfb1..0000000 --- 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 61b6c4d..5e93025 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 6f56801..0000000 --- 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 7196c8e..0000000 --- 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 399f698..0000000 --- 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 467effc..0000000 --- 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 6d2d640..0000000 --- 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 f74085f..0000000 --- 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 304732f..0000000 --- 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 db77bb4..0000000 Binary files a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ 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 054c1c9..0000000 Binary files a/android/app/src/main/res/mipmap-hdpi/launcher_icon.png and /dev/null differ 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 17987b7..0000000 Binary files a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/android/app/src/main/res/mipmap-mdpi/launcher_icon.png b/android/app/src/main/res/mipmap-mdpi/launcher_icon.png deleted file mode 100644 index 28c8556..0000000 Binary files a/android/app/src/main/res/mipmap-mdpi/launcher_icon.png and /dev/null differ 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 09d4391..0000000 Binary files a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ 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 d5a7885..0000000 Binary files a/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png and /dev/null differ 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 d5f1c8d..0000000 Binary files a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ 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 d236758..0000000 Binary files a/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png and /dev/null differ 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 4d6372e..0000000 Binary files a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ 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 ec9b65a..0000000 Binary files a/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png and /dev/null differ diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml deleted file mode 100644 index 06952be..0000000 --- a/android/app/src/main/res/values-night/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - 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 cb1ef88..0000000 --- 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 399f698..0000000 --- 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 d2ffbff..0000000 --- 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 3b5b324..0000000 --- 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 e1ca574..0000000 --- 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 536165d..0000000 --- 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 d7b35ec..0000000 --- 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 0d25a77..0000000 --- a/firebase.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "hosting": { - "public": "build/web", - "ignore": [ - "firebase.json", - "**/.*", - "**/node_modules/**" - ] - } -} diff --git a/fonts/poppins/Poppins-Italic.ttf b/fonts/poppins/Poppins-Italic.ttf deleted file mode 100644 index 4620399..0000000 Binary files a/fonts/poppins/Poppins-Italic.ttf and /dev/null differ diff --git a/fonts/poppins/Poppins-Light.ttf b/fonts/poppins/Poppins-Light.ttf deleted file mode 100644 index 2ab0221..0000000 Binary files a/fonts/poppins/Poppins-Light.ttf and /dev/null differ diff --git a/fonts/poppins/Poppins-Medium.ttf b/fonts/poppins/Poppins-Medium.ttf deleted file mode 100644 index e90e87e..0000000 Binary files a/fonts/poppins/Poppins-Medium.ttf and /dev/null differ diff --git a/fonts/poppins/Poppins-Regular.ttf b/fonts/poppins/Poppins-Regular.ttf deleted file mode 100644 index be06e7f..0000000 Binary files a/fonts/poppins/Poppins-Regular.ttf and /dev/null differ diff --git a/fonts/poppins/Poppins-SemiBold.ttf b/fonts/poppins/Poppins-SemiBold.ttf deleted file mode 100644 index dabf7c2..0000000 Binary files a/fonts/poppins/Poppins-SemiBold.ttf and /dev/null differ diff --git a/ios/.gitignore b/ios/.gitignore deleted file mode 100644 index 7a7f987..0000000 --- a/ios/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -**/dgph -*.mode1v3 -*.mode2v3 -*.moved-aside -*.pbxuser -*.perspectivev3 -**/*sync/ -.sconsign.dblite -.tags* -**/.vagrant/ -**/DerivedData/ -Icon? -**/Pods/ -**/.symlinks/ -profile -xcuserdata -**/.generated/ -Flutter/App.framework -Flutter/Flutter.framework -Flutter/Flutter.podspec -Flutter/Generated.xcconfig -Flutter/ephemeral/ -Flutter/app.flx -Flutter/app.zip -Flutter/flutter_assets/ -Flutter/flutter_export_environment.sh -ServiceDefinitions.json -Runner/GeneratedPluginRegistrant.* - -# Exceptions to above rules. -!default.mode1v3 -!default.mode2v3 -!default.pbxuser -!default.perspectivev3 diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist deleted file mode 100644 index 7c56964..0000000 --- a/ios/Flutter/AppFrameworkInfo.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - 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 ec97fc6..0000000 --- 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 c4855bf..0000000 --- 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 d97f17e..0000000 --- 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 2b85eb2..0000000 --- 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 73cc0be..0000000 --- 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 919434a..0000000 --- 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 18d9810..0000000 --- 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 f9b0d7c..0000000 --- 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 8e3ca5d..0000000 --- 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 21a3cc1..0000000 --- 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 18d9810..0000000 --- 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 f9b0d7c..0000000 --- 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 9074fee..0000000 --- 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 d36b1fa..0000000 --- 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 c171289..0000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and /dev/null differ 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 5be1987..0000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png deleted file mode 100644 index 94db55a..0000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and /dev/null differ 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 bbb0130..0000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png deleted file mode 100644 index 67a4010..0000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and /dev/null differ 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 331b674..0000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and /dev/null differ 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 d74871e..0000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and /dev/null differ 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 94db55a..0000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and /dev/null differ 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 5d8aca2..0000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and /dev/null differ 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 1aaeec2..0000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and /dev/null differ 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 a55511c..0000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png and /dev/null differ 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 9b3f93a..0000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png deleted file mode 100644 index 7c018d3..0000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png deleted file mode 100644 index 9bf9c05..0000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png and /dev/null differ 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 1aaeec2..0000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and /dev/null differ 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 c2d535f..0000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png deleted file mode 100644 index 054c1c9..0000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png and /dev/null differ 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 d236758..0000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png and /dev/null differ 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 c61516f..0000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png deleted file mode 100644 index ae54f06..0000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png deleted file mode 100644 index 727c4f6..0000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json deleted file mode 100644 index 0bedcf2..0000000 --- a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "LaunchImage.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "LaunchImage@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "LaunchImage@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png deleted file mode 100644 index 9da19ea..0000000 Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png and /dev/null differ 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 9da19ea..0000000 Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png and /dev/null differ 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 9da19ea..0000000 Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png and /dev/null differ 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 89c2725..0000000 --- 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 f2e259c..0000000 --- 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 f3c2851..0000000 --- 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 e318935..0000000 --- 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 308a2a5..0000000 --- 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 86a7c3b..0000000 --- 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 1830942..0000000 --- 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 4250f07..0000000 --- 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 0000000..66a89d7 --- /dev/null +++ b/lib/app.dart @@ -0,0 +1,63 @@ +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('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 new file mode 100644 index 0000000..7e44824 --- /dev/null +++ b/lib/components/app_button.dart @@ -0,0 +1,66 @@ +import 'package:devfolio/constants/theme.dart'; +import 'package:jaspr/jaspr.dart'; + +@client +class AppButton extends StatelessComponent { + final String label; + final String href; + + final Unit? width; + final Unit? height; + + const AppButton({ + super.key, + required this.label, + required this.href, + this.width, + this.height, + }); + + @override + Iterable build(BuildContext context) sync* { + yield a( + classes: 'app-button', + target: Target.blank, + styles: Styles.box(width: width, height: height), + href: href, + [ + span(classes: 'label', [text(label)]) + ], + ); + } + + @css + static final List styles = [ + css('.app-button') + .box( + width: 100.px, + padding: EdgeInsets.all(10.px), + radius: BorderRadius.circular(6.px), + border: Border.all(BorderSide( + color: themePrimaryColor, + width: 1.px, + )), + ) + .flexbox( + direction: FlexDirection.row, + alignItems: AlignItems.center, + justifyContent: JustifyContent.center, + ) + .text( + decoration: TextDecoration.none, + ) + .background( + color: Colors.transparent, + ), + css('.app-button:hover') + .background( + color: themePrimaryColor, + ) + .box( + transition: Transition('background-color', duration: 500), + cursor: Cursor.pointer, + ), + css('.label').text(fontSize: 12.px), + ]; +} diff --git a/lib/components/contact.dart b/lib/components/contact.dart new file mode 100644 index 0000000..e84f471 --- /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/footer.dart b/lib/components/footer.dart new file mode 100644 index 0000000..8067068 --- /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/components/nav_bar.dart b/lib/components/nav_bar.dart new file mode 100644 index 0000000..0f49358 --- /dev/null +++ b/lib/components/nav_bar.dart @@ -0,0 +1,103 @@ +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}); + + @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: '#about', + classes: 'navbar-label', + [ + text('ABOUT'), + ], + ), + a( + href: '#services', + classes: 'navbar-label', + [ + text('SERVICES'), + ], + ), + a( + href: '#projects', + classes: 'navbar-label', + [ + text('PROJECTS'), + ], + ), + a( + href: '#contact', + classes: 'navbar-label', + [ + text('CONTACT'), + ], + ), + AppButton( + label: 'RESUME', + href: + "https://drive.google.com/drive/u/0/folders/1E6NxJlmnW2lTYTszcbODdpXiPFYe_kBM", + ), + ]), + ]); + } + + @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: themePrimaryColor, + ) + .box( + transition: Transition('color', duration: 500), + ), + css('.labels').flexbox( + direction: FlexDirection.row, + justifyContent: JustifyContent.end, + ), + css('.brand').text( + fontFamily: FontFamily('Agustina'), + fontSize: 24.px, + ), + ]; +} diff --git a/lib/components/project_card.dart b/lib/components/project_card.dart new file mode 100644 index 0000000..a308ed7 --- /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: themeDarkGreyColor, + ) + .text( + decoration: TextDecoration.none, + ), + css('.banner-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), + 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 new file mode 100644 index 0000000..9522007 --- /dev/null +++ b/lib/components/service_card.dart @@ -0,0 +1,60 @@ +import 'package:devfolio/constants/theme.dart'; +import 'package:jaspr/jaspr.dart'; + +@client +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: 25.px, left: 15.px, right: 15.px), + ) + .background( + color: themeDarkGreyColor, + ), + css('.service-title') + .text( + fontSize: 14.px, + ) + .box( + margin: EdgeInsets.only(top: 10.px), + ), + css('.service-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), + ), + ]; +} diff --git a/lib/configs/app.dart b/lib/configs/app.dart deleted file mode 100644 index bcd4143..0000000 --- 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 d1f01e2..0000000 --- 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 e73792d..0000000 --- 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 f6abb5c..0000000 --- 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 bc1f46a..0000000 --- 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 7de8081..0000000 --- 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 d70a0e1..0000000 --- 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 8e65c2a..0000000 --- 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 c449e15..0000000 --- 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 9d02ac4..0000000 --- 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 00826f3..0000000 --- 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 1a2630f..0000000 --- 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 c3a8d80..0000000 --- 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 e248c0d..0000000 --- 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 0000000..5329dcf --- /dev/null +++ b/lib/constants/theme.dart @@ -0,0 +1,6 @@ +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 themePrimaryColor = Color.hex('#C0392B'); +const themeDarkGreyColor = Color.hex('#212121'); diff --git a/lib/jaspr_options.dart b/lib/jaspr_options.dart new file mode 100644 index 0000000..343ac69 --- /dev/null +++ b/lib/jaspr_options.dart @@ -0,0 +1,69 @@ +// 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/contact.dart' as prefix1; +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. +/// +/// 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: { + prefix12.App: ClientTarget('app'), + prefix0.AppButton: ClientTarget('components/app_button', params: _prefix0AppButton), + prefix1.ContactCard: ClientTarget('components/contact', params: _prefix1ContactCard), + 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.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, + ], +); + +Map _prefix0AppButton(prefix0.AppButton c) => + {'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) => + {'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}; diff --git a/lib/main.dart b/lib/main.dart index d71b77c..364dfca 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,75 +1,53 @@ -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()); -} +// Server-specific jaspr import. +import 'package:jaspr/server.dart'; -class MyApp extends StatefulWidget { - const MyApp({super.key}); +// Imports the [App] component. +import 'app.dart'; - @override - MyAppState createState() => MyAppState(); -} +// This file is generated automatically by Jaspr, do not remove or edit. +import 'jaspr_options.dart'; -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, - ), +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', + head: [ + link( + href: + 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css', + rel: 'stylesheet', ), - ); - } -} - -class MaterialChild extends StatefulWidget { - final AppProvider provider; - const MaterialChild({super.key, required this.provider}); - - @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(), - }, - ); - } + ], + styles: [ + // Special import rule to include to another css file. + 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('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), + css.fontFace( + family: 'Agustina', + url: '/fonts/agustina/agustina.otf', + ), + ], + body: App(), + )); } diff --git a/lib/pages/home.dart b/lib/pages/home.dart new file mode 100644 index 0000000..22f9e9d --- /dev/null +++ b/lib/pages/home.dart @@ -0,0 +1,36 @@ +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'; +import 'package:devfolio/sections/contact.dart'; +import 'package:devfolio/sections/projects.dart'; +import 'package:devfolio/sections/services.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(), + BasicInfoSection(), + AboutMeSection(), + ServicesSection(), + ProjectsSections(), + ContactSection(), + Footer(), + ]); + } + + @css + static final List styles = [ + css('.home-body') + .box( + 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 55c379c..0000000 --- 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 13e1701..0000000 --- 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 e0521a6..0000000 --- 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 845566c..0000000 --- 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 7e53ca4..0000000 --- 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 cc22915..0000000 --- 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 a8af81d..0000000 --- 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 df659fb..0000000 --- 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/about_me.dart b/lib/sections/about_me.dart new file mode 100644 index 0000000..1779ef7 --- /dev/null +++ b/lib/sections/about_me.dart @@ -0,0 +1,294 @@ +import 'package:devfolio/components/app_button.dart'; +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', + ]; + + 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'), + ]), + 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: themePrimaryColor), + [ + 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: themePrimaryColor), + [ + text('Technologies I have worked with:'), + ]), + div(classes: 'tech-stack', [ + for (final t in tech) + span([ + i(classes: 'fa-solid fa-play play-icon', []), + span(classes: 'tech-item', [ + text(t), + ]), + ]), + ]), + 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', + 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) + a( + classes: 'work-item', + href: (work['url'] as String), + target: Target.blank, + [ + img( + src: (work['image'] as String), + height: (work['height'] as int)), + ]), + ]) + ]), + ]) + ]); + } + + @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), + width: 100.percent, + ), + css('.play-icon').text(color: themePrimaryColor), + 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, + wrap: FlexWrap.wrap, + ) + .box( + margin: EdgeInsets.only(top: 15.px), + ), + 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, + ), + + /// 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)), + ]), + ]; +} diff --git a/lib/sections/basic_info.dart b/lib/sections/basic_info.dart new file mode 100644 index 0000000..58a2d77 --- /dev/null +++ b/lib/sections/basic_info.dart @@ -0,0 +1,162 @@ +import 'package:devfolio/constants/theme.dart'; +import 'package:devfolio/utils/assets.dart'; +import 'package:jaspr/jaspr.dart'; + +class BasicInfoSection extends StatelessComponent { + const BasicInfoSection({super.key}); + + @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', [ + 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', [ + i(classes: 'fa-solid fa-play play-icon', []), + span(classes: 'dynamic-subtitles', [ + text('Flutter Enthusiast'), + ]) + ]), + 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', []), + ]); + } + + @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('.main-image').box(height: 85.vh, width: 75.vh).background( + image: ImageStyle.url(StaticAssets.bwImage), + size: BackgroundSize.cover, + ), + css('.play-icon').text(color: themePrimaryColor), + 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, + ), + css('.social-icon') + .text( + fontSize: 25.px, + color: Colors.white, + ) + .box( + padding: EdgeInsets.only(right: 25.px), + ), + css('.social-icon:hover') + .text( + color: themePrimaryColor, + ) + .box( + transition: Transition('color', duration: 300), + ), + + /// 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, + ), + ]), + ]; +} diff --git a/lib/sections/contact.dart b/lib/sections/contact.dart new file mode 100644 index 0000000..3ee6029 --- /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/contact/contact.dart b/lib/sections/contact/contact.dart deleted file mode 100644 index e012ba9..0000000 --- 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 e837259..0000000 --- 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 4b9727a..0000000 --- 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 93d907e..0000000 --- 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 b37f50e..0000000 --- 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 9686168..0000000 --- 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 4a696a6..0000000 --- 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 c329624..0000000 --- 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 587b2d7..0000000 --- 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 ee2032f..0000000 --- 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 4666b1e..0000000 --- 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 808bbdf..0000000 --- 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 8f3016f..0000000 --- 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 6bc8b4c..0000000 --- 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/projects.dart b/lib/sections/projects.dart new file mode 100644 index 0000000..3ce2a6a --- /dev/null +++ b/lib/sections/projects.dart @@ -0,0 +1,102 @@ +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', + href: 'https://github.com/mhmzdev', + ), + ]); + } + + @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('.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/sections/services.dart b/lib/sections/services.dart new file mode 100644 index 0000000..921b442 --- /dev/null +++ b/lib/sections/services.dart @@ -0,0 +1,73 @@ +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', id: 'services', [ + 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.symmetric(vertical: 5.vh), + ), + css('.section-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/services/services.dart b/lib/sections/services/services.dart deleted file mode 100644 index 8c9df92..0000000 --- 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 7396555..0000000 --- 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 4eeb0a6..0000000 --- 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 7f3c180..0000000 --- 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 7857d70..0000000 --- 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 e3ef878..0000000 --- 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/assets.dart b/lib/utils/assets.dart new file mode 100644 index 0000000..c93dab4 --- /dev/null +++ b/lib/utils/assets.dart @@ -0,0 +1,41 @@ +abstract class StaticAssets { + static const String waveGif = '/images/hi.gif'; + + /// 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'; + + /// 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'; + 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'; +} diff --git a/lib/utils/contact_utils.dart b/lib/utils/contact_utils.dart deleted file mode 100644 index d3a6117..0000000 --- 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 80d4c92..0000000 --- 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 41add26..0000000 --- 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 e4f5951..0000000 --- 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 2183828..0000000 --- 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 539e736..0000000 --- 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 8d53f3a..0000000 --- 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 5856fc6..0000000 --- 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 7994d64..0000000 --- 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 4ccbd7c..0000000 --- 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 dcf208a..0000000 --- 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 3f82be8..0000000 --- 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 49e3215..0000000 --- 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 64244f7..0000000 --- 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 1ed8b0d..0000000 --- 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 e2fae26..0000000 --- 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 d3896c9..0000000 --- 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 45c37cd..0000000 --- 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 d5bd016..0000000 --- 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 f6f23bf..0000000 --- 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 e0f0a47..0000000 --- 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 f16b4c3..0000000 --- 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 e7c5c54..0000000 --- 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 d57beaa..0000000 --- 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 72271d5..0000000 --- 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 746adbb..0000000 --- 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 4b81f9b..0000000 --- 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 5caa9d1..0000000 --- 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 997e35d..0000000 --- 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 c795730..0000000 --- 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 8d4d2d4..0000000 --- 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 18d9810..0000000 --- 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 3756b34..0000000 --- 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 21a3cc1..0000000 --- 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 18d9810..0000000 --- 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 d53ef64..0000000 --- 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 96d3fee..0000000 --- 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 c171289..0000000 Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png and /dev/null differ 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 005a0be..0000000 Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png and /dev/null differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png deleted file mode 100644 index 16ffcf5..0000000 Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png and /dev/null differ 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 8213f61..0000000 Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png and /dev/null differ 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 210c769..0000000 Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png and /dev/null differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png deleted file mode 100644 index ce16fc1..0000000 Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png and /dev/null differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png deleted file mode 100644 index 09f5411..0000000 Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png and /dev/null differ diff --git a/macos/Runner/Base.lproj/MainMenu.xib b/macos/Runner/Base.lproj/MainMenu.xib deleted file mode 100644 index 80e867a..0000000 --- a/macos/Runner/Base.lproj/MainMenu.xib +++ /dev/null @@ -1,343 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/macos/Runner/Configs/AppInfo.xcconfig b/macos/Runner/Configs/AppInfo.xcconfig deleted file mode 100644 index d34636c..0000000 --- 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 36b0fd9..0000000 --- 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 dff4f49..0000000 --- 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 42bcbf4..0000000 --- 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 08c3ab1..0000000 --- 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 4789daa..0000000 --- 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 3cc05eb..0000000 --- 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 ee95ab7..0000000 --- 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 61f3bd1..0000000 --- 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 1e0f6fa..9266776 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 bc65ac9..e555c9b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,102 +1,21 @@ -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 + jaspr_test: ^0.15.1 - - 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/components/app_button_test.dart b/test/components/app_button_test.dart new file mode 100644 index 0000000..52c6a71 --- /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); + }, + ); +} diff --git a/test/widget_test.dart b/test/widget_test.dart deleted file mode 100644 index e69de29..0000000 diff --git a/web/favicon.ico b/web/favicon.ico new file mode 100644 index 0000000..712c52a Binary files /dev/null and b/web/favicon.ico differ diff --git a/web/favicon.png b/web/favicon.png deleted file mode 100644 index befa1ca..0000000 Binary files a/web/favicon.png and /dev/null differ diff --git a/fonts/agustina/agustina.otf b/web/fonts/agustina/agustina.otf similarity index 100% rename from fonts/agustina/agustina.otf rename to web/fonts/agustina/agustina.otf diff --git a/fonts/montserrat/montserrat.ttf b/web/fonts/montserrat/montserrat.ttf similarity index 100% rename from fonts/montserrat/montserrat.ttf rename to web/fonts/montserrat/montserrat.ttf diff --git a/fonts/poppins/Poppins-Bold.ttf b/web/fonts/poppins/Poppins-Bold.ttf similarity index 100% rename from fonts/poppins/Poppins-Bold.ttf rename to web/fonts/poppins/Poppins-Bold.ttf diff --git a/web/icons/Icon-maskable-192.png b/web/icons/Icon-maskable-192.png deleted file mode 100644 index eb9b4d7..0000000 Binary files a/web/icons/Icon-maskable-192.png and /dev/null differ diff --git a/web/icons/Icon-maskable-512.png b/web/icons/Icon-maskable-512.png deleted file mode 100644 index d69c566..0000000 Binary files a/web/icons/Icon-maskable-512.png and /dev/null differ 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 e1acae6..0000000 --- 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 4e9a8b9..0000000 --- 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 d492d0d..0000000 --- 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 3c89066..0000000 --- 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 930d207..0000000 --- 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 4f78848..0000000 --- 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 dc139d8..0000000 --- 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 88b22e5..0000000 --- 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 b9e550f..0000000 --- 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 50674c8..0000000 --- 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 b43b909..0000000 --- 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 6da0652..0000000 --- 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 738d19b..0000000 --- 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 66a65d1..0000000 --- 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 c977c4a..0000000 --- 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 f5bf9fa..0000000 --- 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 3879d54..0000000 --- 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 c10f08d..0000000 --- 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 17ba431..0000000 --- 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_