├── .gitignore
├── .metadata
├── README.md
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ ├── google-services.json
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── devsnik
│ │ │ │ └── profile
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable
│ │ │ └── launch_background.xml
│ │ │ ├── mipmap-hdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-mdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ └── ic_launcher.png
│ │ │ └── values
│ │ │ └── styles.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── assets
├── avtar1.png
├── avtar2.png
├── avtar3.png
├── avtar4.png
├── avtar5.png
├── nav_contact.svg
├── nav_group.svg
├── nav_home.svg
├── nav_portfolio.svg
└── nav_time.svg
├── ios
├── .gitignore
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ └── Release.xcconfig
├── Podfile
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
└── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── Icon-App-1024x1024@1x.png
│ │ ├── Icon-App-20x20@1x.png
│ │ ├── Icon-App-20x20@2x.png
│ │ ├── Icon-App-20x20@3x.png
│ │ ├── Icon-App-29x29@1x.png
│ │ ├── Icon-App-29x29@2x.png
│ │ ├── Icon-App-29x29@3x.png
│ │ ├── Icon-App-40x40@1x.png
│ │ ├── Icon-App-40x40@2x.png
│ │ ├── Icon-App-40x40@3x.png
│ │ ├── Icon-App-60x60@2x.png
│ │ ├── Icon-App-60x60@3x.png
│ │ ├── Icon-App-76x76@1x.png
│ │ ├── Icon-App-76x76@2x.png
│ │ └── Icon-App-83.5x83.5@2x.png
│ └── LaunchImage.imageset
│ │ ├── Contents.json
│ │ ├── LaunchImage.png
│ │ ├── LaunchImage@2x.png
│ │ ├── LaunchImage@3x.png
│ │ └── README.md
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Info.plist
│ └── Runner-Bridging-Header.h
├── lib
├── controller
│ └── firebase_controller.dart
├── main.dart
├── pages
│ ├── contact_page.dart
│ ├── experience_page.dart
│ ├── home_page.dart
│ ├── portfolio_page.dart
│ └── team_page.dart
├── utils
│ ├── AppColors.dart
│ ├── AppIcons.dart
│ ├── common_string.dart
│ └── text_style.dart
└── widgets
│ ├── app_image_widget.dart
│ ├── app_shimmer_effect.dart
│ ├── navigation_menu_widget.dart
│ └── svg_loader.dart
├── pubspec.lock
├── pubspec.yaml
├── test
└── widget_test.dart
└── web
├── favicon.png
├── icons
├── Icon-192.png
└── Icon-512.png
├── index.html
└── manifest.json
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 |
12 | # IntelliJ related
13 | *.iml
14 | *.ipr
15 | *.iws
16 | .idea/
17 |
18 | # The .vscode folder contains launch configuration and tasks you configure in
19 | # VS Code which you may wish to be included in version control, so this line
20 | # is commented out by default.
21 | #.vscode/
22 |
23 | # Flutter/Dart/Pub related
24 | **/doc/api/
25 | .dart_tool/
26 | .flutter-plugins
27 | .flutter-plugins-dependencies
28 | .packages
29 | .pub-cache/
30 | .pub/
31 | /build/
32 |
33 | # Web related
34 | lib/generated_plugin_registrant.dart
35 |
36 | # Symbolication related
37 | app.*.symbols
38 |
39 | # Obfuscation related
40 | app.*.map.json
41 |
42 | # Exceptions to above rules.
43 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
44 |
--------------------------------------------------------------------------------
/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: e6b34c2b5c96bb95325269a29a84e83ed8909b5f
8 | channel: beta
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Flutter App - CV Portfolio App - Flutter UI
2 |
3 | ## [Watch it on YouTube Part:1](https://youtu.be/cd-RzMCVqzA)
4 |
5 | ## [Watch it on YouTube Part:2](https://youtu.be/ba54zrWNSTw)
6 |
7 |
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
--------------------------------------------------------------------------------
/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | def localProperties = new Properties()
2 | def localPropertiesFile = rootProject.file('local.properties')
3 | if (localPropertiesFile.exists()) {
4 | localPropertiesFile.withReader('UTF-8') { reader ->
5 | localProperties.load(reader)
6 | }
7 | }
8 |
9 | def flutterRoot = localProperties.getProperty('flutter.sdk')
10 | if (flutterRoot == null) {
11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
12 | }
13 |
14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
15 | if (flutterVersionCode == null) {
16 | flutterVersionCode = '1'
17 | }
18 |
19 | def flutterVersionName = localProperties.getProperty('flutter.versionName')
20 | if (flutterVersionName == null) {
21 | flutterVersionName = '1.0'
22 | }
23 |
24 | apply plugin: 'com.android.application'
25 | apply plugin: 'kotlin-android'
26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
27 | apply plugin: 'com.google.gms.google-services' //this line
28 |
29 | android {
30 | compileSdkVersion 28
31 |
32 | sourceSets {
33 | main.java.srcDirs += 'src/main/kotlin'
34 | }
35 |
36 | lintOptions {
37 | disable 'InvalidPackage'
38 | }
39 |
40 | defaultConfig {
41 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
42 | applicationId "com.devsnik.profile"
43 | minSdkVersion 16
44 | targetSdkVersion 28
45 | versionCode flutterVersionCode.toInteger()
46 | versionName flutterVersionName
47 | }
48 |
49 | buildTypes {
50 | release {
51 | // TODO: Add your own signing config for the release build.
52 | // Signing with the debug keys for now, so `flutter run --release` works.
53 | signingConfig signingConfigs.debug
54 | }
55 | }
56 | }
57 |
58 | flutter {
59 | source '../..'
60 | }
61 |
62 | dependencies {
63 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
64 | implementation platform('com.google.firebase:firebase-bom:28.2.0')
65 | implementation 'com.google.firebase:firebase-analytics'
66 | }
67 |
--------------------------------------------------------------------------------
/android/app/google-services.json:
--------------------------------------------------------------------------------
1 | {
2 | "project_info": {
3 | "project_number": "307546348166",
4 | "firebase_url": "https://live-on-play-store.firebaseio.com",
5 | "project_id": "live-on-play-store",
6 | "storage_bucket": "live-on-play-store.appspot.com"
7 | },
8 | "client": [
9 | {
10 | "client_info": {
11 | "mobilesdk_app_id": "1:307546348166:android:34807e68f527bfef7fcf07",
12 | "android_client_info": {
13 | "package_name": "com.devsnik.bhakti"
14 | }
15 | },
16 | "oauth_client": [
17 | {
18 | "client_id": "307546348166-qiguhrbhpqae6od9jjicg8ghrrhv714j.apps.googleusercontent.com",
19 | "client_type": 1,
20 | "android_info": {
21 | "package_name": "com.devsnik.bhakti",
22 | "certificate_hash": "584c381853a4b19062b5d2003d2817d4a687b636"
23 | }
24 | },
25 | {
26 | "client_id": "307546348166-b9i0nepqrsu02oaobvb5biljj4ddv5eu.apps.googleusercontent.com",
27 | "client_type": 3
28 | }
29 | ],
30 | "api_key": [
31 | {
32 | "current_key": "AIzaSyDMrLVCwQeBJ6ljnGSVZxcU1BinecmqCqo"
33 | }
34 | ],
35 | "services": {
36 | "appinvite_service": {
37 | "other_platform_oauth_client": [
38 | {
39 | "client_id": "307546348166-b9i0nepqrsu02oaobvb5biljj4ddv5eu.apps.googleusercontent.com",
40 | "client_type": 3
41 | }
42 | ]
43 | }
44 | }
45 | },
46 | {
47 | "client_info": {
48 | "mobilesdk_app_id": "1:307546348166:android:c2e4944a2f06559b7fcf07",
49 | "android_client_info": {
50 | "package_name": "com.devsnik.profile"
51 | }
52 | },
53 | "oauth_client": [
54 | {
55 | "client_id": "307546348166-b9i0nepqrsu02oaobvb5biljj4ddv5eu.apps.googleusercontent.com",
56 | "client_type": 3
57 | }
58 | ],
59 | "api_key": [
60 | {
61 | "current_key": "AIzaSyDMrLVCwQeBJ6ljnGSVZxcU1BinecmqCqo"
62 | }
63 | ],
64 | "services": {
65 | "appinvite_service": {
66 | "other_platform_oauth_client": [
67 | {
68 | "client_id": "307546348166-b9i0nepqrsu02oaobvb5biljj4ddv5eu.apps.googleusercontent.com",
69 | "client_type": 3
70 | }
71 | ]
72 | }
73 | }
74 | },
75 | {
76 | "client_info": {
77 | "mobilesdk_app_id": "1:307546348166:android:bf0a689a821e94a97fcf07",
78 | "android_client_info": {
79 | "package_name": "com.videodownloader.whatsappstatus"
80 | }
81 | },
82 | "oauth_client": [
83 | {
84 | "client_id": "307546348166-b9i0nepqrsu02oaobvb5biljj4ddv5eu.apps.googleusercontent.com",
85 | "client_type": 3
86 | }
87 | ],
88 | "api_key": [
89 | {
90 | "current_key": "AIzaSyDMrLVCwQeBJ6ljnGSVZxcU1BinecmqCqo"
91 | }
92 | ],
93 | "services": {
94 | "appinvite_service": {
95 | "other_platform_oauth_client": [
96 | {
97 | "client_id": "307546348166-b9i0nepqrsu02oaobvb5biljj4ddv5eu.apps.googleusercontent.com",
98 | "client_type": 3
99 | }
100 | ]
101 | }
102 | }
103 | }
104 | ],
105 | "configuration_version": "1"
106 | }
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
8 |
12 |
19 |
23 |
27 |
32 |
36 |
37 |
38 |
39 |
40 |
41 |
43 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/devsnik/profile/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.devsnik.profile
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.3.50'
3 | repositories {
4 | google()
5 | jcenter()
6 | }
7 |
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:3.5.0'
10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11 | classpath 'com.google.gms:google-services:4.3.3'
12 | }
13 | }
14 |
15 | allprojects {
16 | repositories {
17 | google()
18 | jcenter()
19 | }
20 | }
21 |
22 | rootProject.buildDir = '../build'
23 | subprojects {
24 | project.buildDir = "${rootProject.buildDir}/${project.name}"
25 | }
26 | subprojects {
27 | project.evaluationDependsOn(':app')
28 | }
29 |
30 | task clean(type: Delete) {
31 | delete rootProject.buildDir
32 | }
33 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.enableR8=true
3 | android.useAndroidX=true
4 | android.enableJetifier=true
5 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jun 23 08:50:38 CEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
7 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
4 |
5 | def plugins = new Properties()
6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
7 | if (pluginsFile.exists()) {
8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
9 | }
10 |
11 | plugins.each { name, path ->
12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
13 | include ":$name"
14 | project(":$name").projectDir = pluginDirectory
15 | }
16 |
--------------------------------------------------------------------------------
/assets/avtar1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/assets/avtar1.png
--------------------------------------------------------------------------------
/assets/avtar2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/assets/avtar2.png
--------------------------------------------------------------------------------
/assets/avtar3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/assets/avtar3.png
--------------------------------------------------------------------------------
/assets/avtar4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/assets/avtar4.png
--------------------------------------------------------------------------------
/assets/avtar5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/assets/avtar5.png
--------------------------------------------------------------------------------
/assets/nav_contact.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
45 |
--------------------------------------------------------------------------------
/assets/nav_group.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
45 |
--------------------------------------------------------------------------------
/assets/nav_home.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
50 |
--------------------------------------------------------------------------------
/assets/nav_portfolio.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/nav_time.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
1 | *.mode1v3
2 | *.mode2v3
3 | *.moved-aside
4 | *.pbxuser
5 | *.perspectivev3
6 | **/*sync/
7 | .sconsign.dblite
8 | .tags*
9 | **/.vagrant/
10 | **/DerivedData/
11 | Icon?
12 | **/Pods/
13 | **/.symlinks/
14 | profile
15 | xcuserdata
16 | **/.generated/
17 | Flutter/App.framework
18 | Flutter/Flutter.framework
19 | Flutter/Flutter.podspec
20 | Flutter/Generated.xcconfig
21 | Flutter/app.flx
22 | Flutter/app.zip
23 | Flutter/flutter_assets/
24 | Flutter/flutter_export_environment.sh
25 | ServiceDefinitions.json
26 | Runner/GeneratedPluginRegistrant.*
27 |
28 | # Exceptions to above rules.
29 | !default.mode1v3
30 | !default.mode2v3
31 | !default.pbxuser
32 | !default.perspectivev3
33 |
--------------------------------------------------------------------------------
/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 8.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment this line to define a global platform for your project
2 | # platform :ios, '9.0'
3 |
4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true'
6 |
7 | project 'Runner', {
8 | 'Debug' => :debug,
9 | 'Profile' => :release,
10 | 'Release' => :release,
11 | }
12 |
13 | def flutter_root
14 | generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
15 | unless File.exist?(generated_xcode_build_settings_path)
16 | raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
17 | end
18 |
19 | File.foreach(generated_xcode_build_settings_path) do |line|
20 | matches = line.match(/FLUTTER_ROOT\=(.*)/)
21 | return matches[1].strip if matches
22 | end
23 | raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
24 | end
25 |
26 | require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
27 |
28 | flutter_ios_podfile_setup
29 |
30 | target 'Runner' do
31 | use_frameworks!
32 | use_modular_headers!
33 |
34 | flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
35 | end
36 |
37 | post_install do |installer|
38 | installer.pods_project.targets.each do |target|
39 | flutter_additional_ios_build_settings(target)
40 | end
41 | end
42 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
11 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
12 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
13 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
14 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
15 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
16 | /* End PBXBuildFile section */
17 |
18 | /* Begin PBXCopyFilesBuildPhase section */
19 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
20 | isa = PBXCopyFilesBuildPhase;
21 | buildActionMask = 2147483647;
22 | dstPath = "";
23 | dstSubfolderSpec = 10;
24 | files = (
25 | );
26 | name = "Embed Frameworks";
27 | runOnlyForDeploymentPostprocessing = 0;
28 | };
29 | /* End PBXCopyFilesBuildPhase section */
30 |
31 | /* Begin PBXFileReference section */
32 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
33 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
34 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
35 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
36 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
37 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
38 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
39 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
40 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
41 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
42 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
43 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
44 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
45 | /* End PBXFileReference section */
46 |
47 | /* Begin PBXFrameworksBuildPhase section */
48 | 97C146EB1CF9000F007C117D /* Frameworks */ = {
49 | isa = PBXFrameworksBuildPhase;
50 | buildActionMask = 2147483647;
51 | files = (
52 | );
53 | runOnlyForDeploymentPostprocessing = 0;
54 | };
55 | /* End PBXFrameworksBuildPhase section */
56 |
57 | /* Begin PBXGroup section */
58 | 9740EEB11CF90186004384FC /* Flutter */ = {
59 | isa = PBXGroup;
60 | children = (
61 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
62 | 9740EEB21CF90195004384FC /* Debug.xcconfig */,
63 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
64 | 9740EEB31CF90195004384FC /* Generated.xcconfig */,
65 | );
66 | name = Flutter;
67 | sourceTree = "";
68 | };
69 | 97C146E51CF9000F007C117D = {
70 | isa = PBXGroup;
71 | children = (
72 | 9740EEB11CF90186004384FC /* Flutter */,
73 | 97C146F01CF9000F007C117D /* Runner */,
74 | 97C146EF1CF9000F007C117D /* Products */,
75 | );
76 | sourceTree = "";
77 | };
78 | 97C146EF1CF9000F007C117D /* Products */ = {
79 | isa = PBXGroup;
80 | children = (
81 | 97C146EE1CF9000F007C117D /* Runner.app */,
82 | );
83 | name = Products;
84 | sourceTree = "";
85 | };
86 | 97C146F01CF9000F007C117D /* Runner */ = {
87 | isa = PBXGroup;
88 | children = (
89 | 97C146FA1CF9000F007C117D /* Main.storyboard */,
90 | 97C146FD1CF9000F007C117D /* Assets.xcassets */,
91 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
92 | 97C147021CF9000F007C117D /* Info.plist */,
93 | 97C146F11CF9000F007C117D /* Supporting Files */,
94 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
95 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
96 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
97 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
98 | );
99 | path = Runner;
100 | sourceTree = "";
101 | };
102 | 97C146F11CF9000F007C117D /* Supporting Files */ = {
103 | isa = PBXGroup;
104 | children = (
105 | );
106 | name = "Supporting Files";
107 | sourceTree = "";
108 | };
109 | /* End PBXGroup section */
110 |
111 | /* Begin PBXNativeTarget section */
112 | 97C146ED1CF9000F007C117D /* Runner */ = {
113 | isa = PBXNativeTarget;
114 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
115 | buildPhases = (
116 | 9740EEB61CF901F6004384FC /* Run Script */,
117 | 97C146EA1CF9000F007C117D /* Sources */,
118 | 97C146EB1CF9000F007C117D /* Frameworks */,
119 | 97C146EC1CF9000F007C117D /* Resources */,
120 | 9705A1C41CF9048500538489 /* Embed Frameworks */,
121 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
122 | );
123 | buildRules = (
124 | );
125 | dependencies = (
126 | );
127 | name = Runner;
128 | productName = Runner;
129 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
130 | productType = "com.apple.product-type.application";
131 | };
132 | /* End PBXNativeTarget section */
133 |
134 | /* Begin PBXProject section */
135 | 97C146E61CF9000F007C117D /* Project object */ = {
136 | isa = PBXProject;
137 | attributes = {
138 | LastUpgradeCheck = 1020;
139 | ORGANIZATIONNAME = "";
140 | TargetAttributes = {
141 | 97C146ED1CF9000F007C117D = {
142 | CreatedOnToolsVersion = 7.3.1;
143 | LastSwiftMigration = 1100;
144 | };
145 | };
146 | };
147 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
148 | compatibilityVersion = "Xcode 9.3";
149 | developmentRegion = en;
150 | hasScannedForEncodings = 0;
151 | knownRegions = (
152 | en,
153 | Base,
154 | );
155 | mainGroup = 97C146E51CF9000F007C117D;
156 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
157 | projectDirPath = "";
158 | projectRoot = "";
159 | targets = (
160 | 97C146ED1CF9000F007C117D /* Runner */,
161 | );
162 | };
163 | /* End PBXProject section */
164 |
165 | /* Begin PBXResourcesBuildPhase section */
166 | 97C146EC1CF9000F007C117D /* Resources */ = {
167 | isa = PBXResourcesBuildPhase;
168 | buildActionMask = 2147483647;
169 | files = (
170 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
171 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
172 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
173 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
174 | );
175 | runOnlyForDeploymentPostprocessing = 0;
176 | };
177 | /* End PBXResourcesBuildPhase section */
178 |
179 | /* Begin PBXShellScriptBuildPhase section */
180 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
181 | isa = PBXShellScriptBuildPhase;
182 | buildActionMask = 2147483647;
183 | files = (
184 | );
185 | inputPaths = (
186 | );
187 | name = "Thin Binary";
188 | outputPaths = (
189 | );
190 | runOnlyForDeploymentPostprocessing = 0;
191 | shellPath = /bin/sh;
192 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
193 | };
194 | 9740EEB61CF901F6004384FC /* Run Script */ = {
195 | isa = PBXShellScriptBuildPhase;
196 | buildActionMask = 2147483647;
197 | files = (
198 | );
199 | inputPaths = (
200 | );
201 | name = "Run Script";
202 | outputPaths = (
203 | );
204 | runOnlyForDeploymentPostprocessing = 0;
205 | shellPath = /bin/sh;
206 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
207 | };
208 | /* End PBXShellScriptBuildPhase section */
209 |
210 | /* Begin PBXSourcesBuildPhase section */
211 | 97C146EA1CF9000F007C117D /* Sources */ = {
212 | isa = PBXSourcesBuildPhase;
213 | buildActionMask = 2147483647;
214 | files = (
215 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
216 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
217 | );
218 | runOnlyForDeploymentPostprocessing = 0;
219 | };
220 | /* End PBXSourcesBuildPhase section */
221 |
222 | /* Begin PBXVariantGroup section */
223 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
224 | isa = PBXVariantGroup;
225 | children = (
226 | 97C146FB1CF9000F007C117D /* Base */,
227 | );
228 | name = Main.storyboard;
229 | sourceTree = "";
230 | };
231 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
232 | isa = PBXVariantGroup;
233 | children = (
234 | 97C147001CF9000F007C117D /* Base */,
235 | );
236 | name = LaunchScreen.storyboard;
237 | sourceTree = "";
238 | };
239 | /* End PBXVariantGroup section */
240 |
241 | /* Begin XCBuildConfiguration section */
242 | 249021D3217E4FDB00AE95B9 /* Profile */ = {
243 | isa = XCBuildConfiguration;
244 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
245 | buildSettings = {
246 | ALWAYS_SEARCH_USER_PATHS = NO;
247 | CLANG_ANALYZER_NONNULL = YES;
248 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
249 | CLANG_CXX_LIBRARY = "libc++";
250 | CLANG_ENABLE_MODULES = YES;
251 | CLANG_ENABLE_OBJC_ARC = YES;
252 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
253 | CLANG_WARN_BOOL_CONVERSION = YES;
254 | CLANG_WARN_COMMA = YES;
255 | CLANG_WARN_CONSTANT_CONVERSION = YES;
256 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
257 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
258 | CLANG_WARN_EMPTY_BODY = YES;
259 | CLANG_WARN_ENUM_CONVERSION = YES;
260 | CLANG_WARN_INFINITE_RECURSION = YES;
261 | CLANG_WARN_INT_CONVERSION = YES;
262 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
263 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
264 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
265 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
266 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
267 | CLANG_WARN_STRICT_PROTOTYPES = YES;
268 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
269 | CLANG_WARN_UNREACHABLE_CODE = YES;
270 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
271 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
272 | COPY_PHASE_STRIP = NO;
273 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
274 | ENABLE_NS_ASSERTIONS = NO;
275 | ENABLE_STRICT_OBJC_MSGSEND = YES;
276 | GCC_C_LANGUAGE_STANDARD = gnu99;
277 | GCC_NO_COMMON_BLOCKS = YES;
278 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
279 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
280 | GCC_WARN_UNDECLARED_SELECTOR = YES;
281 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
282 | GCC_WARN_UNUSED_FUNCTION = YES;
283 | GCC_WARN_UNUSED_VARIABLE = YES;
284 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
285 | MTL_ENABLE_DEBUG_INFO = NO;
286 | SDKROOT = iphoneos;
287 | SUPPORTED_PLATFORMS = iphoneos;
288 | TARGETED_DEVICE_FAMILY = "1,2";
289 | VALIDATE_PRODUCT = YES;
290 | };
291 | name = Profile;
292 | };
293 | 249021D4217E4FDB00AE95B9 /* Profile */ = {
294 | isa = XCBuildConfiguration;
295 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
296 | buildSettings = {
297 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
298 | CLANG_ENABLE_MODULES = YES;
299 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
300 | ENABLE_BITCODE = NO;
301 | FRAMEWORK_SEARCH_PATHS = (
302 | "$(inherited)",
303 | "$(PROJECT_DIR)/Flutter",
304 | );
305 | INFOPLIST_FILE = Runner/Info.plist;
306 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
307 | LIBRARY_SEARCH_PATHS = (
308 | "$(inherited)",
309 | "$(PROJECT_DIR)/Flutter",
310 | );
311 | PRODUCT_BUNDLE_IDENTIFIER = com.devsnik.profile;
312 | PRODUCT_NAME = "$(TARGET_NAME)";
313 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
314 | SWIFT_VERSION = 5.0;
315 | VERSIONING_SYSTEM = "apple-generic";
316 | };
317 | name = Profile;
318 | };
319 | 97C147031CF9000F007C117D /* Debug */ = {
320 | isa = XCBuildConfiguration;
321 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
322 | buildSettings = {
323 | ALWAYS_SEARCH_USER_PATHS = NO;
324 | CLANG_ANALYZER_NONNULL = YES;
325 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
326 | CLANG_CXX_LIBRARY = "libc++";
327 | CLANG_ENABLE_MODULES = YES;
328 | CLANG_ENABLE_OBJC_ARC = YES;
329 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
330 | CLANG_WARN_BOOL_CONVERSION = YES;
331 | CLANG_WARN_COMMA = YES;
332 | CLANG_WARN_CONSTANT_CONVERSION = YES;
333 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
334 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
335 | CLANG_WARN_EMPTY_BODY = YES;
336 | CLANG_WARN_ENUM_CONVERSION = YES;
337 | CLANG_WARN_INFINITE_RECURSION = YES;
338 | CLANG_WARN_INT_CONVERSION = YES;
339 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
340 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
341 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
342 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
343 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
344 | CLANG_WARN_STRICT_PROTOTYPES = YES;
345 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
346 | CLANG_WARN_UNREACHABLE_CODE = YES;
347 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
348 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
349 | COPY_PHASE_STRIP = NO;
350 | DEBUG_INFORMATION_FORMAT = dwarf;
351 | ENABLE_STRICT_OBJC_MSGSEND = YES;
352 | ENABLE_TESTABILITY = YES;
353 | GCC_C_LANGUAGE_STANDARD = gnu99;
354 | GCC_DYNAMIC_NO_PIC = NO;
355 | GCC_NO_COMMON_BLOCKS = YES;
356 | GCC_OPTIMIZATION_LEVEL = 0;
357 | GCC_PREPROCESSOR_DEFINITIONS = (
358 | "DEBUG=1",
359 | "$(inherited)",
360 | );
361 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
362 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
363 | GCC_WARN_UNDECLARED_SELECTOR = YES;
364 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
365 | GCC_WARN_UNUSED_FUNCTION = YES;
366 | GCC_WARN_UNUSED_VARIABLE = YES;
367 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
368 | MTL_ENABLE_DEBUG_INFO = YES;
369 | ONLY_ACTIVE_ARCH = YES;
370 | SDKROOT = iphoneos;
371 | TARGETED_DEVICE_FAMILY = "1,2";
372 | };
373 | name = Debug;
374 | };
375 | 97C147041CF9000F007C117D /* Release */ = {
376 | isa = XCBuildConfiguration;
377 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
378 | buildSettings = {
379 | ALWAYS_SEARCH_USER_PATHS = NO;
380 | CLANG_ANALYZER_NONNULL = YES;
381 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
382 | CLANG_CXX_LIBRARY = "libc++";
383 | CLANG_ENABLE_MODULES = YES;
384 | CLANG_ENABLE_OBJC_ARC = YES;
385 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
386 | CLANG_WARN_BOOL_CONVERSION = YES;
387 | CLANG_WARN_COMMA = YES;
388 | CLANG_WARN_CONSTANT_CONVERSION = YES;
389 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
390 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
391 | CLANG_WARN_EMPTY_BODY = YES;
392 | CLANG_WARN_ENUM_CONVERSION = YES;
393 | CLANG_WARN_INFINITE_RECURSION = YES;
394 | CLANG_WARN_INT_CONVERSION = YES;
395 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
396 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
397 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
398 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
399 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
400 | CLANG_WARN_STRICT_PROTOTYPES = YES;
401 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
402 | CLANG_WARN_UNREACHABLE_CODE = YES;
403 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
404 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
405 | COPY_PHASE_STRIP = NO;
406 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
407 | ENABLE_NS_ASSERTIONS = NO;
408 | ENABLE_STRICT_OBJC_MSGSEND = YES;
409 | GCC_C_LANGUAGE_STANDARD = gnu99;
410 | GCC_NO_COMMON_BLOCKS = YES;
411 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
412 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
413 | GCC_WARN_UNDECLARED_SELECTOR = YES;
414 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
415 | GCC_WARN_UNUSED_FUNCTION = YES;
416 | GCC_WARN_UNUSED_VARIABLE = YES;
417 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
418 | MTL_ENABLE_DEBUG_INFO = NO;
419 | SDKROOT = iphoneos;
420 | SUPPORTED_PLATFORMS = iphoneos;
421 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
422 | TARGETED_DEVICE_FAMILY = "1,2";
423 | VALIDATE_PRODUCT = YES;
424 | };
425 | name = Release;
426 | };
427 | 97C147061CF9000F007C117D /* Debug */ = {
428 | isa = XCBuildConfiguration;
429 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
430 | buildSettings = {
431 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
432 | CLANG_ENABLE_MODULES = YES;
433 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
434 | ENABLE_BITCODE = NO;
435 | FRAMEWORK_SEARCH_PATHS = (
436 | "$(inherited)",
437 | "$(PROJECT_DIR)/Flutter",
438 | );
439 | INFOPLIST_FILE = Runner/Info.plist;
440 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
441 | LIBRARY_SEARCH_PATHS = (
442 | "$(inherited)",
443 | "$(PROJECT_DIR)/Flutter",
444 | );
445 | PRODUCT_BUNDLE_IDENTIFIER = com.devsnik.profile;
446 | PRODUCT_NAME = "$(TARGET_NAME)";
447 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
448 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
449 | SWIFT_VERSION = 5.0;
450 | VERSIONING_SYSTEM = "apple-generic";
451 | };
452 | name = Debug;
453 | };
454 | 97C147071CF9000F007C117D /* Release */ = {
455 | isa = XCBuildConfiguration;
456 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
457 | buildSettings = {
458 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
459 | CLANG_ENABLE_MODULES = YES;
460 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
461 | ENABLE_BITCODE = NO;
462 | FRAMEWORK_SEARCH_PATHS = (
463 | "$(inherited)",
464 | "$(PROJECT_DIR)/Flutter",
465 | );
466 | INFOPLIST_FILE = Runner/Info.plist;
467 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
468 | LIBRARY_SEARCH_PATHS = (
469 | "$(inherited)",
470 | "$(PROJECT_DIR)/Flutter",
471 | );
472 | PRODUCT_BUNDLE_IDENTIFIER = com.devsnik.profile;
473 | PRODUCT_NAME = "$(TARGET_NAME)";
474 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
475 | SWIFT_VERSION = 5.0;
476 | VERSIONING_SYSTEM = "apple-generic";
477 | };
478 | name = Release;
479 | };
480 | /* End XCBuildConfiguration section */
481 |
482 | /* Begin XCConfigurationList section */
483 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
484 | isa = XCConfigurationList;
485 | buildConfigurations = (
486 | 97C147031CF9000F007C117D /* Debug */,
487 | 97C147041CF9000F007C117D /* Release */,
488 | 249021D3217E4FDB00AE95B9 /* Profile */,
489 | );
490 | defaultConfigurationIsVisible = 0;
491 | defaultConfigurationName = Release;
492 | };
493 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
494 | isa = XCConfigurationList;
495 | buildConfigurations = (
496 | 97C147061CF9000F007C117D /* Debug */,
497 | 97C147071CF9000F007C117D /* Release */,
498 | 249021D4217E4FDB00AE95B9 /* Profile */,
499 | );
500 | defaultConfigurationIsVisible = 0;
501 | defaultConfigurationName = Release;
502 | };
503 | /* End XCConfigurationList section */
504 | };
505 | rootObject = 97C146E61CF9000F007C117D /* Project object */;
506 | }
507 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
43 |
44 |
54 |
56 |
62 |
63 |
64 |
65 |
66 |
67 |
73 |
75 |
81 |
82 |
83 |
84 |
86 |
87 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Flutter
3 |
4 | @UIApplicationMain
5 | @objc class AppDelegate: FlutterAppDelegate {
6 | override func application(
7 | _ application: UIApplication,
8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
9 | ) -> Bool {
10 | GeneratedPluginRegistrant.register(with: self)
11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "20x20",
5 | "idiom" : "iphone",
6 | "filename" : "Icon-App-20x20@2x.png",
7 | "scale" : "2x"
8 | },
9 | {
10 | "size" : "20x20",
11 | "idiom" : "iphone",
12 | "filename" : "Icon-App-20x20@3x.png",
13 | "scale" : "3x"
14 | },
15 | {
16 | "size" : "29x29",
17 | "idiom" : "iphone",
18 | "filename" : "Icon-App-29x29@1x.png",
19 | "scale" : "1x"
20 | },
21 | {
22 | "size" : "29x29",
23 | "idiom" : "iphone",
24 | "filename" : "Icon-App-29x29@2x.png",
25 | "scale" : "2x"
26 | },
27 | {
28 | "size" : "29x29",
29 | "idiom" : "iphone",
30 | "filename" : "Icon-App-29x29@3x.png",
31 | "scale" : "3x"
32 | },
33 | {
34 | "size" : "40x40",
35 | "idiom" : "iphone",
36 | "filename" : "Icon-App-40x40@2x.png",
37 | "scale" : "2x"
38 | },
39 | {
40 | "size" : "40x40",
41 | "idiom" : "iphone",
42 | "filename" : "Icon-App-40x40@3x.png",
43 | "scale" : "3x"
44 | },
45 | {
46 | "size" : "60x60",
47 | "idiom" : "iphone",
48 | "filename" : "Icon-App-60x60@2x.png",
49 | "scale" : "2x"
50 | },
51 | {
52 | "size" : "60x60",
53 | "idiom" : "iphone",
54 | "filename" : "Icon-App-60x60@3x.png",
55 | "scale" : "3x"
56 | },
57 | {
58 | "size" : "20x20",
59 | "idiom" : "ipad",
60 | "filename" : "Icon-App-20x20@1x.png",
61 | "scale" : "1x"
62 | },
63 | {
64 | "size" : "20x20",
65 | "idiom" : "ipad",
66 | "filename" : "Icon-App-20x20@2x.png",
67 | "scale" : "2x"
68 | },
69 | {
70 | "size" : "29x29",
71 | "idiom" : "ipad",
72 | "filename" : "Icon-App-29x29@1x.png",
73 | "scale" : "1x"
74 | },
75 | {
76 | "size" : "29x29",
77 | "idiom" : "ipad",
78 | "filename" : "Icon-App-29x29@2x.png",
79 | "scale" : "2x"
80 | },
81 | {
82 | "size" : "40x40",
83 | "idiom" : "ipad",
84 | "filename" : "Icon-App-40x40@1x.png",
85 | "scale" : "1x"
86 | },
87 | {
88 | "size" : "40x40",
89 | "idiom" : "ipad",
90 | "filename" : "Icon-App-40x40@2x.png",
91 | "scale" : "2x"
92 | },
93 | {
94 | "size" : "76x76",
95 | "idiom" : "ipad",
96 | "filename" : "Icon-App-76x76@1x.png",
97 | "scale" : "1x"
98 | },
99 | {
100 | "size" : "76x76",
101 | "idiom" : "ipad",
102 | "filename" : "Icon-App-76x76@2x.png",
103 | "scale" : "2x"
104 | },
105 | {
106 | "size" : "83.5x83.5",
107 | "idiom" : "ipad",
108 | "filename" : "Icon-App-83.5x83.5@2x.png",
109 | "scale" : "2x"
110 | },
111 | {
112 | "size" : "1024x1024",
113 | "idiom" : "ios-marketing",
114 | "filename" : "Icon-App-1024x1024@1x.png",
115 | "scale" : "1x"
116 | }
117 | ],
118 | "info" : {
119 | "version" : 1,
120 | "author" : "xcode"
121 | }
122 | }
123 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchImage.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchImage@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "LaunchImage@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | 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.
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | flutterprofile
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | $(FLUTTER_BUILD_NAME)
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | $(FLUTTER_BUILD_NUMBER)
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UISupportedInterfaceOrientations
30 |
31 | UIInterfaceOrientationPortrait
32 | UIInterfaceOrientationLandscapeLeft
33 | UIInterfaceOrientationLandscapeRight
34 |
35 | UISupportedInterfaceOrientations~ipad
36 |
37 | UIInterfaceOrientationPortrait
38 | UIInterfaceOrientationPortraitUpsideDown
39 | UIInterfaceOrientationLandscapeLeft
40 | UIInterfaceOrientationLandscapeRight
41 |
42 | UIViewControllerBasedStatusBarAppearance
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/lib/controller/firebase_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:firebase_database/firebase_database.dart';
2 |
3 | class FirebaseController {
4 | final databaseRef = FirebaseDatabase.instance.reference().child("Portfolio");
5 | var aboutRef = FirebaseDatabase.instance
6 | .reference()
7 | .child("Portfolio")
8 | .child("about_us");
9 | var experienceRef = FirebaseDatabase.instance
10 | .reference()
11 | .child("Portfolio")
12 | .child("experience");
13 |
14 | var portfolioRef = FirebaseDatabase.instance
15 | .reference()
16 | .child("Portfolio")
17 | .child("portfolio");
18 |
19 | Future getFullName() async {
20 | var model = await aboutRef.once();
21 | return model.value['name'];
22 | }
23 |
24 | Future getDesignation() async {
25 | var model = await aboutRef.once();
26 | return model.value['designation'];
27 | }
28 |
29 | Future getDescription() async {
30 | var model = await aboutRef.once();
31 | return model.value['description'];
32 | }
33 |
34 | Query getExperience() {
35 | return experienceRef;
36 | }
37 |
38 | Query getPortfolio() {
39 | return portfolioRef;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'package:firebase_core/firebase_core.dart';
2 | import 'package:firebase_database/firebase_database.dart';
3 | import 'package:flutter/material.dart';
4 | import 'package:flutterprofile/pages/contact_page.dart';
5 | import 'package:flutterprofile/pages/experience_page.dart';
6 | import 'package:flutterprofile/pages/home_page.dart';
7 | import 'package:flutterprofile/pages/portfolio_page.dart';
8 | import 'package:flutterprofile/pages/team_page.dart';
9 | import 'package:flutterprofile/utils/AppColors.dart';
10 | import 'package:flutterprofile/utils/AppIcons.dart';
11 |
12 | import 'widgets/navigation_menu_widget.dart';
13 |
14 | void main() async {
15 | WidgetsFlutterBinding.ensureInitialized();
16 | await Firebase.initializeApp();
17 | runApp(MyApp());
18 | }
19 |
20 | class MyApp extends StatelessWidget {
21 | // This widget is the root of your application.
22 | @override
23 | Widget build(BuildContext context) {
24 | return MaterialApp(
25 | title: 'Flutter Demo',
26 | debugShowCheckedModeBanner: false,
27 | theme: ThemeData(
28 | primarySwatch: Colors.blue,
29 | visualDensity: VisualDensity.adaptivePlatformDensity,
30 | ),
31 | home: MyHomePage(),
32 | );
33 | }
34 | }
35 |
36 | final GlobalKey scaffoldkey = new GlobalKey();
37 |
38 | class MyHomePage extends StatefulWidget {
39 | @override
40 | _MyHomePageState createState() => _MyHomePageState();
41 | }
42 |
43 | class _MyHomePageState extends State with TickerProviderStateMixin {
44 | TabController _tabController;
45 | int selectedMenuIndex = 0;
46 | final databaseRef = FirebaseDatabase.instance.reference().child("Portfolio");
47 | @override
48 | void initState() {
49 | // TODO: implement initState
50 | super.initState();
51 |
52 | _tabController = new TabController(length: 5, vsync: this);
53 |
54 | _tabController.addListener(() {
55 | setState(() {
56 | selectedMenuIndex = _tabController.index;
57 | });
58 | });
59 | }
60 |
61 | @override
62 | Widget build(BuildContext context) {
63 | double iconSize = 20.0;
64 | return SafeArea(
65 | child: Scaffold(
66 | key: scaffoldkey,
67 | backgroundColor: backgroundLight,
68 | body: Container(
69 | margin: EdgeInsets.only(top: 10, left: 10),
70 | child: Row(
71 | children: [
72 | Container(
73 | width: 50,
74 | child: Column(
75 | crossAxisAlignment: CrossAxisAlignment.center,
76 | children: [
77 | Container(
78 | width: 45,
79 | height: 45,
80 | margin: EdgeInsets.only(bottom: 20),
81 | decoration: BoxDecoration(
82 | shape: BoxShape.circle,
83 | ),
84 | child: Image.asset("assets/avtar1.png"),
85 | ),
86 | NavigationMenu(navHome,
87 | height: iconSize,
88 | width: iconSize,
89 | isSelected: selectedMenuIndex == 0, onClick: () {
90 | _tabController.animateTo(0);
91 | }),
92 | NavigationMenu(navTime,
93 | height: iconSize,
94 | width: iconSize,
95 | isSelected: selectedMenuIndex == 1, onClick: () {
96 | _tabController.animateTo(1);
97 | }),
98 | NavigationMenu(navPortfolio,
99 | height: iconSize,
100 | width: iconSize,
101 | isSelected: selectedMenuIndex == 2, onClick: () {
102 | _tabController.animateTo(2);
103 | }),
104 | NavigationMenu(navGroup,
105 | height: iconSize,
106 | width: iconSize,
107 | isSelected: selectedMenuIndex == 3, onClick: () {
108 | _tabController.animateTo(3);
109 | }),
110 | NavigationMenu(navContact,
111 | height: iconSize,
112 | width: iconSize,
113 | isSelected: selectedMenuIndex == 4, onClick: () {
114 | _tabController.animateTo(4);
115 | }),
116 | ],
117 | ),
118 | ),
119 | Flexible(
120 | fit: FlexFit.tight,
121 | child: Container(
122 | child: TabBarView(
123 | controller: _tabController,
124 | children: [
125 | HomePage(databaseRef),
126 | ExperiencePage(),
127 | PortfolioPage(),
128 | TeamPage(),
129 | ContactPage(),
130 | ],
131 | ),
132 | ),
133 | ),
134 | ],
135 | ),
136 | ),
137 | ),
138 | );
139 | }
140 | }
141 |
--------------------------------------------------------------------------------
/lib/pages/contact_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutterprofile/utils/text_style.dart';
3 |
4 | class ContactPage extends StatelessWidget {
5 | @override
6 | Widget build(BuildContext context) {
7 | return SingleChildScrollView(
8 | padding: EdgeInsets.only(left: 20,right: 20),
9 | child: Container(
10 | child: Column(
11 | crossAxisAlignment: CrossAxisAlignment.start,
12 | children: [
13 | Text("Contact us",style: headerTextStyle,),
14 | SizedBox(height: 10,),
15 | _itemWidget("Email","demo@gmail.com"),
16 | _itemWidget("Mobile","+91 98765 43210"),
17 | ],
18 | ),
19 | ),
20 | );
21 | }
22 | Widget _itemWidget(title,value){
23 | return Container(
24 | margin: EdgeInsets.only(top:10),
25 | child: Column(
26 | crossAxisAlignment: CrossAxisAlignment.start,
27 | children: [
28 | Text(title,style: subHeaderTextStyle,),
29 | Text(value,style: bodyTextStyle,),
30 | ],
31 | ),
32 | );
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/lib/pages/experience_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:firebase_database/firebase_database.dart';
2 | import 'package:firebase_database/ui/firebase_animated_list.dart';
3 | import 'package:flutter/material.dart';
4 | import 'package:flutterprofile/controller/firebase_controller.dart';
5 | import 'package:flutterprofile/utils/AppColors.dart';
6 | import 'package:flutterprofile/utils/text_style.dart';
7 |
8 | class ExperiencePage extends StatelessWidget {
9 | @override
10 | Widget build(BuildContext context) {
11 | return SingleChildScrollView(
12 | padding: EdgeInsets.only(left: 20, right: 20),
13 | child: Container(
14 | child: Column(
15 | crossAxisAlignment: CrossAxisAlignment.start,
16 | children: [
17 | Text(
18 | "Professional Experience",
19 | style: headerTextStyle,
20 | ),
21 | SizedBox(
22 | height: 10,
23 | ),
24 | FirebaseAnimatedList(
25 | shrinkWrap: true,
26 | query: FirebaseController().getExperience(),
27 | itemBuilder: (_, DataSnapshot snapshot,
28 | Animation animation, int x) {
29 | print(snapshot.value);
30 | if (snapshot != null)
31 | return _itemWidget(
32 | snapshot.value['date'], snapshot.value['description']);
33 | return SizedBox.shrink();
34 | },
35 | ),
36 | ],
37 | ),
38 | ),
39 | );
40 | }
41 |
42 | Widget _itemWidget(title, description) {
43 | return Container(
44 | width: double.infinity,
45 | margin: EdgeInsets.only(top: 10),
46 | child: Column(
47 | children: [
48 | Row(
49 | children: [
50 | Container(
51 | height: 15,
52 | width: 15,
53 | margin: EdgeInsets.only(right: 10),
54 | decoration:
55 | BoxDecoration(shape: BoxShape.circle, color: Colors.grey),
56 | ),
57 | Text(
58 | title,
59 | style: subHeaderTextStyle,
60 | )
61 | ],
62 | ),
63 | Container(
64 | margin: EdgeInsets.only(left: 6, top: 10),
65 | decoration: BoxDecoration(
66 | border: Border(left: BorderSide(width: 2, color: Colors.grey))),
67 | child: Container(
68 | width: double.infinity,
69 | margin: const EdgeInsets.only(left: 8.0),
70 | padding: const EdgeInsets.all(8.0),
71 | decoration: BoxDecoration(
72 | borderRadius: BorderRadius.all(Radius.circular(10)),
73 | color: cardBGColor),
74 | child: Text(description),
75 | ),
76 | )
77 | ],
78 | ),
79 | );
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/lib/pages/home_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:firebase_database/firebase_database.dart';
2 | import 'package:flutter/material.dart';
3 | import 'package:flutterprofile/controller/firebase_controller.dart';
4 | import 'package:flutterprofile/utils/common_string.dart';
5 | import 'package:flutterprofile/utils/text_style.dart';
6 | import 'package:flutterprofile/widgets/app_shimmer_effect.dart';
7 |
8 | class HomePage extends StatefulWidget {
9 | HomePage(this.databaseRef);
10 |
11 | final DatabaseReference databaseRef;
12 |
13 | @override
14 | _HomePageState createState() => _HomePageState();
15 | }
16 |
17 | class _HomePageState extends State {
18 | @override
19 | void initState() {
20 | super.initState();
21 | }
22 |
23 | @override
24 | Widget build(BuildContext context) {
25 | return SingleChildScrollView(
26 | padding: EdgeInsets.only(left: 20, right: 20),
27 | child: Column(
28 | crossAxisAlignment: CrossAxisAlignment.start,
29 | children: [
30 | FutureBuilder(
31 | future: FirebaseController().getFullName(),
32 | builder: (context, snapshot) {
33 | if (snapshot.hasData) {
34 | return Text(snapshot.data, style: headerTextStyle);
35 | }
36 | return AppShimmer(
37 | child: Text("======= ======", style: headerTextStyle),
38 | );
39 | }),
40 | Padding(
41 | padding: const EdgeInsets.only(top: 10.0, bottom: 20),
42 | child: FutureBuilder(
43 | future: FirebaseController().getDesignation(),
44 | builder: (context, snapshot) {
45 | if (snapshot.hasData) {
46 | return Text(snapshot.data, style: headerTextStyle);
47 | }
48 | return AppShimmer(
49 | child: Text("==============", style: headerTextStyle),
50 | );
51 | }),
52 | ),
53 | FutureBuilder(
54 | future: FirebaseController().getDescription(),
55 | builder: (context, snapshot) {
56 | if (snapshot.hasData) {
57 | return Text(snapshot.data, style: bodyTextStyle);
58 | }
59 | return AppShimmer(
60 | child: Text("==============", style: headerTextStyle),
61 | );
62 | }),
63 | Container(
64 | margin: const EdgeInsets.only(top: 30.0),
65 | child: Text(title2, style: headerTextStyle)),
66 | Padding(
67 | padding: const EdgeInsets.only(
68 | top: 10.0,
69 | ),
70 | child: Text(
71 | description,
72 | style: bodyTextStyle,
73 | ),
74 | ),
75 | Container(
76 | margin: const EdgeInsets.only(top: 30.0),
77 | child: Text(title3, style: headerTextStyle)),
78 | Padding(
79 | padding: const EdgeInsets.only(top: 10.0, bottom: 20),
80 | child: Text(
81 | description,
82 | style: bodyTextStyle,
83 | ),
84 | ),
85 | ],
86 | ),
87 | );
88 | }
89 | }
90 |
--------------------------------------------------------------------------------
/lib/pages/portfolio_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:firebase_database/firebase_database.dart';
2 | import 'package:firebase_database/ui/firebase_animated_list.dart';
3 | import 'package:flutter/material.dart';
4 | import 'package:flutterprofile/controller/firebase_controller.dart';
5 | import 'package:flutterprofile/utils/AppColors.dart';
6 | import 'package:flutterprofile/utils/common_string.dart';
7 | import 'package:flutterprofile/utils/text_style.dart';
8 | import 'package:flutterprofile/widgets/app_image_widget.dart';
9 | import 'package:flutterprofile/widgets/app_shimmer_effect.dart';
10 |
11 | import '../main.dart';
12 |
13 | class PortfolioPage extends StatefulWidget {
14 | @override
15 | _PortfolioPageState createState() => _PortfolioPageState();
16 | }
17 |
18 | class _PortfolioPageState extends State {
19 | @override
20 | Widget build(BuildContext context) {
21 | var width = MediaQuery.of(context).size.width;
22 | return SingleChildScrollView(
23 | padding: EdgeInsets.only(left: 20, right: 20),
24 | child: Container(
25 | child: Column(
26 | crossAxisAlignment: CrossAxisAlignment.start,
27 | children: [
28 | Text("Portfolio", style: headerTextStyle),
29 | Container(
30 | child: Text(description, style: bodyTextStyle),
31 | margin: EdgeInsets.only(top: 20, bottom: 10),
32 | ),
33 | new FirebaseAnimatedList(
34 | query: FirebaseController().getPortfolio(), // line added
35 | reverse: false,
36 | shrinkWrap: true,
37 | defaultChild: AppShimmer(
38 | child: _itemWidget(width,
39 | image: "", name: "===========", description: "==========="),
40 | ),
41 | itemBuilder: (_, DataSnapshot snapshot,
42 | Animation animation, int x) {
43 | return _itemWidget(width,
44 | image: snapshot.value['image'],
45 | name: snapshot.value['name'],
46 | description: snapshot.value['description']);
47 | },
48 | ),
49 | /*FutureBuilder(
50 | future: FirebaseController().getPortfolio().once(),
51 | builder: (context, snapshot) {
52 | if (snapshot.connectionState == ConnectionState.waiting) {}
53 |
54 | if (snapshot.hasData) {
55 | var list = snapshot.data;
56 | return Wrap(
57 | children: [
58 | for (var model in list.value)
59 | _itemWidget(
60 | MediaQuery.of(context).size.width * 0.36,
61 | image: model['image'],
62 | name: model['name'],
63 | description: model['description'],
64 | )
65 | ],
66 | );
67 | }
68 | return SizedBox.shrink();
69 | },
70 | )*/
71 | ],
72 | ),
73 | ),
74 | );
75 | }
76 |
77 | Widget _itemWidget(double width, {name, image, description}) {
78 | return SizedBox(
79 | width: width,
80 | child: InkWell(
81 | onTap: () {
82 | scaffoldkey.currentState.showBottomSheet((context) {
83 | return Container(
84 | color: backgroundLight,
85 | width: width,
86 | child: Column(
87 | mainAxisSize: MainAxisSize.min,
88 | crossAxisAlignment: CrossAxisAlignment.start,
89 | children: [
90 | Container(
91 | height: 200,
92 | alignment: Alignment.center,
93 | child: AppImageWidget(
94 | imageUrl: image,
95 | fit: BoxFit.fitWidth,
96 | ),
97 | color: cardBGColor,
98 | ),
99 | Padding(
100 | padding: const EdgeInsets.only(left: 10.0, top: 10),
101 | child: Text(name, style: subHeaderTextStyle),
102 | ),
103 | Padding(
104 | padding: const EdgeInsets.only(left: 10.0, top: 5),
105 | child: Text(description, style: bodyTextStyle),
106 | ),
107 | ],
108 | ),
109 | );
110 | });
111 | },
112 | child: Card(
113 | elevation: 3,
114 | shape: RoundedRectangleBorder(
115 | borderRadius: BorderRadius.circular(10),
116 | ),
117 | child: ClipRRect(
118 | borderRadius: BorderRadius.circular(10),
119 | child: Container(
120 | alignment: Alignment.center,
121 | decoration: BoxDecoration(
122 | // color: cardBGColor,
123 | // image: DecorationImage(image: Image.network(image).image),
124 | ),
125 | child: Column(
126 | crossAxisAlignment: CrossAxisAlignment.start,
127 | children: [
128 | Image.network(
129 | image,
130 | fit: BoxFit.fitWidth,
131 | ),
132 | Container(
133 | padding: const EdgeInsets.all(8.0),
134 | child: Text(
135 | name,
136 | style: Theme.of(context).textTheme.headline6,
137 | ),
138 | ),
139 | ],
140 | ),
141 | ),
142 | ),
143 | ),
144 | ),
145 | );
146 | }
147 | }
148 |
--------------------------------------------------------------------------------
/lib/pages/team_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutterprofile/utils/AppColors.dart';
3 | import 'package:flutterprofile/utils/common_string.dart';
4 | import 'package:flutterprofile/utils/text_style.dart';
5 |
6 | class TeamPage extends StatelessWidget {
7 | var descriptions =
8 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | return SingleChildScrollView(
13 | padding: EdgeInsets.only(left: 20, right: 20),
14 | child: Container(
15 | child: Column(
16 | crossAxisAlignment: CrossAxisAlignment.start,
17 | children: [
18 | Text(
19 | "Our Team",
20 | style: headerTextStyle,
21 | ),
22 | SizedBox(
23 | height: 20,
24 | ),
25 | Text(
26 | description,
27 | style: bodyTextStyle,
28 | ),
29 | SizedBox(
30 | height: 10,
31 | ),
32 | _itemWidget("Jhon Deo", "assets/avtar1.png", descriptions),
33 | _itemWidget("Jhon Deo", "assets/avtar2.png", descriptions),
34 | _itemWidget("Jhon Deo", "assets/avtar3.png", descriptions),
35 | _itemWidget("Jhon Deo", "assets/avtar4.png", descriptions),
36 | ],
37 | ),
38 | ),
39 | );
40 | }
41 |
42 | Widget _itemWidget(name, image, description) {
43 | return Container(
44 | margin: EdgeInsets.only(top: 10),
45 | padding: EdgeInsets.all(10),
46 | decoration: BoxDecoration(
47 | borderRadius: BorderRadius.all(Radius.circular(10)),
48 | color: cardBGColor,
49 | ),
50 | child: Row(
51 | crossAxisAlignment: CrossAxisAlignment.start,
52 | children: [
53 | Container(
54 | width: 40,
55 | height: 40,
56 | decoration: BoxDecoration(
57 | shape: BoxShape.circle,
58 | ),
59 | child: Image.asset(image),
60 | ),
61 | SizedBox(
62 | width: 5,
63 | ),
64 | Expanded(
65 | child: Container(
66 | child: Column(
67 | crossAxisAlignment: CrossAxisAlignment.start,
68 | children: [
69 | Text(
70 | name,
71 | style: subHeaderTextStyle,
72 | ),
73 | SizedBox(
74 | height: 5,
75 | ),
76 | Text(
77 | description,
78 | style: bodyTextStyle,
79 | ),
80 | ],
81 | ),
82 | ))
83 | ],
84 | ),
85 | );
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/lib/utils/AppColors.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 |
4 | Color backgroundLight = Color(0xffffffff);
5 | Color iconTint = Color(0xff888787);
6 | Color navigationSelectionColor = Color(0xffffc107);
7 | Color cardBGColor = Color(0xfffbfbfb);
8 |
9 |
--------------------------------------------------------------------------------
/lib/utils/AppIcons.dart:
--------------------------------------------------------------------------------
1 | String navHome = "assets/nav_home.svg";
2 | String navContact = "assets/nav_contact.svg";
3 | String navTime = "assets/nav_time.svg";
4 | String navPortfolio = "assets/nav_portfolio.svg";
5 | String navGroup = "assets/nav_group.svg";
6 |
--------------------------------------------------------------------------------
/lib/utils/common_string.dart:
--------------------------------------------------------------------------------
1 | String name = "Bennett\nSebastian";
2 | String designation = "Graphic Designer & Programmer";
3 | String description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
4 |
5 |
6 | String title2 = "Teach Lead At Google";
7 | String title3 = "Computer Science Diploma";
8 |
9 |
10 |
--------------------------------------------------------------------------------
/lib/utils/text_style.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | TextStyle headerTextStyle = new TextStyle(
5 | fontSize: 20, fontWeight: FontWeight.bold, color: Colors.grey[700]);
6 | TextStyle subHeaderTextStyle =
7 | new TextStyle(fontSize: 16, color: Colors.grey[700]);
8 | TextStyle bodyTextStyle = new TextStyle(fontSize: 14, color: Colors.grey);
9 |
--------------------------------------------------------------------------------
/lib/widgets/app_image_widget.dart:
--------------------------------------------------------------------------------
1 | import 'package:cached_network_image/cached_network_image.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | class AppImageWidget extends StatelessWidget {
5 | final String imageUrl;
6 | final double height;
7 | final double width;
8 | final BoxFit fit;
9 |
10 | const AppImageWidget(
11 | {Key key,
12 | @required this.imageUrl,
13 | this.height,
14 | this.width,
15 | this.fit = BoxFit.contain})
16 | : super(key: key);
17 |
18 | @override
19 | Widget build(BuildContext context) {
20 | return Container(
21 | child: (imageUrl.contains("assets"))
22 | ? Container()
23 | : (imageUrl.contains("assets"))
24 | ? Container(
25 | child: Image.asset(
26 | imageUrl,
27 | width: width,
28 | height: height,
29 | fit: fit,
30 | ),
31 | )
32 | : CachedNetworkImage(
33 | imageUrl: imageUrl,
34 | width: width,
35 | height: height,
36 | fit: fit,
37 | placeholder: (context, url) => CircularProgressIndicator(),
38 | errorWidget: (context, url, error) => Icon(Icons.error),
39 | ),
40 | );
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/lib/widgets/app_shimmer_effect.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:shimmer/shimmer.dart';
3 |
4 | /// common shimmer effect widget for display while loading data
5 | class AppShimmer extends StatelessWidget {
6 | final Widget child;
7 |
8 | //shimmer color
9 | static Color shimmerBaseColor = Colors.grey[300];
10 | static Color shimmerHighlightColor = Colors.grey[050];
11 |
12 | const AppShimmer({Key key, @required this.child}) : super(key: key);
13 |
14 | @override
15 | Widget build(BuildContext context) {
16 | return Shimmer.fromColors(
17 | baseColor: shimmerBaseColor,
18 | highlightColor: shimmerHighlightColor,
19 | enabled: true,
20 | child: child,
21 | );
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/lib/widgets/navigation_menu_widget.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutterprofile/utils/AppColors.dart';
3 | import 'package:flutterprofile/widgets/svg_loader.dart';
4 |
5 | Widget NavigationMenu(icon, {isSelected = false, height, width,onClick}) {
6 | return InkWell(
7 | onTap: onClick,
8 | child: Container(
9 | padding: EdgeInsets.all(5),
10 | child: Column(
11 | children: [
12 | svgLoader(icon, height: height, width: width),
13 | Container(
14 | margin: EdgeInsets.all(8),
15 | height: 8,
16 | width: 8,
17 | decoration: BoxDecoration(
18 | borderRadius: BorderRadius.all(Radius.circular(50)),
19 | color: isSelected ? navigationSelectionColor : Colors.transparent,
20 | ),
21 | )
22 | ],
23 | ),
24 | ),
25 | );
26 | }
27 |
--------------------------------------------------------------------------------
/lib/widgets/svg_loader.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 | import 'package:flutter_svg/flutter_svg.dart';
3 | import 'package:flutterprofile/utils/AppColors.dart';
4 |
5 | Widget svgLoader(String image, {width = 20.0, height = 20.0}) {
6 | return SvgPicture.asset(
7 | image,
8 | height: height,
9 | width: width,
10 | color: iconTint,
11 | );
12 | }
13 |
--------------------------------------------------------------------------------
/pubspec.lock:
--------------------------------------------------------------------------------
1 | # Generated by pub
2 | # See https://dart.dev/tools/pub/glossary#lockfile
3 | packages:
4 | async:
5 | dependency: transitive
6 | description:
7 | name: async
8 | url: "https://pub.dartlang.org"
9 | source: hosted
10 | version: "2.6.1"
11 | boolean_selector:
12 | dependency: transitive
13 | description:
14 | name: boolean_selector
15 | url: "https://pub.dartlang.org"
16 | source: hosted
17 | version: "2.1.0"
18 | cached_network_image:
19 | dependency: "direct main"
20 | description:
21 | name: cached_network_image
22 | url: "https://pub.dartlang.org"
23 | source: hosted
24 | version: "3.0.0"
25 | characters:
26 | dependency: transitive
27 | description:
28 | name: characters
29 | url: "https://pub.dartlang.org"
30 | source: hosted
31 | version: "1.1.0"
32 | charcode:
33 | dependency: transitive
34 | description:
35 | name: charcode
36 | url: "https://pub.dartlang.org"
37 | source: hosted
38 | version: "1.2.0"
39 | clock:
40 | dependency: transitive
41 | description:
42 | name: clock
43 | url: "https://pub.dartlang.org"
44 | source: hosted
45 | version: "1.1.0"
46 | collection:
47 | dependency: transitive
48 | description:
49 | name: collection
50 | url: "https://pub.dartlang.org"
51 | source: hosted
52 | version: "1.15.0"
53 | crypto:
54 | dependency: transitive
55 | description:
56 | name: crypto
57 | url: "https://pub.dartlang.org"
58 | source: hosted
59 | version: "3.0.1"
60 | cupertino_icons:
61 | dependency: "direct main"
62 | description:
63 | name: cupertino_icons
64 | url: "https://pub.dartlang.org"
65 | source: hosted
66 | version: "1.0.3"
67 | fake_async:
68 | dependency: transitive
69 | description:
70 | name: fake_async
71 | url: "https://pub.dartlang.org"
72 | source: hosted
73 | version: "1.2.0"
74 | ffi:
75 | dependency: transitive
76 | description:
77 | name: ffi
78 | url: "https://pub.dartlang.org"
79 | source: hosted
80 | version: "1.1.2"
81 | file:
82 | dependency: transitive
83 | description:
84 | name: file
85 | url: "https://pub.dartlang.org"
86 | source: hosted
87 | version: "6.1.2"
88 | firebase_core:
89 | dependency: "direct main"
90 | description:
91 | name: firebase_core
92 | url: "https://pub.dartlang.org"
93 | source: hosted
94 | version: "1.3.0"
95 | firebase_core_platform_interface:
96 | dependency: transitive
97 | description:
98 | name: firebase_core_platform_interface
99 | url: "https://pub.dartlang.org"
100 | source: hosted
101 | version: "4.0.1"
102 | firebase_core_web:
103 | dependency: transitive
104 | description:
105 | name: firebase_core_web
106 | url: "https://pub.dartlang.org"
107 | source: hosted
108 | version: "1.1.0"
109 | firebase_database:
110 | dependency: "direct main"
111 | description:
112 | name: firebase_database
113 | url: "https://pub.dartlang.org"
114 | source: hosted
115 | version: "7.1.1"
116 | flutter:
117 | dependency: "direct main"
118 | description: flutter
119 | source: sdk
120 | version: "0.0.0"
121 | flutter_blurhash:
122 | dependency: transitive
123 | description:
124 | name: flutter_blurhash
125 | url: "https://pub.dartlang.org"
126 | source: hosted
127 | version: "0.6.0"
128 | flutter_cache_manager:
129 | dependency: transitive
130 | description:
131 | name: flutter_cache_manager
132 | url: "https://pub.dartlang.org"
133 | source: hosted
134 | version: "3.1.2"
135 | flutter_svg:
136 | dependency: "direct main"
137 | description:
138 | name: flutter_svg
139 | url: "https://pub.dartlang.org"
140 | source: hosted
141 | version: "0.22.0"
142 | flutter_test:
143 | dependency: "direct dev"
144 | description: flutter
145 | source: sdk
146 | version: "0.0.0"
147 | flutter_web_plugins:
148 | dependency: transitive
149 | description: flutter
150 | source: sdk
151 | version: "0.0.0"
152 | http:
153 | dependency: transitive
154 | description:
155 | name: http
156 | url: "https://pub.dartlang.org"
157 | source: hosted
158 | version: "0.13.3"
159 | http_parser:
160 | dependency: transitive
161 | description:
162 | name: http_parser
163 | url: "https://pub.dartlang.org"
164 | source: hosted
165 | version: "4.0.0"
166 | js:
167 | dependency: transitive
168 | description:
169 | name: js
170 | url: "https://pub.dartlang.org"
171 | source: hosted
172 | version: "0.6.3"
173 | matcher:
174 | dependency: transitive
175 | description:
176 | name: matcher
177 | url: "https://pub.dartlang.org"
178 | source: hosted
179 | version: "0.12.10"
180 | meta:
181 | dependency: transitive
182 | description:
183 | name: meta
184 | url: "https://pub.dartlang.org"
185 | source: hosted
186 | version: "1.3.0"
187 | octo_image:
188 | dependency: transitive
189 | description:
190 | name: octo_image
191 | url: "https://pub.dartlang.org"
192 | source: hosted
193 | version: "1.0.0+1"
194 | path:
195 | dependency: transitive
196 | description:
197 | name: path
198 | url: "https://pub.dartlang.org"
199 | source: hosted
200 | version: "1.8.0"
201 | path_drawing:
202 | dependency: transitive
203 | description:
204 | name: path_drawing
205 | url: "https://pub.dartlang.org"
206 | source: hosted
207 | version: "0.5.1"
208 | path_parsing:
209 | dependency: transitive
210 | description:
211 | name: path_parsing
212 | url: "https://pub.dartlang.org"
213 | source: hosted
214 | version: "0.2.1"
215 | path_provider:
216 | dependency: transitive
217 | description:
218 | name: path_provider
219 | url: "https://pub.dartlang.org"
220 | source: hosted
221 | version: "2.0.2"
222 | path_provider_linux:
223 | dependency: transitive
224 | description:
225 | name: path_provider_linux
226 | url: "https://pub.dartlang.org"
227 | source: hosted
228 | version: "2.0.0"
229 | path_provider_macos:
230 | dependency: transitive
231 | description:
232 | name: path_provider_macos
233 | url: "https://pub.dartlang.org"
234 | source: hosted
235 | version: "2.0.0"
236 | path_provider_platform_interface:
237 | dependency: transitive
238 | description:
239 | name: path_provider_platform_interface
240 | url: "https://pub.dartlang.org"
241 | source: hosted
242 | version: "2.0.1"
243 | path_provider_windows:
244 | dependency: transitive
245 | description:
246 | name: path_provider_windows
247 | url: "https://pub.dartlang.org"
248 | source: hosted
249 | version: "2.0.1"
250 | pedantic:
251 | dependency: transitive
252 | description:
253 | name: pedantic
254 | url: "https://pub.dartlang.org"
255 | source: hosted
256 | version: "1.11.1"
257 | petitparser:
258 | dependency: transitive
259 | description:
260 | name: petitparser
261 | url: "https://pub.dartlang.org"
262 | source: hosted
263 | version: "4.1.0"
264 | platform:
265 | dependency: transitive
266 | description:
267 | name: platform
268 | url: "https://pub.dartlang.org"
269 | source: hosted
270 | version: "3.0.0"
271 | plugin_platform_interface:
272 | dependency: transitive
273 | description:
274 | name: plugin_platform_interface
275 | url: "https://pub.dartlang.org"
276 | source: hosted
277 | version: "2.0.0"
278 | process:
279 | dependency: transitive
280 | description:
281 | name: process
282 | url: "https://pub.dartlang.org"
283 | source: hosted
284 | version: "4.2.1"
285 | rxdart:
286 | dependency: transitive
287 | description:
288 | name: rxdart
289 | url: "https://pub.dartlang.org"
290 | source: hosted
291 | version: "0.27.1"
292 | shimmer:
293 | dependency: "direct main"
294 | description:
295 | name: shimmer
296 | url: "https://pub.dartlang.org"
297 | source: hosted
298 | version: "2.0.0"
299 | sky_engine:
300 | dependency: transitive
301 | description: flutter
302 | source: sdk
303 | version: "0.0.99"
304 | source_span:
305 | dependency: transitive
306 | description:
307 | name: source_span
308 | url: "https://pub.dartlang.org"
309 | source: hosted
310 | version: "1.8.1"
311 | sqflite:
312 | dependency: transitive
313 | description:
314 | name: sqflite
315 | url: "https://pub.dartlang.org"
316 | source: hosted
317 | version: "2.0.0+3"
318 | sqflite_common:
319 | dependency: transitive
320 | description:
321 | name: sqflite_common
322 | url: "https://pub.dartlang.org"
323 | source: hosted
324 | version: "2.0.0+2"
325 | stack_trace:
326 | dependency: transitive
327 | description:
328 | name: stack_trace
329 | url: "https://pub.dartlang.org"
330 | source: hosted
331 | version: "1.10.0"
332 | stream_channel:
333 | dependency: transitive
334 | description:
335 | name: stream_channel
336 | url: "https://pub.dartlang.org"
337 | source: hosted
338 | version: "2.1.0"
339 | string_scanner:
340 | dependency: transitive
341 | description:
342 | name: string_scanner
343 | url: "https://pub.dartlang.org"
344 | source: hosted
345 | version: "1.1.0"
346 | synchronized:
347 | dependency: transitive
348 | description:
349 | name: synchronized
350 | url: "https://pub.dartlang.org"
351 | source: hosted
352 | version: "3.0.0"
353 | term_glyph:
354 | dependency: transitive
355 | description:
356 | name: term_glyph
357 | url: "https://pub.dartlang.org"
358 | source: hosted
359 | version: "1.2.0"
360 | test_api:
361 | dependency: transitive
362 | description:
363 | name: test_api
364 | url: "https://pub.dartlang.org"
365 | source: hosted
366 | version: "0.3.0"
367 | typed_data:
368 | dependency: transitive
369 | description:
370 | name: typed_data
371 | url: "https://pub.dartlang.org"
372 | source: hosted
373 | version: "1.3.0"
374 | uuid:
375 | dependency: transitive
376 | description:
377 | name: uuid
378 | url: "https://pub.dartlang.org"
379 | source: hosted
380 | version: "3.0.4"
381 | vector_math:
382 | dependency: transitive
383 | description:
384 | name: vector_math
385 | url: "https://pub.dartlang.org"
386 | source: hosted
387 | version: "2.1.0"
388 | win32:
389 | dependency: transitive
390 | description:
391 | name: win32
392 | url: "https://pub.dartlang.org"
393 | source: hosted
394 | version: "2.2.5"
395 | xdg_directories:
396 | dependency: transitive
397 | description:
398 | name: xdg_directories
399 | url: "https://pub.dartlang.org"
400 | source: hosted
401 | version: "0.2.0"
402 | xml:
403 | dependency: transitive
404 | description:
405 | name: xml
406 | url: "https://pub.dartlang.org"
407 | source: hosted
408 | version: "5.1.2"
409 | sdks:
410 | dart: ">=2.13.0 <3.0.0"
411 | flutter: ">=1.24.0-10.2.pre"
412 |
--------------------------------------------------------------------------------
/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: flutterprofile
2 | description: A new Flutter application.
3 |
4 | # The following line prevents the package from being accidentally published to
5 | # pub.dev using `pub publish`. This is preferred for private packages.
6 | publish_to: 'none' # Remove this line if you wish to publish to pub.dev
7 |
8 | # The following defines the version and build number for your application.
9 | # A version number is three numbers separated by dots, like 1.2.43
10 | # followed by an optional build number separated by a +.
11 | # Both the version and the builder number may be overridden in flutter
12 | # build by specifying --build-name and --build-number, respectively.
13 | # In Android, build-name is used as versionName while build-number used as versionCode.
14 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning
15 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
16 | # Read more about iOS versioning at
17 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
18 | version: 1.0.0+1
19 |
20 | environment:
21 | sdk: ">=2.7.0 <3.0.0"
22 |
23 | dependencies:
24 | flutter:
25 | sdk: flutter
26 |
27 |
28 | # The following adds the Cupertino Icons font to your application.
29 | # Use with the CupertinoIcons class for iOS style icons.
30 | cupertino_icons: ^1.0.3
31 | flutter_svg: ^0.22.0
32 | firebase_database: ^7.1.1
33 | firebase_core: ^1.3.0
34 | shimmer: any
35 | cached_network_image: ^3.0.0
36 |
37 | dev_dependencies:
38 | flutter_test:
39 | sdk: flutter
40 |
41 | # For information on the generic Dart part of this file, see the
42 | # following page: https://dart.dev/tools/pub/pubspec
43 |
44 | # The following section is specific to Flutter.
45 | flutter:
46 |
47 | # The following line ensures that the Material Icons font is
48 | # included with your application, so that you can use the icons in
49 | # the material Icons class.
50 | uses-material-design: true
51 |
52 | # To add assets to your application, add an assets section, like this:
53 | assets:
54 | - assets/
55 | # - images/a_dot_ham.jpeg
56 |
57 | # An image asset can refer to one or more resolution-specific "variants", see
58 | # https://flutter.dev/assets-and-images/#resolution-aware.
59 |
60 | # For details regarding adding assets from package dependencies, see
61 | # https://flutter.dev/assets-and-images/#from-packages
62 |
63 | # To add custom fonts to your application, add a fonts section here,
64 | # in this "flutter" section. Each entry in this list should have a
65 | # "family" key with the font family name, and a "fonts" key with a
66 | # list giving the asset and other descriptors for the font. For
67 | # example:
68 | # fonts:
69 | # - family: Schyler
70 | # fonts:
71 | # - asset: fonts/Schyler-Regular.ttf
72 | # - asset: fonts/Schyler-Italic.ttf
73 | # style: italic
74 | # - family: Trajan Pro
75 | # fonts:
76 | # - asset: fonts/TrajanPro.ttf
77 | # - asset: fonts/TrajanPro_Bold.ttf
78 | # weight: 700
79 | #
80 | # For details regarding fonts from package dependencies,
81 | # see https://flutter.dev/custom-fonts/#from-packages
82 |
--------------------------------------------------------------------------------
/test/widget_test.dart:
--------------------------------------------------------------------------------
1 | // This is a basic Flutter widget test.
2 | //
3 | // To perform an interaction with a widget in your test, use the WidgetTester
4 | // utility that Flutter provides. For example, you can send tap and scroll
5 | // gestures. You can also use WidgetTester to find child widgets in the widget
6 | // tree, read text, and verify that the values of widget properties are correct.
7 |
8 | import 'package:flutter/material.dart';
9 | import 'package:flutter_test/flutter_test.dart';
10 |
11 | import 'package:flutterprofile/main.dart';
12 |
13 | void main() {
14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async {
15 | // Build our app and trigger a frame.
16 | await tester.pumpWidget(MyApp());
17 |
18 | // Verify that our counter starts at 0.
19 | expect(find.text('0'), findsOneWidget);
20 | expect(find.text('1'), findsNothing);
21 |
22 | // Tap the '+' icon and trigger a frame.
23 | await tester.tap(find.byIcon(Icons.add));
24 | await tester.pump();
25 |
26 | // Verify that our counter has incremented.
27 | expect(find.text('0'), findsNothing);
28 | expect(find.text('1'), findsOneWidget);
29 | });
30 | }
31 |
--------------------------------------------------------------------------------
/web/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/web/favicon.png
--------------------------------------------------------------------------------
/web/icons/Icon-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/web/icons/Icon-192.png
--------------------------------------------------------------------------------
/web/icons/Icon-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ravi84184/Build-an-CV-Portfolio-Minimal-App-Flutter-Tutorial/d64acde1b8bfef6f6384c5230200f00253bf7d1e/web/icons/Icon-512.png
--------------------------------------------------------------------------------
/web/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | flutterprofile
18 |
19 |
20 |
21 |
24 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/web/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "flutterprofile",
3 | "short_name": "flutterprofile",
4 | "start_url": ".",
5 | "display": "minimal-ui",
6 | "background_color": "#0175C2",
7 | "theme_color": "#0175C2",
8 | "description": "A new Flutter application.",
9 | "orientation": "portrait-primary",
10 | "prefer_related_applications": false,
11 | "icons": [
12 | {
13 | "src": "icons/Icon-192.png",
14 | "sizes": "192x192",
15 | "type": "image/png"
16 | },
17 | {
18 | "src": "icons/Icon-512.png",
19 | "sizes": "512x512",
20 | "type": "image/png"
21 | }
22 | ]
23 | }
24 |
--------------------------------------------------------------------------------