├── .gitignore ├── .metadata ├── LICENSE ├── README.md ├── Screenshots ├── Course.gif ├── Fitness.png ├── Profile.gif └── Tourism.gif ├── android ├── app │ ├── build.gradle │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── kotlin │ │ │ └── com │ │ │ │ └── jetlightstudio │ │ │ │ └── flutter_design_showcase │ │ │ │ └── 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 ├── images ├── duda.jpg ├── dude1.jpg ├── dude2.jpg ├── instructor.png ├── oran.jpg └── pewds.jpg ├── ios ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ └── Release.xcconfig ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ └── contents.xcworkspacedata └── 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 ├── CoursesScene │ ├── Course.dart │ ├── CourseCard.dart │ └── courses_scene.dart ├── FitnessScene │ ├── chart_brain.dart │ ├── fitness_scene.dart │ └── statistic_chart_model.dart ├── WeatherScene │ ├── ApiToolBox.dart │ └── weather_scene.dart ├── main.dart ├── profile_scene.dart └── tourism_scene.dart ├── pubspec.lock └── pubspec.yaml /.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 | .packages 28 | .pub-cache/ 29 | .pub/ 30 | /build/ 31 | 32 | # Android related 33 | **/android/**/gradle-wrapper.jar 34 | **/android/.gradle 35 | **/android/captures/ 36 | **/android/gradlew 37 | **/android/gradlew.bat 38 | **/android/local.properties 39 | **/android/**/GeneratedPluginRegistrant.java 40 | 41 | # iOS/XCode related 42 | **/ios/**/*.mode1v3 43 | **/ios/**/*.mode2v3 44 | **/ios/**/*.moved-aside 45 | **/ios/**/*.pbxuser 46 | **/ios/**/*.perspectivev3 47 | **/ios/**/*sync/ 48 | **/ios/**/.sconsign.dblite 49 | **/ios/**/.tags* 50 | **/ios/**/.vagrant/ 51 | **/ios/**/DerivedData/ 52 | **/ios/**/Icon? 53 | **/ios/**/Pods/ 54 | **/ios/**/.symlinks/ 55 | **/ios/**/profile 56 | **/ios/**/xcuserdata 57 | **/ios/.generated/ 58 | **/ios/Flutter/App.framework 59 | **/ios/Flutter/Flutter.framework 60 | **/ios/Flutter/Generated.xcconfig 61 | **/ios/Flutter/app.flx 62 | **/ios/Flutter/app.zip 63 | **/ios/Flutter/flutter_assets/ 64 | **/ios/Flutter/flutter_export_environment.sh 65 | **/ios/ServiceDefinitions.json 66 | **/ios/Runner/GeneratedPluginRegistrant.* 67 | 68 | # Exceptions to above rules. 69 | !**/ios/**/default.mode1v3 70 | !**/ios/**/default.mode2v3 71 | !**/ios/**/default.pbxuser 72 | !**/ios/**/default.perspectivev3 73 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 74 | -------------------------------------------------------------------------------- /.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: 1aedbb1835bd6eb44550293d57d4d124f19901f0 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Oussama Bonnor 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Flutter Design Showcase 2 | 3 | ![GitHub license](https://img.shields.io/github/license/oussamabonnor1/JetConverter.svg) 4 | ![Jetlight studio](https://img.shields.io/badge/Made%20by-Jetlight%20studio-blue.svg?color=082544) 5 | 6 | ## Description: 7 | These are the small pages and scenes i made while exploring flutter. After this, i decided to keep exploring flutter but in more profound ways which requires seperated projects. 8 | 9 | ## Tools & languages: 10 | * Android Studio (IDE). 11 | * Dart (Logic & Design). 12 | * Flutter (Mobile UI developement kit). 13 | * Paint.Net (Image editting). 14 | 15 | ## Screenshots: 16 | ![Profile Scene](Screenshots/Profile.gif) ![Tourism Scene](Screenshots/Tourism.gif) 17 | 18 | ![Course Scene](Screenshots/Course.gif) 19 | 20 | ## Contribution: 21 | Feel free to `fork` this project and add whatever you like. If you have any suggestions or any comments please feel free to contact me or to open an issue, use free license art assets please. 22 | 23 | ## Team: 24 | [Jetlighters](https://github.com/JetLightStudio) having fun. 25 | -------------------------------------------------------------------------------- /Screenshots/Course.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/Screenshots/Course.gif -------------------------------------------------------------------------------- /Screenshots/Fitness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/Screenshots/Fitness.png -------------------------------------------------------------------------------- /Screenshots/Profile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/Screenshots/Profile.gif -------------------------------------------------------------------------------- /Screenshots/Tourism.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/Screenshots/Tourism.gif -------------------------------------------------------------------------------- /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 | 28 | android { 29 | compileSdkVersion 28 30 | 31 | sourceSets { 32 | main.java.srcDirs += 'src/main/kotlin' 33 | } 34 | 35 | lintOptions { 36 | disable 'InvalidPackage' 37 | } 38 | 39 | defaultConfig { 40 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 41 | applicationId "com.jetlightstudio.flutter_design_showcase" 42 | minSdkVersion 16 43 | targetSdkVersion 28 44 | versionCode flutterVersionCode.toInteger() 45 | versionName flutterVersionName 46 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 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 | testImplementation 'junit:junit:4.12' 65 | androidTestImplementation 'com.android.support.test:runner:1.0.2' 66 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' 67 | } 68 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 9 | 13 | 20 | 24 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /android/app/src/main/kotlin/com/jetlightstudio/flutter_design_showcase/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.jetlightstudio.flutter_design_showcase 2 | 3 | import android.os.Bundle 4 | 5 | import io.flutter.app.FlutterActivity 6 | import io.flutter.plugins.GeneratedPluginRegistrant 7 | 8 | class MainActivity: FlutterActivity() { 9 | override fun onCreate(savedInstanceState: Bundle?) { 10 | super.onCreate(savedInstanceState) 11 | GeneratedPluginRegistrant.registerWith(this) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /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/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.2.71' 3 | repositories { 4 | google() 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:3.2.1' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | jcenter() 18 | } 19 | } 20 | 21 | rootProject.buildDir = '../build' 22 | subprojects { 23 | project.buildDir = "${rootProject.buildDir}/${project.name}" 24 | } 25 | subprojects { 26 | project.evaluationDependsOn(':app') 27 | } 28 | 29 | task clean(type: Delete) { 30 | delete rootProject.buildDir 31 | } 32 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | 3 | -------------------------------------------------------------------------------- /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-4.10.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 | -------------------------------------------------------------------------------- /images/duda.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/images/duda.jpg -------------------------------------------------------------------------------- /images/dude1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/images/dude1.jpg -------------------------------------------------------------------------------- /images/dude2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/images/dude2.jpg -------------------------------------------------------------------------------- /images/instructor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/images/instructor.png -------------------------------------------------------------------------------- /images/oran.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/images/oran.jpg -------------------------------------------------------------------------------- /images/pewds.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/images/pewds.jpg -------------------------------------------------------------------------------- /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 "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /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 | 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; 13 | 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 14 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 15 | 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; 16 | 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 17 | 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; }; 18 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 19 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 20 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 21 | /* End PBXBuildFile section */ 22 | 23 | /* Begin PBXCopyFilesBuildPhase section */ 24 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = { 25 | isa = PBXCopyFilesBuildPhase; 26 | buildActionMask = 2147483647; 27 | dstPath = ""; 28 | dstSubfolderSpec = 10; 29 | files = ( 30 | 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */, 31 | 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */, 32 | ); 33 | name = "Embed Frameworks"; 34 | runOnlyForDeploymentPostprocessing = 0; 35 | }; 36 | /* End PBXCopyFilesBuildPhase section */ 37 | 38 | /* Begin PBXFileReference section */ 39 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 40 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 41 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 42 | 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; 43 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 44 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 45 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 46 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 47 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 48 | 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; }; 49 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 50 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 51 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 52 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 53 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 54 | /* End PBXFileReference section */ 55 | 56 | /* Begin PBXFrameworksBuildPhase section */ 57 | 97C146EB1CF9000F007C117D /* Frameworks */ = { 58 | isa = PBXFrameworksBuildPhase; 59 | buildActionMask = 2147483647; 60 | files = ( 61 | 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, 62 | 3B80C3941E831B6300D905FE /* App.framework in Frameworks */, 63 | ); 64 | runOnlyForDeploymentPostprocessing = 0; 65 | }; 66 | /* End PBXFrameworksBuildPhase section */ 67 | 68 | /* Begin PBXGroup section */ 69 | 9740EEB11CF90186004384FC /* Flutter */ = { 70 | isa = PBXGroup; 71 | children = ( 72 | 3B80C3931E831B6300D905FE /* App.framework */, 73 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 74 | 9740EEBA1CF902C7004384FC /* Flutter.framework */, 75 | 9740EEB21CF90195004384FC /* Debug.xcconfig */, 76 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 77 | 9740EEB31CF90195004384FC /* Generated.xcconfig */, 78 | ); 79 | name = Flutter; 80 | sourceTree = ""; 81 | }; 82 | 97C146E51CF9000F007C117D = { 83 | isa = PBXGroup; 84 | children = ( 85 | 9740EEB11CF90186004384FC /* Flutter */, 86 | 97C146F01CF9000F007C117D /* Runner */, 87 | 97C146EF1CF9000F007C117D /* Products */, 88 | ); 89 | sourceTree = ""; 90 | }; 91 | 97C146EF1CF9000F007C117D /* Products */ = { 92 | isa = PBXGroup; 93 | children = ( 94 | 97C146EE1CF9000F007C117D /* Runner.app */, 95 | ); 96 | name = Products; 97 | sourceTree = ""; 98 | }; 99 | 97C146F01CF9000F007C117D /* Runner */ = { 100 | isa = PBXGroup; 101 | children = ( 102 | 97C146FA1CF9000F007C117D /* Main.storyboard */, 103 | 97C146FD1CF9000F007C117D /* Assets.xcassets */, 104 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 105 | 97C147021CF9000F007C117D /* Info.plist */, 106 | 97C146F11CF9000F007C117D /* Supporting Files */, 107 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 108 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 109 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, 110 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, 111 | ); 112 | path = Runner; 113 | sourceTree = ""; 114 | }; 115 | 97C146F11CF9000F007C117D /* Supporting Files */ = { 116 | isa = PBXGroup; 117 | children = ( 118 | ); 119 | name = "Supporting Files"; 120 | sourceTree = ""; 121 | }; 122 | /* End PBXGroup section */ 123 | 124 | /* Begin PBXNativeTarget section */ 125 | 97C146ED1CF9000F007C117D /* Runner */ = { 126 | isa = PBXNativeTarget; 127 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; 128 | buildPhases = ( 129 | 9740EEB61CF901F6004384FC /* Run Script */, 130 | 97C146EA1CF9000F007C117D /* Sources */, 131 | 97C146EB1CF9000F007C117D /* Frameworks */, 132 | 97C146EC1CF9000F007C117D /* Resources */, 133 | 9705A1C41CF9048500538489 /* Embed Frameworks */, 134 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 135 | ); 136 | buildRules = ( 137 | ); 138 | dependencies = ( 139 | ); 140 | name = Runner; 141 | productName = Runner; 142 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */; 143 | productType = "com.apple.product-type.application"; 144 | }; 145 | /* End PBXNativeTarget section */ 146 | 147 | /* Begin PBXProject section */ 148 | 97C146E61CF9000F007C117D /* Project object */ = { 149 | isa = PBXProject; 150 | attributes = { 151 | LastUpgradeCheck = 1020; 152 | ORGANIZATIONNAME = "The Chromium Authors"; 153 | TargetAttributes = { 154 | 97C146ED1CF9000F007C117D = { 155 | CreatedOnToolsVersion = 7.3.1; 156 | LastSwiftMigration = 0910; 157 | }; 158 | }; 159 | }; 160 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; 161 | compatibilityVersion = "Xcode 3.2"; 162 | developmentRegion = en; 163 | hasScannedForEncodings = 0; 164 | knownRegions = ( 165 | en, 166 | Base, 167 | ); 168 | mainGroup = 97C146E51CF9000F007C117D; 169 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */; 170 | projectDirPath = ""; 171 | projectRoot = ""; 172 | targets = ( 173 | 97C146ED1CF9000F007C117D /* Runner */, 174 | ); 175 | }; 176 | /* End PBXProject section */ 177 | 178 | /* Begin PBXResourcesBuildPhase section */ 179 | 97C146EC1CF9000F007C117D /* Resources */ = { 180 | isa = PBXResourcesBuildPhase; 181 | buildActionMask = 2147483647; 182 | files = ( 183 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 184 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 185 | 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */, 186 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 187 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, 188 | ); 189 | runOnlyForDeploymentPostprocessing = 0; 190 | }; 191 | /* End PBXResourcesBuildPhase section */ 192 | 193 | /* Begin PBXShellScriptBuildPhase section */ 194 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 195 | isa = PBXShellScriptBuildPhase; 196 | buildActionMask = 2147483647; 197 | files = ( 198 | ); 199 | inputPaths = ( 200 | ); 201 | name = "Thin Binary"; 202 | outputPaths = ( 203 | ); 204 | runOnlyForDeploymentPostprocessing = 0; 205 | shellPath = /bin/sh; 206 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin"; 207 | }; 208 | 9740EEB61CF901F6004384FC /* Run Script */ = { 209 | isa = PBXShellScriptBuildPhase; 210 | buildActionMask = 2147483647; 211 | files = ( 212 | ); 213 | inputPaths = ( 214 | ); 215 | name = "Run Script"; 216 | outputPaths = ( 217 | ); 218 | runOnlyForDeploymentPostprocessing = 0; 219 | shellPath = /bin/sh; 220 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; 221 | }; 222 | /* End PBXShellScriptBuildPhase section */ 223 | 224 | /* Begin PBXSourcesBuildPhase section */ 225 | 97C146EA1CF9000F007C117D /* Sources */ = { 226 | isa = PBXSourcesBuildPhase; 227 | buildActionMask = 2147483647; 228 | files = ( 229 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, 230 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, 231 | ); 232 | runOnlyForDeploymentPostprocessing = 0; 233 | }; 234 | /* End PBXSourcesBuildPhase section */ 235 | 236 | /* Begin PBXVariantGroup section */ 237 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = { 238 | isa = PBXVariantGroup; 239 | children = ( 240 | 97C146FB1CF9000F007C117D /* Base */, 241 | ); 242 | name = Main.storyboard; 243 | sourceTree = ""; 244 | }; 245 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { 246 | isa = PBXVariantGroup; 247 | children = ( 248 | 97C147001CF9000F007C117D /* Base */, 249 | ); 250 | name = LaunchScreen.storyboard; 251 | sourceTree = ""; 252 | }; 253 | /* End PBXVariantGroup section */ 254 | 255 | /* Begin XCBuildConfiguration section */ 256 | 249021D3217E4FDB00AE95B9 /* Profile */ = { 257 | isa = XCBuildConfiguration; 258 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 259 | buildSettings = { 260 | ALWAYS_SEARCH_USER_PATHS = NO; 261 | CLANG_ANALYZER_NONNULL = YES; 262 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 263 | CLANG_CXX_LIBRARY = "libc++"; 264 | CLANG_ENABLE_MODULES = YES; 265 | CLANG_ENABLE_OBJC_ARC = YES; 266 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 267 | CLANG_WARN_BOOL_CONVERSION = YES; 268 | CLANG_WARN_COMMA = YES; 269 | CLANG_WARN_CONSTANT_CONVERSION = YES; 270 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 271 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 272 | CLANG_WARN_EMPTY_BODY = YES; 273 | CLANG_WARN_ENUM_CONVERSION = YES; 274 | CLANG_WARN_INFINITE_RECURSION = YES; 275 | CLANG_WARN_INT_CONVERSION = YES; 276 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 277 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 278 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 279 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 280 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 281 | CLANG_WARN_STRICT_PROTOTYPES = YES; 282 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 283 | CLANG_WARN_UNREACHABLE_CODE = YES; 284 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 285 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 286 | COPY_PHASE_STRIP = NO; 287 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 288 | ENABLE_NS_ASSERTIONS = NO; 289 | ENABLE_STRICT_OBJC_MSGSEND = YES; 290 | GCC_C_LANGUAGE_STANDARD = gnu99; 291 | GCC_NO_COMMON_BLOCKS = YES; 292 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 293 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 294 | GCC_WARN_UNDECLARED_SELECTOR = YES; 295 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 296 | GCC_WARN_UNUSED_FUNCTION = YES; 297 | GCC_WARN_UNUSED_VARIABLE = YES; 298 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 299 | MTL_ENABLE_DEBUG_INFO = NO; 300 | SDKROOT = iphoneos; 301 | TARGETED_DEVICE_FAMILY = "1,2"; 302 | VALIDATE_PRODUCT = YES; 303 | }; 304 | name = Profile; 305 | }; 306 | 249021D4217E4FDB00AE95B9 /* Profile */ = { 307 | isa = XCBuildConfiguration; 308 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 309 | buildSettings = { 310 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 311 | CLANG_ENABLE_MODULES = YES; 312 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 313 | ENABLE_BITCODE = NO; 314 | FRAMEWORK_SEARCH_PATHS = ( 315 | "$(inherited)", 316 | "$(PROJECT_DIR)/Flutter", 317 | ); 318 | INFOPLIST_FILE = Runner/Info.plist; 319 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 320 | LIBRARY_SEARCH_PATHS = ( 321 | "$(inherited)", 322 | "$(PROJECT_DIR)/Flutter", 323 | ); 324 | PRODUCT_BUNDLE_IDENTIFIER = com.jetlightstudio.flutterDesignShowcase; 325 | PRODUCT_NAME = "$(TARGET_NAME)"; 326 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 327 | SWIFT_VERSION = 4.0; 328 | VERSIONING_SYSTEM = "apple-generic"; 329 | }; 330 | name = Profile; 331 | }; 332 | 97C147031CF9000F007C117D /* Debug */ = { 333 | isa = XCBuildConfiguration; 334 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 335 | buildSettings = { 336 | ALWAYS_SEARCH_USER_PATHS = NO; 337 | CLANG_ANALYZER_NONNULL = YES; 338 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 339 | CLANG_CXX_LIBRARY = "libc++"; 340 | CLANG_ENABLE_MODULES = YES; 341 | CLANG_ENABLE_OBJC_ARC = YES; 342 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 343 | CLANG_WARN_BOOL_CONVERSION = YES; 344 | CLANG_WARN_COMMA = YES; 345 | CLANG_WARN_CONSTANT_CONVERSION = YES; 346 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 347 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 348 | CLANG_WARN_EMPTY_BODY = YES; 349 | CLANG_WARN_ENUM_CONVERSION = YES; 350 | CLANG_WARN_INFINITE_RECURSION = YES; 351 | CLANG_WARN_INT_CONVERSION = YES; 352 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 353 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 354 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 355 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 356 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 357 | CLANG_WARN_STRICT_PROTOTYPES = YES; 358 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 359 | CLANG_WARN_UNREACHABLE_CODE = YES; 360 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 361 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 362 | COPY_PHASE_STRIP = NO; 363 | DEBUG_INFORMATION_FORMAT = dwarf; 364 | ENABLE_STRICT_OBJC_MSGSEND = YES; 365 | ENABLE_TESTABILITY = YES; 366 | GCC_C_LANGUAGE_STANDARD = gnu99; 367 | GCC_DYNAMIC_NO_PIC = NO; 368 | GCC_NO_COMMON_BLOCKS = YES; 369 | GCC_OPTIMIZATION_LEVEL = 0; 370 | GCC_PREPROCESSOR_DEFINITIONS = ( 371 | "DEBUG=1", 372 | "$(inherited)", 373 | ); 374 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 375 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 376 | GCC_WARN_UNDECLARED_SELECTOR = YES; 377 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 378 | GCC_WARN_UNUSED_FUNCTION = YES; 379 | GCC_WARN_UNUSED_VARIABLE = YES; 380 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 381 | MTL_ENABLE_DEBUG_INFO = YES; 382 | ONLY_ACTIVE_ARCH = YES; 383 | SDKROOT = iphoneos; 384 | TARGETED_DEVICE_FAMILY = "1,2"; 385 | }; 386 | name = Debug; 387 | }; 388 | 97C147041CF9000F007C117D /* Release */ = { 389 | isa = XCBuildConfiguration; 390 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 391 | buildSettings = { 392 | ALWAYS_SEARCH_USER_PATHS = NO; 393 | CLANG_ANALYZER_NONNULL = YES; 394 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 395 | CLANG_CXX_LIBRARY = "libc++"; 396 | CLANG_ENABLE_MODULES = YES; 397 | CLANG_ENABLE_OBJC_ARC = YES; 398 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 399 | CLANG_WARN_BOOL_CONVERSION = YES; 400 | CLANG_WARN_COMMA = YES; 401 | CLANG_WARN_CONSTANT_CONVERSION = YES; 402 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 403 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 404 | CLANG_WARN_EMPTY_BODY = YES; 405 | CLANG_WARN_ENUM_CONVERSION = YES; 406 | CLANG_WARN_INFINITE_RECURSION = YES; 407 | CLANG_WARN_INT_CONVERSION = YES; 408 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 409 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 410 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 411 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 412 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 413 | CLANG_WARN_STRICT_PROTOTYPES = YES; 414 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 415 | CLANG_WARN_UNREACHABLE_CODE = YES; 416 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 417 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 418 | COPY_PHASE_STRIP = NO; 419 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 420 | ENABLE_NS_ASSERTIONS = NO; 421 | ENABLE_STRICT_OBJC_MSGSEND = YES; 422 | GCC_C_LANGUAGE_STANDARD = gnu99; 423 | GCC_NO_COMMON_BLOCKS = YES; 424 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 425 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 426 | GCC_WARN_UNDECLARED_SELECTOR = YES; 427 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 428 | GCC_WARN_UNUSED_FUNCTION = YES; 429 | GCC_WARN_UNUSED_VARIABLE = YES; 430 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 431 | MTL_ENABLE_DEBUG_INFO = NO; 432 | SDKROOT = iphoneos; 433 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 434 | TARGETED_DEVICE_FAMILY = "1,2"; 435 | VALIDATE_PRODUCT = YES; 436 | }; 437 | name = Release; 438 | }; 439 | 97C147061CF9000F007C117D /* Debug */ = { 440 | isa = XCBuildConfiguration; 441 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 442 | buildSettings = { 443 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 444 | CLANG_ENABLE_MODULES = YES; 445 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 446 | ENABLE_BITCODE = NO; 447 | FRAMEWORK_SEARCH_PATHS = ( 448 | "$(inherited)", 449 | "$(PROJECT_DIR)/Flutter", 450 | ); 451 | INFOPLIST_FILE = Runner/Info.plist; 452 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 453 | LIBRARY_SEARCH_PATHS = ( 454 | "$(inherited)", 455 | "$(PROJECT_DIR)/Flutter", 456 | ); 457 | PRODUCT_BUNDLE_IDENTIFIER = com.jetlightstudio.flutterDesignShowcase; 458 | PRODUCT_NAME = "$(TARGET_NAME)"; 459 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 460 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 461 | SWIFT_VERSION = 4.0; 462 | VERSIONING_SYSTEM = "apple-generic"; 463 | }; 464 | name = Debug; 465 | }; 466 | 97C147071CF9000F007C117D /* Release */ = { 467 | isa = XCBuildConfiguration; 468 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 469 | buildSettings = { 470 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 471 | CLANG_ENABLE_MODULES = YES; 472 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 473 | ENABLE_BITCODE = NO; 474 | FRAMEWORK_SEARCH_PATHS = ( 475 | "$(inherited)", 476 | "$(PROJECT_DIR)/Flutter", 477 | ); 478 | INFOPLIST_FILE = Runner/Info.plist; 479 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 480 | LIBRARY_SEARCH_PATHS = ( 481 | "$(inherited)", 482 | "$(PROJECT_DIR)/Flutter", 483 | ); 484 | PRODUCT_BUNDLE_IDENTIFIER = com.jetlightstudio.flutterDesignShowcase; 485 | PRODUCT_NAME = "$(TARGET_NAME)"; 486 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 487 | SWIFT_VERSION = 4.0; 488 | VERSIONING_SYSTEM = "apple-generic"; 489 | }; 490 | name = Release; 491 | }; 492 | /* End XCBuildConfiguration section */ 493 | 494 | /* Begin XCConfigurationList section */ 495 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { 496 | isa = XCConfigurationList; 497 | buildConfigurations = ( 498 | 97C147031CF9000F007C117D /* Debug */, 499 | 97C147041CF9000F007C117D /* Release */, 500 | 249021D3217E4FDB00AE95B9 /* Profile */, 501 | ); 502 | defaultConfigurationIsVisible = 0; 503 | defaultConfigurationName = Release; 504 | }; 505 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { 506 | isa = XCConfigurationList; 507 | buildConfigurations = ( 508 | 97C147061CF9000F007C117D /* Debug */, 509 | 97C147071CF9000F007C117D /* Release */, 510 | 249021D4217E4FDB00AE95B9 /* Profile */, 511 | ); 512 | defaultConfigurationIsVisible = 0; 513 | defaultConfigurationName = Release; 514 | }; 515 | /* End XCConfigurationList section */ 516 | 517 | }; 518 | rootObject = 97C146E61CF9000F007C117D /* Project object */; 519 | } 520 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /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/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/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/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/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/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/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/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/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/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/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/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/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/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/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/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/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/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/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/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/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/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/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/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/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/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/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/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/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/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/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/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/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussamabonnor1/flutter_design_showcase/46d381837ec1fbdf604ab94ae3405bbc5a1f8f2a/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 | flutter_design_showcase 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" -------------------------------------------------------------------------------- /lib/CoursesScene/Course.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | 3 | class Course{ 4 | String course; 5 | String teacher; 6 | String teacherImage; 7 | String date; 8 | Color color; 9 | bool liked; 10 | 11 | Course({this.course, this.teacher, this.date, this.color, this.teacherImage, this.liked}); 12 | } -------------------------------------------------------------------------------- /lib/CoursesScene/CourseCard.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import 'Course.dart'; 4 | 5 | class CourseCard extends StatefulWidget { 6 | final Course course; 7 | final Function delete; 8 | 9 | const CourseCard({this.course, this.delete}); 10 | 11 | @override 12 | _CourseCardState createState() => _CourseCardState(); 13 | } 14 | 15 | class _CourseCardState extends State { 16 | @override 17 | Widget build(BuildContext context) { 18 | return Container( 19 | width: 275, 20 | child: Card( 21 | semanticContainer: true, 22 | clipBehavior: Clip.antiAliasWithSaveLayer, 23 | shape: RoundedRectangleBorder( 24 | borderRadius: BorderRadius.circular(50), 25 | ), 26 | margin: EdgeInsets.fromLTRB(10, 10, 10, 10), 27 | child: Stack( 28 | fit: StackFit.expand, 29 | children: [ 30 | Image( 31 | image: AssetImage(widget.course.teacherImage), 32 | fit: BoxFit.cover, 33 | ), 34 | Padding( 35 | padding: const EdgeInsets.fromLTRB(20, 16, 16, 20), 36 | child: Row( 37 | crossAxisAlignment: CrossAxisAlignment.start, 38 | mainAxisAlignment: MainAxisAlignment.start, 39 | children: [ 40 | IconButton( 41 | icon: Icon( 42 | Icons.favorite, 43 | color: widget.course.liked 44 | ? Colors.redAccent 45 | : Colors.grey[400], 46 | size: 30, 47 | ), 48 | onPressed: () { 49 | setState(() { 50 | widget.course.liked = !widget.course.liked; 51 | }); 52 | }, 53 | ), 54 | ], 55 | ), 56 | ), 57 | Column( 58 | mainAxisAlignment: MainAxisAlignment.end, 59 | children: [ 60 | Center( 61 | child: Text( 62 | widget.course.course, 63 | style: TextStyle( 64 | fontSize: 22, 65 | color: Colors.white, 66 | fontWeight: FontWeight.bold, 67 | ), 68 | softWrap: true, 69 | ), 70 | ), 71 | Center( 72 | child: Text( 73 | "By " + widget.course.teacher, 74 | style: TextStyle( 75 | fontSize: 22, 76 | color: Colors.white, 77 | fontStyle: FontStyle.italic, 78 | ), 79 | textAlign: TextAlign.center, 80 | ), 81 | ), 82 | FlatButton.icon( 83 | onPressed: widget.delete, 84 | icon: Icon(Icons.report), 85 | label: Text("Report Course"), 86 | ), 87 | SizedBox( 88 | height: 30, 89 | ), 90 | ], 91 | ), 92 | ], 93 | ), 94 | ), 95 | ); 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /lib/CoursesScene/courses_scene.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_design_showcase/CoursesScene/Course.dart'; 3 | 4 | import 'Course.dart'; 5 | import 'CourseCard.dart'; 6 | 7 | class CoursesScene extends StatefulWidget { 8 | @override 9 | _CoursesSceneState createState() => _CoursesSceneState(); 10 | } 11 | 12 | class _CoursesSceneState extends State { 13 | List quotes = [ 14 | Course( 15 | course: "Learn Flutter", 16 | teacher: "Matt David", 17 | date: "today", 18 | color: colors[0], 19 | teacherImage: "images/dude1.jpg", 20 | liked: true, 21 | ), 22 | Course( 23 | course: "Web Series", 24 | teacher: "Jhon Ray", 25 | date: "yesterday", 26 | color: colors[1], 27 | teacherImage: "images/dude2.jpg", 28 | liked: false, 29 | ), 30 | Course( 31 | course: "Mobile Dev", 32 | teacher: "Lara Alex", 33 | date: "tomorrow", 34 | color: colors[2], 35 | teacherImage: "images/duda.jpg", 36 | liked: true, 37 | ), 38 | ]; 39 | 40 | static List colors = [ 41 | Colors.grey[900], 42 | Colors.grey[700], 43 | Colors.grey[850], 44 | ]; 45 | 46 | @override 47 | Widget build(BuildContext context) { 48 | return Scaffold( 49 | backgroundColor: Colors.white, 50 | appBar: AppBar( 51 | title: Text( 52 | "Courses Showcase", 53 | style: TextStyle(color: Colors.black87), 54 | ), 55 | centerTitle: true, 56 | backgroundColor: Colors.white, 57 | ), 58 | body: Padding( 59 | padding: const EdgeInsets.fromLTRB(16, 25, 16, 0), 60 | child: Column( 61 | crossAxisAlignment: CrossAxisAlignment.start, 62 | children: [ 63 | Text( 64 | "What would you like to learn?", 65 | style: TextStyle( 66 | fontWeight: FontWeight.bold, 67 | fontSize: 20, 68 | color: Colors.grey[700], 69 | ), 70 | ), 71 | SizedBox( 72 | height: 30, 73 | ), 74 | Row( 75 | mainAxisAlignment: MainAxisAlignment.spaceEvenly, 76 | children: [ 77 | buildCategoryIcon(Icons.music_note, Color(0xFF67CFBD), "Music"), 78 | buildCategoryIcon( 79 | Icons.fitness_center, Color(0xFFEBBB99), "Fitness"), 80 | buildCategoryIcon(Icons.code, Color(0xFF9DC0EB), "Code"), 81 | buildCategoryIcon(Icons.brush, Color(0xFFF0A093), "Design"), 82 | ], 83 | ), 84 | SizedBox( 85 | height: 15, 86 | ), 87 | Text( 88 | "Available Courses", 89 | style: TextStyle( 90 | fontStyle: FontStyle.italic, 91 | fontSize: 18, 92 | color: Colors.grey[700], 93 | ), 94 | ), 95 | SizedBox( 96 | height: 10, 97 | ), 98 | Container( 99 | height: 330, 100 | child: ListView( 101 | scrollDirection: Axis.horizontal, 102 | children: 103 | quotes.map((quote) => CourseCard(course: quote, delete: (){ 104 | setState(() { 105 | quotes.remove(quote); 106 | }); 107 | })).toList(), 108 | ), 109 | ), 110 | ], 111 | ), 112 | ), 113 | ); 114 | } 115 | 116 | Widget buildCategoryIcon(IconData icon, Color color, String text) { 117 | return Column( 118 | children: [ 119 | CircleAvatar( 120 | radius: 30, 121 | backgroundColor: color, 122 | child: Icon( 123 | icon, 124 | color: Colors.white, 125 | size: 30, 126 | ), 127 | ), 128 | Padding( 129 | padding: const EdgeInsets.all(8.0), 130 | child: Text( 131 | text, 132 | style: TextStyle( 133 | fontSize: 16, color: color, fontWeight: FontWeight.bold), 134 | ), 135 | ), 136 | ], 137 | ); 138 | } 139 | } 140 | -------------------------------------------------------------------------------- /lib/FitnessScene/chart_brain.dart: -------------------------------------------------------------------------------- 1 | import 'package:charts_flutter/flutter.dart' as charts; 2 | import 'package:flutter/material.dart'; 3 | import 'package:flutter_design_showcase/FitnessScene/statistic_chart_model.dart'; 4 | 5 | class ChartBrain { 6 | static List data = [ 7 | StatChartModel( 8 | day: "Sat", 9 | calories: 120, 10 | barColor: charts.ColorUtil.fromDartColor(Colors.blue), 11 | ), 12 | StatChartModel( 13 | day: "Sun", 14 | calories: 245, 15 | barColor: charts.ColorUtil.fromDartColor(Colors.blue), 16 | ), 17 | StatChartModel( 18 | day: "Mon", 19 | calories: 108, 20 | barColor: charts.ColorUtil.fromDartColor(Colors.blue), 21 | ), 22 | StatChartModel( 23 | day: "Tue", 24 | calories: 95, 25 | barColor: charts.ColorUtil.fromDartColor(Colors.blue), 26 | ), 27 | StatChartModel( 28 | day: "Wed", 29 | calories: 421, 30 | barColor: charts.ColorUtil.fromDartColor(Colors.blue), 31 | ), 32 | StatChartModel( 33 | day: "Thu", 34 | calories: 65, 35 | barColor: charts.ColorUtil.fromDartColor(Colors.blue), 36 | ), 37 | StatChartModel( 38 | day: "Fri", 39 | calories: 255, 40 | barColor: charts.ColorUtil.fromDartColor(Colors.blue), 41 | ), 42 | ]; 43 | 44 | List> series = [ 45 | charts.Series( 46 | id: "Subscribers", 47 | data: data, 48 | domainFn: (StatChartModel series, _) => series.day, 49 | measureFn: (StatChartModel series, _) => series.calories, 50 | colorFn: (StatChartModel series, _) => series.barColor) 51 | ]; 52 | } 53 | -------------------------------------------------------------------------------- /lib/FitnessScene/fitness_scene.dart: -------------------------------------------------------------------------------- 1 | import 'package:charts_flutter/flutter.dart' as chart; 2 | import 'package:flutter/material.dart'; 3 | import 'package:flutter_design_showcase/FitnessScene/chart_brain.dart'; 4 | 5 | class FitnessScene extends StatefulWidget { 6 | @override 7 | _FitnessSceneState createState() => _FitnessSceneState(); 8 | } 9 | 10 | class _FitnessSceneState extends State { 11 | Widget header = Row( 12 | children: [ 13 | CircleAvatar( 14 | backgroundImage: AssetImage("images/instructor.png"), 15 | radius: 60, 16 | ), 17 | Expanded( 18 | child: Padding( 19 | padding: const EdgeInsets.all(16), 20 | child: Column( 21 | crossAxisAlignment: CrossAxisAlignment.start, 22 | children: [ 23 | Text( 24 | "Carley Jones", 25 | style: TextStyle( 26 | fontSize: 26, 27 | fontWeight: FontWeight.bold, 28 | color: Colors.black87, 29 | ), 30 | ), 31 | SizedBox( 32 | height: 10, 33 | ), 34 | Row( 35 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 36 | children: [ 37 | Column( 38 | crossAxisAlignment: CrossAxisAlignment.start, 39 | children: [ 40 | Text( 41 | "1280", 42 | style: TextStyle( 43 | fontWeight: FontWeight.bold, 44 | fontSize: 18, 45 | ), 46 | ), 47 | Text( 48 | "Followers", 49 | style: TextStyle( 50 | fontStyle: FontStyle.italic, 51 | color: Colors.grey[600], 52 | ), 53 | ), 54 | ], 55 | ), 56 | Column( 57 | crossAxisAlignment: CrossAxisAlignment.end, 58 | children: [ 59 | Text( 60 | "477", 61 | style: TextStyle( 62 | fontWeight: FontWeight.bold, 63 | fontSize: 18, 64 | ), 65 | ), 66 | Text( 67 | "Following", 68 | style: TextStyle( 69 | fontStyle: FontStyle.italic, 70 | color: Colors.grey[600], 71 | ), 72 | ), 73 | ], 74 | ), 75 | ], 76 | ), 77 | SizedBox( 78 | height: 10, 79 | ), 80 | Row( 81 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 82 | children: [ 83 | Row( 84 | children: [ 85 | Icon( 86 | Icons.fitness_center, 87 | color: Color(0xFFF5907B), 88 | ), 89 | SizedBox( 90 | width: 5, 91 | ), 92 | Text( 93 | "Beginner", 94 | style: TextStyle(fontWeight: FontWeight.bold), 95 | ), 96 | ], 97 | ), 98 | Text( 99 | "120 hrs", 100 | style: TextStyle(fontWeight: FontWeight.bold), 101 | ), 102 | ], 103 | ), 104 | SizedBox( 105 | height: 7, 106 | ), 107 | LinearProgressIndicator( 108 | value: .32, 109 | backgroundColor: Color(0xFFF5907B), 110 | ), 111 | ], 112 | ), 113 | ), 114 | ) 115 | ], 116 | ); 117 | 118 | Widget trainingBar = Container( 119 | color: Colors.white, 120 | child: Column( 121 | crossAxisAlignment: CrossAxisAlignment.stretch, 122 | children: [ 123 | Padding( 124 | padding: const EdgeInsets.all(16), 125 | child: Column( 126 | children: [ 127 | Row( 128 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 129 | crossAxisAlignment: CrossAxisAlignment.start, 130 | children: [ 131 | Text( 132 | "Training", 133 | style: TextStyle( 134 | fontSize: 32, 135 | letterSpacing: 2, 136 | shadows: [ 137 | Shadow( 138 | offset: Offset.fromDirection(.5), 139 | blurRadius: 3, 140 | color: Colors.grey) 141 | ], 142 | fontWeight: FontWeight.bold, 143 | ), 144 | ), 145 | Padding( 146 | padding: const EdgeInsets.all(8.0), 147 | child: Text( 148 | "Show All", 149 | style: TextStyle( 150 | fontSize: 16, 151 | fontStyle: FontStyle.italic, 152 | fontWeight: FontWeight.bold, 153 | color: Colors.grey[500], 154 | ), 155 | ), 156 | ) 157 | ], 158 | ), 159 | SizedBox( 160 | height: 5, 161 | ), 162 | Container( 163 | height: 200, 164 | child: ListView( 165 | scrollDirection: Axis.horizontal, 166 | children: [ 167 | buildTrainingItem(Icons.favorite, "Cardio", "2 days ago"), 168 | buildTrainingItem( 169 | Icons.directions_run, "Running", "3 hours ago"), 170 | ], 171 | ), 172 | ) 173 | ], 174 | ), 175 | ), 176 | ], 177 | ), 178 | ); 179 | 180 | Widget statsBar = Container( 181 | color: Colors.white, 182 | child: Column( 183 | crossAxisAlignment: CrossAxisAlignment.stretch, 184 | children: [ 185 | Padding( 186 | padding: const EdgeInsets.all(16), 187 | child: Column( 188 | children: [ 189 | Row( 190 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 191 | crossAxisAlignment: CrossAxisAlignment.start, 192 | children: [ 193 | Column( 194 | crossAxisAlignment: CrossAxisAlignment.start, 195 | children: [ 196 | Text( 197 | "Statistics", 198 | style: TextStyle( 199 | fontSize: 32, 200 | letterSpacing: 2, 201 | shadows: [ 202 | Shadow( 203 | offset: Offset.fromDirection(.5), 204 | blurRadius: 3, 205 | color: Colors.grey) 206 | ], 207 | fontWeight: FontWeight.bold, 208 | ), 209 | ), 210 | Text( 211 | "This week", 212 | style: TextStyle( 213 | color: Colors.grey[500], 214 | fontStyle: FontStyle.italic, 215 | fontSize: 18), 216 | ), 217 | ], 218 | ), 219 | Padding( 220 | padding: const EdgeInsets.all(8.0), 221 | child: Text( 222 | "Show All", 223 | style: TextStyle( 224 | fontSize: 16, 225 | fontStyle: FontStyle.italic, 226 | fontWeight: FontWeight.bold, 227 | color: Colors.grey[500], 228 | ), 229 | ), 230 | ) 231 | ], 232 | ), 233 | SizedBox( 234 | height: 5, 235 | ), 236 | Card( 237 | elevation: 5, 238 | semanticContainer: true, 239 | shape: RoundedRectangleBorder( 240 | borderRadius: BorderRadius.circular(15)), 241 | color: Color(0xFFF5907B), 242 | child: Padding( 243 | padding: const EdgeInsets.all(8.0), 244 | child: Container( 245 | height: 100, 246 | child: Row( 247 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 248 | children: [ 249 | Column( 250 | crossAxisAlignment: CrossAxisAlignment.start, 251 | mainAxisAlignment: MainAxisAlignment.center, 252 | children: [ 253 | Text( 254 | "Calories", 255 | style: TextStyle(color: Colors.white), 256 | ), 257 | Text( 258 | "160,7Kcal", 259 | style: TextStyle( 260 | color: Colors.white, 261 | fontSize: 20, 262 | fontWeight: FontWeight.bold), 263 | ), 264 | SizedBox( 265 | height: 5, 266 | ), 267 | Text( 268 | "Time", 269 | style: TextStyle(color: Colors.white), 270 | ), 271 | Text( 272 | "01:24:13", 273 | style: TextStyle( 274 | color: Colors.white, 275 | fontSize: 20, 276 | fontWeight: FontWeight.bold), 277 | ), 278 | ], 279 | ), 280 | Container( 281 | height: 100, 282 | width: 200, 283 | child: chart.BarChart( 284 | ChartBrain().series, 285 | animate: true, 286 | ), 287 | ), 288 | ], 289 | ), 290 | ), 291 | ), 292 | ), 293 | ], 294 | ), 295 | ), 296 | ], 297 | ), 298 | ); 299 | 300 | static Widget buildTrainingItem( 301 | IconData icon, String title, String lastTime) { 302 | return Padding( 303 | padding: const EdgeInsets.all(8.0), 304 | child: Row( 305 | crossAxisAlignment: CrossAxisAlignment.start, 306 | children: [ 307 | Icon( 308 | icon, 309 | size: 25, 310 | color: Color(0xFFF5907B), 311 | ), 312 | Column( 313 | mainAxisAlignment: MainAxisAlignment.start, 314 | children: [ 315 | Text( 316 | title, 317 | style: TextStyle( 318 | color: Color(0xFFF5907B),fontSize: 18, fontWeight: FontWeight.bold), 319 | ), 320 | Text( 321 | lastTime, 322 | style: TextStyle( 323 | color: Colors.grey[400], fontStyle: FontStyle.italic), 324 | ), 325 | ], 326 | ) 327 | ], 328 | ), 329 | ); 330 | } 331 | 332 | @override 333 | Widget build(BuildContext context) { 334 | return Scaffold( 335 | appBar: AppBar( 336 | title: Text( 337 | "Fitness Showcase", 338 | style: TextStyle(color: Colors.black87), 339 | ), 340 | centerTitle: true, 341 | elevation: 0, 342 | backgroundColor: Color(0xFFEFEFEF), 343 | ), 344 | body: Container( 345 | color: Color(0xFFEFEFEF), 346 | child: ListView( 347 | children: [ 348 | Padding( 349 | padding: const EdgeInsets.all(16), 350 | child: header, 351 | ), 352 | statsBar, 353 | trainingBar, 354 | ], 355 | ), 356 | ), 357 | ); 358 | } 359 | } 360 | -------------------------------------------------------------------------------- /lib/FitnessScene/statistic_chart_model.dart: -------------------------------------------------------------------------------- 1 | import 'package:charts_flutter/flutter.dart' as charts; 2 | 3 | 4 | class StatChartModel{ 5 | String day; 6 | int calories; 7 | charts.Color barColor; 8 | 9 | StatChartModel({this.day, this.calories, this.barColor}); 10 | 11 | } -------------------------------------------------------------------------------- /lib/WeatherScene/ApiToolBox.dart: -------------------------------------------------------------------------------- 1 | import 'dart:convert'; 2 | 3 | import 'package:http/http.dart'; 4 | 5 | class ApiToolBox { 6 | String time; 7 | bool pause = false; 8 | DateTime now; 9 | 10 | Future getAPI() async { 11 | Response response = 12 | await get("http://worldtimeapi.org/api/timezone/Africa/Algiers"); 13 | Map result = jsonDecode(response.body); 14 | String time = result["datetime"]; 15 | String offset = result["utc_offset"].toString().substring(1, 3); 16 | 17 | now = DateTime.parse(time); 18 | now = now.add(Duration(hours: int.parse(offset))); 19 | this.time = now.toString(); 20 | } 21 | 22 | void incrementTime() async { 23 | now = now.add(Duration(seconds: 1)); 24 | await Future.delayed(Duration(seconds: 1)); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/WeatherScene/weather_scene.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_design_showcase/WeatherScene/ApiToolBox.dart'; 3 | 4 | class WeatherScene extends StatefulWidget { 5 | @override 6 | _WeatherSceneState createState() => _WeatherSceneState(); 7 | } 8 | 9 | class _WeatherSceneState extends State { 10 | String time = "Loading..."; 11 | 12 | void getTime() async { 13 | ApiToolBox api = ApiToolBox(); 14 | await api.getAPI(); 15 | setState(() { 16 | time = api.time; 17 | }); 18 | } 19 | 20 | @override 21 | void initState() { 22 | super.initState(); 23 | getTime(); 24 | } 25 | 26 | @override 27 | Widget build(BuildContext context) { 28 | return Scaffold( 29 | appBar: AppBar( 30 | title: Text("Weather Scene"), 31 | backgroundColor: Colors.green, 32 | centerTitle: true, 33 | ), 34 | body: Column( 35 | children: [ 36 | Text("$time"), 37 | ], 38 | ), 39 | ); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_design_showcase/CoursesScene/courses_scene.dart'; 3 | import 'package:flutter_design_showcase/WeatherScene/weather_scene.dart'; 4 | import 'package:flutter_design_showcase/FitnessScene/fitness_scene.dart'; 5 | import 'package:flutter_design_showcase/profile_scene.dart'; 6 | import 'package:flutter_design_showcase/tourism_scene.dart'; 7 | 8 | void main() { 9 | runApp(MaterialApp( 10 | debugShowCheckedModeBanner: false, 11 | title: "Flutter Design Showcase", 12 | initialRoute: "/", 13 | routes: { 14 | "/": (context) => MainScene(), 15 | "/profile_scene": (context) => ProfileScene(), 16 | "/tourism_scene": (context) => TourismScene(), 17 | "/courses_scene": (context) => CoursesScene(), 18 | "/weather_scene": (context) => WeatherScene(), 19 | "/fitness_scene": (context) => FitnessScene(), 20 | })); 21 | } 22 | 23 | class MainScene extends StatelessWidget { 24 | @override 25 | Widget build(BuildContext context) { 26 | return Scaffold( 27 | body: Column( 28 | mainAxisAlignment: MainAxisAlignment.center, 29 | children: [ 30 | menuButton(context, "/courses_scene", "Courses Showcase"), 31 | menuButton(context, "/profile_scene", "Profile Showcase"), 32 | menuButton(context, "/tourism_scene", "Tourism Showcase"), 33 | menuButton(context, "/weather_scene", "Weather Showcase"), 34 | menuButton(context, "/fitness_scene", "Fitness Showcase"), 35 | ], 36 | )); 37 | } 38 | 39 | Widget menuButton(BuildContext context, String route, String text) { 40 | return Center( 41 | child: RaisedButton( 42 | onPressed: () { 43 | Navigator.pushNamed(context, route); 44 | }, 45 | child: Text(text), 46 | ), 47 | ); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /lib/profile_scene.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ProfileScene extends StatefulWidget { 4 | @override 5 | _ProfileSceneState createState() => _ProfileSceneState(); 6 | } 7 | 8 | class _ProfileSceneState extends State { 9 | int videoCounter; 10 | 11 | @override 12 | void initState() { 13 | super.initState(); 14 | videoCounter = 0; 15 | } 16 | 17 | @override 18 | Widget build(BuildContext context) { 19 | return Scaffold( 20 | backgroundColor: Colors.grey[850], 21 | appBar: AppBar( 22 | title: Text("Profile Showcase"), 23 | centerTitle: true, 24 | elevation: 0, 25 | backgroundColor: Colors.grey[900], 26 | ), 27 | body: Padding( 28 | padding: const EdgeInsets.fromLTRB(10, 20, 10, 0), 29 | child: Column( 30 | crossAxisAlignment: CrossAxisAlignment.start, 31 | children: [ 32 | Center( 33 | child: CircleAvatar( 34 | radius: 60, 35 | backgroundImage: AssetImage("images/pewds.jpg"), 36 | ), 37 | ), 38 | SizedBox( 39 | height: 20, 40 | ), 41 | Center( 42 | child: Column( 43 | children: [ 44 | Text( 45 | "NAME", 46 | style: TextStyle( 47 | fontSize: 18, 48 | color: Colors.grey[400], 49 | letterSpacing: 2, 50 | ), 51 | ), 52 | SizedBox( 53 | height: 10, 54 | ), 55 | Text( 56 | "PewDiePie", 57 | style: TextStyle( 58 | fontSize: 22, 59 | color: Colors.amberAccent, 60 | letterSpacing: 2, 61 | ), 62 | ), 63 | SizedBox( 64 | height: 10, 65 | ), 66 | ], 67 | ), 68 | ), 69 | SizedBox( 70 | height: 20, 71 | ), 72 | Row( 73 | children: [ 74 | Expanded( 75 | flex: 1, 76 | child: Container( 77 | padding: EdgeInsets.all(10), 78 | color: Colors.grey[800], 79 | child: Column( 80 | children: [ 81 | Text( 82 | "Followers", 83 | style: TextStyle( 84 | fontSize: 14, 85 | color: Colors.grey[400], 86 | letterSpacing: 2, 87 | ), 88 | ), 89 | SizedBox( 90 | height: 10, 91 | ), 92 | Text( 93 | "103 Millions", 94 | style: TextStyle( 95 | fontSize: 18, 96 | color: Colors.amberAccent, 97 | letterSpacing: 2, 98 | ), 99 | ), 100 | ], 101 | ), 102 | ), 103 | ), 104 | Expanded( 105 | flex: 1, 106 | child: Container( 107 | padding: EdgeInsets.all(10), 108 | color: Colors.grey[700], 109 | child: Column( 110 | children: [ 111 | Text( 112 | "Videos", 113 | style: TextStyle( 114 | fontSize: 14, 115 | color: Colors.grey[400], 116 | letterSpacing: 2, 117 | ), 118 | ), 119 | SizedBox( 120 | height: 10, 121 | ), 122 | Text( 123 | "+1470", 124 | style: TextStyle( 125 | fontSize: 18, 126 | color: Colors.amberAccent, 127 | letterSpacing: 2, 128 | ), 129 | ), 130 | ], 131 | ), 132 | ), 133 | ), 134 | ], 135 | ), 136 | SizedBox( 137 | height: 20, 138 | ), 139 | Center( 140 | child: Column( 141 | children: [ 142 | Column( 143 | children: [ 144 | Icon( 145 | Icons.mail, 146 | color: Colors.amberAccent, 147 | ), 148 | SizedBox( 149 | height: 5, 150 | ), 151 | Text( 152 | "pewdiepie@gmail.com", 153 | style: TextStyle( 154 | fontSize: 18, 155 | color: Colors.grey[400], 156 | letterSpacing: 2, 157 | ), 158 | ), 159 | ], 160 | ), 161 | SizedBox( 162 | height: 15, 163 | ), 164 | Column( 165 | children: [ 166 | Icon( 167 | Icons.phone, 168 | color: Colors.amberAccent, 169 | ), 170 | SizedBox( 171 | height: 5, 172 | ), 173 | Text( 174 | "+689 878 555", 175 | style: TextStyle( 176 | fontSize: 18, 177 | color: Colors.grey[400], 178 | letterSpacing: 2, 179 | ), 180 | ), 181 | ], 182 | ), 183 | SizedBox( 184 | height: 30, 185 | ), 186 | Row( 187 | mainAxisAlignment: MainAxisAlignment.spaceEvenly, 188 | children: [ 189 | followButton( 190 | Icons.person_add, Colors.amberAccent, "Follow"), 191 | buildSharingButtons( 192 | Icons.message, Colors.amberAccent, "Send message"), 193 | buildSharingButtons( 194 | Icons.share, Colors.amberAccent, "Share"), 195 | ], 196 | ), 197 | ], 198 | ), 199 | ), 200 | ], 201 | ), 202 | ), 203 | ); 204 | } 205 | 206 | bool follow = true; 207 | 208 | Widget buildSharingButtons(IconData icon, Color color, String text) { 209 | return Column( 210 | children: [ 211 | Icon( 212 | icon, 213 | color: color, 214 | ), 215 | Padding( 216 | padding: const EdgeInsets.all(8.0), 217 | child: Text( 218 | text, 219 | style: TextStyle( 220 | fontSize: 12, 221 | color: Colors.grey[400], 222 | fontWeight: FontWeight.w400), 223 | ), 224 | ), 225 | ], 226 | ); 227 | } 228 | 229 | Widget followButton(IconData icon, Color color, String text) { 230 | return Column( 231 | children: [ 232 | IconButton( 233 | icon: Icon(Icons.person_add), 234 | color: !follow ? Colors.grey[400] : color, 235 | onPressed: () { 236 | setState(() { 237 | follow = !follow; 238 | }); 239 | }, 240 | ), 241 | Padding( 242 | padding: const EdgeInsets.all(8.0), 243 | child: Text( 244 | text, 245 | style: TextStyle( 246 | fontSize: 12, 247 | color: Colors.grey[400], 248 | fontWeight: FontWeight.w400, 249 | ), 250 | ), 251 | ), 252 | ], 253 | ); 254 | } 255 | 256 | void timeCounter() async { 257 | await Future.delayed(Duration(seconds: 1), () { return videoCounter++;}); 258 | timeCounter(); 259 | } 260 | } 261 | -------------------------------------------------------------------------------- /lib/tourism_scene.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class StarLayout extends StatefulWidget { 4 | @override 5 | StarLayoutState createState() => StarLayoutState(); 6 | } 7 | 8 | class StarLayoutState extends State { 9 | static int starsCount = 0; 10 | 11 | @override 12 | Widget build(BuildContext context) { 13 | return Row( 14 | mainAxisSize: MainAxisSize.min, 15 | children: [ 16 | IconButton( 17 | icon: Icon(Icons.star), 18 | color: Colors.amber, 19 | onPressed: incrementStars, 20 | ), 21 | Text("$starsCount"), 22 | ], 23 | ); 24 | } 25 | 26 | void incrementStars() { 27 | setState(() { 28 | starsCount++; 29 | }); 30 | } 31 | } 32 | 33 | class TourismScene extends StatelessWidget { 34 | final Widget titleWidget = Container( 35 | padding: EdgeInsets.only(right: 32, top: 16, bottom: 16, left: 16), 36 | child: Row( 37 | children: [ 38 | Expanded( 39 | child: Column( 40 | crossAxisAlignment: CrossAxisAlignment.start, 41 | children: [ 42 | Padding( 43 | padding: const EdgeInsets.only(bottom: 8.0), 44 | child: Text( 45 | "Place du 1 er Novembre", 46 | style: TextStyle(fontWeight: FontWeight.bold), 47 | ), 48 | ), 49 | Text( 50 | "Oran, Algeria", 51 | style: TextStyle(color: Colors.grey), 52 | ), 53 | ], 54 | ), 55 | ), 56 | StarLayout(), 57 | ], 58 | ), 59 | ); 60 | final Widget descriptionText = Container( 61 | margin: EdgeInsets.all(16), 62 | child: Text( 63 | "La place du 1er Novembre 1954 (ex-place d Armes) est considéré comme le cœur historique de la ville d Oran, " 64 | "elle est à la croisée des chemins de plusieurs routes que vous veniez du port, du front de mer et du centre-ville." 65 | "En son centre, on trouve une obélisque à l effigie de l émir Abdelkader, surmontée par une sculpture nommée" 66 | " « La Gloire » du sculpteur français Aimé-Jules Dalou." 67 | "Entourant la place avec leur architecture coloniale, les majestueux" 68 | "édifices historiques que sont l hôtel de ville et l op" 69 | "éra veillent sur la place depuis plus d un siècle." 70 | "A noté qu une station de tramway est présente au niveau de la place.", 71 | softWrap: true, 72 | ), 73 | ); 74 | 75 | Widget buildSharingButtons(IconData icon, Color color, String text) { 76 | return Column( 77 | children: [ 78 | Icon( 79 | icon, 80 | color: color, 81 | ), 82 | Padding( 83 | padding: const EdgeInsets.all(8.0), 84 | child: Text( 85 | text, 86 | style: TextStyle( 87 | fontSize: 12, color: color, fontWeight: FontWeight.w400), 88 | ), 89 | ), 90 | ], 91 | ); 92 | } 93 | 94 | @override 95 | Widget build(BuildContext context) { 96 | return Scaffold( 97 | appBar: AppBar( 98 | title: Text("Tourism Scene"), 99 | centerTitle: true, 100 | backgroundColor: Colors.blue, 101 | ), 102 | body: Container( 103 | child: ListView(children: [ 104 | Image.asset( 105 | "images/oran.jpg", 106 | fit: BoxFit.cover, 107 | ), 108 | titleWidget, 109 | Row( 110 | mainAxisAlignment: MainAxisAlignment.spaceEvenly, 111 | children: [ 112 | buildSharingButtons(Icons.call, Colors.blue, "Call"), 113 | buildSharingButtons(Icons.share, Colors.blue, "Share"), 114 | buildSharingButtons(Icons.send, Colors.blue, "Send"), 115 | ], 116 | ), 117 | descriptionText, 118 | ]), 119 | ), 120 | ); 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /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.3.0" 11 | boolean_selector: 12 | dependency: transitive 13 | description: 14 | name: boolean_selector 15 | url: "https://pub.dartlang.org" 16 | source: hosted 17 | version: "1.0.5" 18 | charcode: 19 | dependency: transitive 20 | description: 21 | name: charcode 22 | url: "https://pub.dartlang.org" 23 | source: hosted 24 | version: "1.1.2" 25 | charts_common: 26 | dependency: transitive 27 | description: 28 | name: charts_common 29 | url: "https://pub.dartlang.org" 30 | source: hosted 31 | version: "0.8.1" 32 | charts_flutter: 33 | dependency: "direct dev" 34 | description: 35 | name: charts_flutter 36 | url: "https://pub.dartlang.org" 37 | source: hosted 38 | version: "0.8.1" 39 | collection: 40 | dependency: transitive 41 | description: 42 | name: collection 43 | url: "https://pub.dartlang.org" 44 | source: hosted 45 | version: "1.14.11" 46 | cupertino_icons: 47 | dependency: "direct main" 48 | description: 49 | name: cupertino_icons 50 | url: "https://pub.dartlang.org" 51 | source: hosted 52 | version: "0.1.2" 53 | flutter: 54 | dependency: "direct main" 55 | description: flutter 56 | source: sdk 57 | version: "0.0.0" 58 | flutter_test: 59 | dependency: "direct dev" 60 | description: flutter 61 | source: sdk 62 | version: "0.0.0" 63 | http: 64 | dependency: "direct dev" 65 | description: 66 | name: http 67 | url: "https://pub.dartlang.org" 68 | source: hosted 69 | version: "0.12.0+2" 70 | http_parser: 71 | dependency: transitive 72 | description: 73 | name: http_parser 74 | url: "https://pub.dartlang.org" 75 | source: hosted 76 | version: "3.1.3" 77 | intl: 78 | dependency: transitive 79 | description: 80 | name: intl 81 | url: "https://pub.dartlang.org" 82 | source: hosted 83 | version: "0.16.0" 84 | logging: 85 | dependency: transitive 86 | description: 87 | name: logging 88 | url: "https://pub.dartlang.org" 89 | source: hosted 90 | version: "0.11.3+2" 91 | matcher: 92 | dependency: transitive 93 | description: 94 | name: matcher 95 | url: "https://pub.dartlang.org" 96 | source: hosted 97 | version: "0.12.5" 98 | meta: 99 | dependency: transitive 100 | description: 101 | name: meta 102 | url: "https://pub.dartlang.org" 103 | source: hosted 104 | version: "1.1.7" 105 | path: 106 | dependency: transitive 107 | description: 108 | name: path 109 | url: "https://pub.dartlang.org" 110 | source: hosted 111 | version: "1.6.4" 112 | pedantic: 113 | dependency: transitive 114 | description: 115 | name: pedantic 116 | url: "https://pub.dartlang.org" 117 | source: hosted 118 | version: "1.8.0+1" 119 | quiver: 120 | dependency: transitive 121 | description: 122 | name: quiver 123 | url: "https://pub.dartlang.org" 124 | source: hosted 125 | version: "2.0.5" 126 | sky_engine: 127 | dependency: transitive 128 | description: flutter 129 | source: sdk 130 | version: "0.0.99" 131 | source_span: 132 | dependency: transitive 133 | description: 134 | name: source_span 135 | url: "https://pub.dartlang.org" 136 | source: hosted 137 | version: "1.5.5" 138 | stack_trace: 139 | dependency: transitive 140 | description: 141 | name: stack_trace 142 | url: "https://pub.dartlang.org" 143 | source: hosted 144 | version: "1.9.3" 145 | stream_channel: 146 | dependency: transitive 147 | description: 148 | name: stream_channel 149 | url: "https://pub.dartlang.org" 150 | source: hosted 151 | version: "2.0.0" 152 | string_scanner: 153 | dependency: transitive 154 | description: 155 | name: string_scanner 156 | url: "https://pub.dartlang.org" 157 | source: hosted 158 | version: "1.0.5" 159 | term_glyph: 160 | dependency: transitive 161 | description: 162 | name: term_glyph 163 | url: "https://pub.dartlang.org" 164 | source: hosted 165 | version: "1.1.0" 166 | test_api: 167 | dependency: transitive 168 | description: 169 | name: test_api 170 | url: "https://pub.dartlang.org" 171 | source: hosted 172 | version: "0.2.5" 173 | typed_data: 174 | dependency: transitive 175 | description: 176 | name: typed_data 177 | url: "https://pub.dartlang.org" 178 | source: hosted 179 | version: "1.1.6" 180 | vector_math: 181 | dependency: transitive 182 | description: 183 | name: vector_math 184 | url: "https://pub.dartlang.org" 185 | source: hosted 186 | version: "2.0.8" 187 | sdks: 188 | dart: ">=2.2.2 <3.0.0" 189 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: flutter_design_showcase 2 | description: A new Flutter application. 3 | 4 | # The following defines the version and build number for your application. 5 | # A version number is three numbers separated by dots, like 1.2.43 6 | # followed by an optional build number separated by a +. 7 | # Both the version and the builder number may be overridden in flutter 8 | # build by specifying --build-name and --build-number, respectively. 9 | # In Android, build-name is used as versionName while build-number used as versionCode. 10 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning 11 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. 12 | # Read more about iOS versioning at 13 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html 14 | version: 1.0.0+1 15 | 16 | environment: 17 | sdk: ">=2.1.0 <3.0.0" 18 | 19 | dependencies: 20 | flutter: 21 | sdk: flutter 22 | 23 | # The following adds the Cupertino Icons font to your application. 24 | # Use with the CupertinoIcons class for iOS style icons. 25 | cupertino_icons: ^0.1.2 26 | 27 | dev_dependencies: 28 | flutter_test: 29 | sdk: flutter 30 | 31 | http: ^0.12.0+2 32 | charts_flutter: ^0.8.1 33 | 34 | # For information on the generic Dart part of this file, see the 35 | # following page: https://dart.dev/tools/pub/pubspec 36 | 37 | # The following section is specific to Flutter. 38 | flutter: 39 | 40 | # The following line ensures that the Material Icons font is 41 | # included with your application, so that you can use the icons in 42 | # the material Icons class. 43 | uses-material-design: true 44 | 45 | assets: 46 | - images/ 47 | # To add assets to your application, add an assets section, like this: 48 | # assets: 49 | # - images/a_dot_burr.jpeg 50 | # - images/a_dot_ham.jpeg 51 | 52 | # An image asset can refer to one or more resolution-specific "variants", see 53 | # https://flutter.dev/assets-and-images/#resolution-aware. 54 | 55 | # For details regarding adding assets from package dependencies, see 56 | # https://flutter.dev/assets-and-images/#from-packages 57 | 58 | # To add custom fonts to your application, add a fonts section here, 59 | # in this "flutter" section. Each entry in this list should have a 60 | # "family" key with the font family name, and a "fonts" key with a 61 | # list giving the asset and other descriptors for the font. For 62 | # example: 63 | # fonts: 64 | # - family: Schyler 65 | # fonts: 66 | # - asset: fonts/Schyler-Regular.ttf 67 | # - asset: fonts/Schyler-Italic.ttf 68 | # style: italic 69 | # - family: Trajan Pro 70 | # fonts: 71 | # - asset: fonts/TrajanPro.ttf 72 | # - asset: fonts/TrajanPro_Bold.ttf 73 | # weight: 700 74 | # 75 | # For details regarding fonts from package dependencies, 76 | # see https://flutter.dev/custom-fonts/#from-packages 77 | --------------------------------------------------------------------------------