├── .gitignore ├── .metadata ├── README.md ├── android ├── .gitignore ├── app │ ├── build.gradle │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── kotlin │ │ │ └── com │ │ │ │ └── paras │ │ │ │ └── flowerapp │ │ │ │ └── MainActivity.kt │ │ └── res │ │ │ ├── drawable │ │ │ └── launch_background.xml │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ └── values │ │ │ └── styles.xml │ │ └── profile │ │ └── AndroidManifest.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties └── settings.gradle ├── assets ├── Penguin.flr ├── Teddy.flr ├── dark_leaf_anim.flr ├── dark_leaf_anim_2.flr ├── dark_leaf_anim_3.flr ├── images │ ├── back_groundImage.png │ ├── basket_1.png │ ├── basket_2.png │ ├── basket_3.png │ ├── birthday.png │ ├── bouquet_1.png │ ├── bouquet_2.png │ ├── dark_leaf_anim.flr │ ├── flower.jpg │ ├── flower_1.png │ ├── flower_2.png │ ├── graduation.png │ ├── home.png │ ├── leaf.png │ ├── like.png │ ├── man.png │ ├── menu_icon.png │ ├── shop_bag.png │ ├── shopping_bag.png │ ├── shopping_cart.png │ ├── wedding_1.png │ └── wedding_2.png └── leaf.flr ├── ios ├── .gitignore ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ └── Release.xcconfig ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings └── Runner │ ├── AppDelegate.swift │ ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── Icon-App-1024x1024@1x.png │ │ ├── Icon-App-20x20@1x.png │ │ ├── Icon-App-20x20@2x.png │ │ ├── Icon-App-20x20@3x.png │ │ ├── Icon-App-29x29@1x.png │ │ ├── Icon-App-29x29@2x.png │ │ ├── Icon-App-29x29@3x.png │ │ ├── Icon-App-40x40@1x.png │ │ ├── Icon-App-40x40@2x.png │ │ ├── Icon-App-40x40@3x.png │ │ ├── Icon-App-60x60@2x.png │ │ ├── Icon-App-60x60@3x.png │ │ ├── Icon-App-76x76@1x.png │ │ ├── Icon-App-76x76@2x.png │ │ └── Icon-App-83.5x83.5@2x.png │ └── LaunchImage.imageset │ │ ├── Contents.json │ │ ├── LaunchImage.png │ │ ├── LaunchImage@2x.png │ │ ├── LaunchImage@3x.png │ │ └── README.md │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── Info.plist │ └── Runner-Bridging-Header.h ├── lib ├── Cart_Items_screen.dart ├── const │ └── ui_const.dart ├── flower_view_screen.dart ├── homepage.dart ├── main.dart └── model │ └── local_model │ └── homepage_view_model.dart ├── pubspec.lock ├── pubspec.yaml └── test └── widget_test.dart /.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | .dart_tool/ 26 | .flutter-plugins 27 | .flutter-plugins-dependencies 28 | .packages 29 | .pub-cache/ 30 | .pub/ 31 | /build/ 32 | 33 | # Web related 34 | lib/generated_plugin_registrant.dart 35 | 36 | # Symbolication related 37 | app.*.symbols 38 | 39 | # Obfuscation related 40 | app.*.map.json 41 | 42 | # Exceptions to above rules. 43 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 44 | -------------------------------------------------------------------------------- /.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: f7a6a7906be96d2288f5d63a5a54c515a6e987fe 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # flowerapp 2 | 3 | a flower app 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | def localProperties = new Properties() 2 | def localPropertiesFile = rootProject.file('local.properties') 3 | if (localPropertiesFile.exists()) { 4 | localPropertiesFile.withReader('UTF-8') { reader -> 5 | localProperties.load(reader) 6 | } 7 | } 8 | 9 | def flutterRoot = localProperties.getProperty('flutter.sdk') 10 | if (flutterRoot == null) { 11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 12 | } 13 | 14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 15 | if (flutterVersionCode == null) { 16 | flutterVersionCode = '1' 17 | } 18 | 19 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 20 | if (flutterVersionName == null) { 21 | flutterVersionName = '1.0' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | apply plugin: 'kotlin-android' 26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 27 | 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.paras.flowerapp" 42 | minSdkVersion 16 43 | targetSdkVersion 28 44 | versionCode flutterVersionCode.toInteger() 45 | versionName flutterVersionName 46 | } 47 | 48 | buildTypes { 49 | release { 50 | // TODO: Add your own signing config for the release build. 51 | // Signing with the debug keys for now, so `flutter run --release` works. 52 | signingConfig signingConfigs.debug 53 | } 54 | } 55 | } 56 | 57 | flutter { 58 | source '../..' 59 | } 60 | 61 | dependencies { 62 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 63 | } 64 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 8 | 9 | 13 | 20 | 24 | 28 | 33 | 37 | 38 | 39 | 40 | 41 | 42 | 44 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /android/app/src/main/kotlin/com/paras/flowerapp/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.paras.flowerapp 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.3.50' 3 | repositories { 4 | google() 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:3.5.0' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 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 | android.enableR8=true 3 | android.useAndroidX=true 4 | android.enableJetifier=true 5 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip 7 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /assets/Penguin.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/Penguin.flr -------------------------------------------------------------------------------- /assets/Teddy.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/Teddy.flr -------------------------------------------------------------------------------- /assets/dark_leaf_anim.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/dark_leaf_anim.flr -------------------------------------------------------------------------------- /assets/dark_leaf_anim_2.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/dark_leaf_anim_2.flr -------------------------------------------------------------------------------- /assets/dark_leaf_anim_3.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/dark_leaf_anim_3.flr -------------------------------------------------------------------------------- /assets/images/back_groundImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/back_groundImage.png -------------------------------------------------------------------------------- /assets/images/basket_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/basket_1.png -------------------------------------------------------------------------------- /assets/images/basket_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/basket_2.png -------------------------------------------------------------------------------- /assets/images/basket_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/basket_3.png -------------------------------------------------------------------------------- /assets/images/birthday.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/birthday.png -------------------------------------------------------------------------------- /assets/images/bouquet_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/bouquet_1.png -------------------------------------------------------------------------------- /assets/images/bouquet_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/bouquet_2.png -------------------------------------------------------------------------------- /assets/images/dark_leaf_anim.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/dark_leaf_anim.flr -------------------------------------------------------------------------------- /assets/images/flower.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/flower.jpg -------------------------------------------------------------------------------- /assets/images/flower_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/flower_1.png -------------------------------------------------------------------------------- /assets/images/flower_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/flower_2.png -------------------------------------------------------------------------------- /assets/images/graduation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/graduation.png -------------------------------------------------------------------------------- /assets/images/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/home.png -------------------------------------------------------------------------------- /assets/images/leaf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/leaf.png -------------------------------------------------------------------------------- /assets/images/like.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/like.png -------------------------------------------------------------------------------- /assets/images/man.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/man.png -------------------------------------------------------------------------------- /assets/images/menu_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/menu_icon.png -------------------------------------------------------------------------------- /assets/images/shop_bag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/shop_bag.png -------------------------------------------------------------------------------- /assets/images/shopping_bag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/shopping_bag.png -------------------------------------------------------------------------------- /assets/images/shopping_cart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/shopping_cart.png -------------------------------------------------------------------------------- /assets/images/wedding_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/wedding_1.png -------------------------------------------------------------------------------- /assets/images/wedding_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/images/wedding_2.png -------------------------------------------------------------------------------- /assets/leaf.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/assets/leaf.flr -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | *.mode1v3 2 | *.mode2v3 3 | *.moved-aside 4 | *.pbxuser 5 | *.perspectivev3 6 | **/*sync/ 7 | .sconsign.dblite 8 | .tags* 9 | **/.vagrant/ 10 | **/DerivedData/ 11 | Icon? 12 | **/Pods/ 13 | **/.symlinks/ 14 | profile 15 | xcuserdata 16 | **/.generated/ 17 | Flutter/App.framework 18 | Flutter/Flutter.framework 19 | Flutter/Flutter.podspec 20 | Flutter/Generated.xcconfig 21 | Flutter/app.flx 22 | Flutter/app.zip 23 | Flutter/flutter_assets/ 24 | Flutter/flutter_export_environment.sh 25 | ServiceDefinitions.json 26 | Runner/GeneratedPluginRegistrant.* 27 | 28 | # Exceptions to above rules. 29 | !default.mode1v3 30 | !default.mode2v3 31 | !default.pbxuser 32 | !default.perspectivev3 33 | -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "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 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 13 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 14 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 15 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 16 | /* End PBXBuildFile section */ 17 | 18 | /* Begin PBXCopyFilesBuildPhase section */ 19 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = { 20 | isa = PBXCopyFilesBuildPhase; 21 | buildActionMask = 2147483647; 22 | dstPath = ""; 23 | dstSubfolderSpec = 10; 24 | files = ( 25 | ); 26 | name = "Embed Frameworks"; 27 | runOnlyForDeploymentPostprocessing = 0; 28 | }; 29 | /* End PBXCopyFilesBuildPhase section */ 30 | 31 | /* Begin PBXFileReference section */ 32 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 33 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 34 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 35 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 36 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 37 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 38 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 39 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 40 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 41 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 42 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 43 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 44 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 45 | /* End PBXFileReference section */ 46 | 47 | /* Begin PBXFrameworksBuildPhase section */ 48 | 97C146EB1CF9000F007C117D /* Frameworks */ = { 49 | isa = PBXFrameworksBuildPhase; 50 | buildActionMask = 2147483647; 51 | files = ( 52 | ); 53 | runOnlyForDeploymentPostprocessing = 0; 54 | }; 55 | /* End PBXFrameworksBuildPhase section */ 56 | 57 | /* Begin PBXGroup section */ 58 | 9740EEB11CF90186004384FC /* Flutter */ = { 59 | isa = PBXGroup; 60 | children = ( 61 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 62 | 9740EEB21CF90195004384FC /* Debug.xcconfig */, 63 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 64 | 9740EEB31CF90195004384FC /* Generated.xcconfig */, 65 | ); 66 | name = Flutter; 67 | sourceTree = ""; 68 | }; 69 | 97C146E51CF9000F007C117D = { 70 | isa = PBXGroup; 71 | children = ( 72 | 9740EEB11CF90186004384FC /* Flutter */, 73 | 97C146F01CF9000F007C117D /* Runner */, 74 | 97C146EF1CF9000F007C117D /* Products */, 75 | ); 76 | sourceTree = ""; 77 | }; 78 | 97C146EF1CF9000F007C117D /* Products */ = { 79 | isa = PBXGroup; 80 | children = ( 81 | 97C146EE1CF9000F007C117D /* Runner.app */, 82 | ); 83 | name = Products; 84 | sourceTree = ""; 85 | }; 86 | 97C146F01CF9000F007C117D /* Runner */ = { 87 | isa = PBXGroup; 88 | children = ( 89 | 97C146FA1CF9000F007C117D /* Main.storyboard */, 90 | 97C146FD1CF9000F007C117D /* Assets.xcassets */, 91 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 92 | 97C147021CF9000F007C117D /* Info.plist */, 93 | 97C146F11CF9000F007C117D /* Supporting Files */, 94 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 95 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 96 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, 97 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, 98 | ); 99 | path = Runner; 100 | sourceTree = ""; 101 | }; 102 | 97C146F11CF9000F007C117D /* Supporting Files */ = { 103 | isa = PBXGroup; 104 | children = ( 105 | ); 106 | name = "Supporting Files"; 107 | sourceTree = ""; 108 | }; 109 | /* End PBXGroup section */ 110 | 111 | /* Begin PBXNativeTarget section */ 112 | 97C146ED1CF9000F007C117D /* Runner */ = { 113 | isa = PBXNativeTarget; 114 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; 115 | buildPhases = ( 116 | 9740EEB61CF901F6004384FC /* Run Script */, 117 | 97C146EA1CF9000F007C117D /* Sources */, 118 | 97C146EB1CF9000F007C117D /* Frameworks */, 119 | 97C146EC1CF9000F007C117D /* Resources */, 120 | 9705A1C41CF9048500538489 /* Embed Frameworks */, 121 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 122 | ); 123 | buildRules = ( 124 | ); 125 | dependencies = ( 126 | ); 127 | name = Runner; 128 | productName = Runner; 129 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */; 130 | productType = "com.apple.product-type.application"; 131 | }; 132 | /* End PBXNativeTarget section */ 133 | 134 | /* Begin PBXProject section */ 135 | 97C146E61CF9000F007C117D /* Project object */ = { 136 | isa = PBXProject; 137 | attributes = { 138 | LastUpgradeCheck = 1020; 139 | ORGANIZATIONNAME = ""; 140 | TargetAttributes = { 141 | 97C146ED1CF9000F007C117D = { 142 | CreatedOnToolsVersion = 7.3.1; 143 | LastSwiftMigration = 1100; 144 | }; 145 | }; 146 | }; 147 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; 148 | compatibilityVersion = "Xcode 9.3"; 149 | developmentRegion = en; 150 | hasScannedForEncodings = 0; 151 | knownRegions = ( 152 | en, 153 | Base, 154 | ); 155 | mainGroup = 97C146E51CF9000F007C117D; 156 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */; 157 | projectDirPath = ""; 158 | projectRoot = ""; 159 | targets = ( 160 | 97C146ED1CF9000F007C117D /* Runner */, 161 | ); 162 | }; 163 | /* End PBXProject section */ 164 | 165 | /* Begin PBXResourcesBuildPhase section */ 166 | 97C146EC1CF9000F007C117D /* Resources */ = { 167 | isa = PBXResourcesBuildPhase; 168 | buildActionMask = 2147483647; 169 | files = ( 170 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 171 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 172 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 173 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, 174 | ); 175 | runOnlyForDeploymentPostprocessing = 0; 176 | }; 177 | /* End PBXResourcesBuildPhase section */ 178 | 179 | /* Begin PBXShellScriptBuildPhase section */ 180 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 181 | isa = PBXShellScriptBuildPhase; 182 | buildActionMask = 2147483647; 183 | files = ( 184 | ); 185 | inputPaths = ( 186 | ); 187 | name = "Thin Binary"; 188 | outputPaths = ( 189 | ); 190 | runOnlyForDeploymentPostprocessing = 0; 191 | shellPath = /bin/sh; 192 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; 193 | }; 194 | 9740EEB61CF901F6004384FC /* Run Script */ = { 195 | isa = PBXShellScriptBuildPhase; 196 | buildActionMask = 2147483647; 197 | files = ( 198 | ); 199 | inputPaths = ( 200 | ); 201 | name = "Run Script"; 202 | outputPaths = ( 203 | ); 204 | runOnlyForDeploymentPostprocessing = 0; 205 | shellPath = /bin/sh; 206 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; 207 | }; 208 | /* End PBXShellScriptBuildPhase section */ 209 | 210 | /* Begin PBXSourcesBuildPhase section */ 211 | 97C146EA1CF9000F007C117D /* Sources */ = { 212 | isa = PBXSourcesBuildPhase; 213 | buildActionMask = 2147483647; 214 | files = ( 215 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, 216 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, 217 | ); 218 | runOnlyForDeploymentPostprocessing = 0; 219 | }; 220 | /* End PBXSourcesBuildPhase section */ 221 | 222 | /* Begin PBXVariantGroup section */ 223 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = { 224 | isa = PBXVariantGroup; 225 | children = ( 226 | 97C146FB1CF9000F007C117D /* Base */, 227 | ); 228 | name = Main.storyboard; 229 | sourceTree = ""; 230 | }; 231 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { 232 | isa = PBXVariantGroup; 233 | children = ( 234 | 97C147001CF9000F007C117D /* Base */, 235 | ); 236 | name = LaunchScreen.storyboard; 237 | sourceTree = ""; 238 | }; 239 | /* End PBXVariantGroup section */ 240 | 241 | /* Begin XCBuildConfiguration section */ 242 | 249021D3217E4FDB00AE95B9 /* Profile */ = { 243 | isa = XCBuildConfiguration; 244 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 245 | buildSettings = { 246 | ALWAYS_SEARCH_USER_PATHS = NO; 247 | CLANG_ANALYZER_NONNULL = YES; 248 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 249 | CLANG_CXX_LIBRARY = "libc++"; 250 | CLANG_ENABLE_MODULES = YES; 251 | CLANG_ENABLE_OBJC_ARC = YES; 252 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 253 | CLANG_WARN_BOOL_CONVERSION = YES; 254 | CLANG_WARN_COMMA = YES; 255 | CLANG_WARN_CONSTANT_CONVERSION = YES; 256 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 257 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 258 | CLANG_WARN_EMPTY_BODY = YES; 259 | CLANG_WARN_ENUM_CONVERSION = YES; 260 | CLANG_WARN_INFINITE_RECURSION = YES; 261 | CLANG_WARN_INT_CONVERSION = YES; 262 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 263 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 264 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 265 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 266 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 267 | CLANG_WARN_STRICT_PROTOTYPES = YES; 268 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 269 | CLANG_WARN_UNREACHABLE_CODE = YES; 270 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 271 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 272 | COPY_PHASE_STRIP = NO; 273 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 274 | ENABLE_NS_ASSERTIONS = NO; 275 | ENABLE_STRICT_OBJC_MSGSEND = YES; 276 | GCC_C_LANGUAGE_STANDARD = gnu99; 277 | GCC_NO_COMMON_BLOCKS = YES; 278 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 279 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 280 | GCC_WARN_UNDECLARED_SELECTOR = YES; 281 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 282 | GCC_WARN_UNUSED_FUNCTION = YES; 283 | GCC_WARN_UNUSED_VARIABLE = YES; 284 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 285 | MTL_ENABLE_DEBUG_INFO = NO; 286 | SDKROOT = iphoneos; 287 | SUPPORTED_PLATFORMS = iphoneos; 288 | TARGETED_DEVICE_FAMILY = "1,2"; 289 | VALIDATE_PRODUCT = YES; 290 | }; 291 | name = Profile; 292 | }; 293 | 249021D4217E4FDB00AE95B9 /* Profile */ = { 294 | isa = XCBuildConfiguration; 295 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 296 | buildSettings = { 297 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 298 | CLANG_ENABLE_MODULES = YES; 299 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 300 | ENABLE_BITCODE = NO; 301 | FRAMEWORK_SEARCH_PATHS = ( 302 | "$(inherited)", 303 | "$(PROJECT_DIR)/Flutter", 304 | ); 305 | INFOPLIST_FILE = Runner/Info.plist; 306 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 307 | LIBRARY_SEARCH_PATHS = ( 308 | "$(inherited)", 309 | "$(PROJECT_DIR)/Flutter", 310 | ); 311 | PRODUCT_BUNDLE_IDENTIFIER = com.paras.flowerapp; 312 | PRODUCT_NAME = "$(TARGET_NAME)"; 313 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 314 | SWIFT_VERSION = 5.0; 315 | VERSIONING_SYSTEM = "apple-generic"; 316 | }; 317 | name = Profile; 318 | }; 319 | 97C147031CF9000F007C117D /* Debug */ = { 320 | isa = XCBuildConfiguration; 321 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 322 | buildSettings = { 323 | ALWAYS_SEARCH_USER_PATHS = NO; 324 | CLANG_ANALYZER_NONNULL = YES; 325 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 326 | CLANG_CXX_LIBRARY = "libc++"; 327 | CLANG_ENABLE_MODULES = YES; 328 | CLANG_ENABLE_OBJC_ARC = YES; 329 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 330 | CLANG_WARN_BOOL_CONVERSION = YES; 331 | CLANG_WARN_COMMA = YES; 332 | CLANG_WARN_CONSTANT_CONVERSION = YES; 333 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 334 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 335 | CLANG_WARN_EMPTY_BODY = YES; 336 | CLANG_WARN_ENUM_CONVERSION = YES; 337 | CLANG_WARN_INFINITE_RECURSION = YES; 338 | CLANG_WARN_INT_CONVERSION = YES; 339 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 340 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 341 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 342 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 343 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 344 | CLANG_WARN_STRICT_PROTOTYPES = YES; 345 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 346 | CLANG_WARN_UNREACHABLE_CODE = YES; 347 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 348 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 349 | COPY_PHASE_STRIP = NO; 350 | DEBUG_INFORMATION_FORMAT = dwarf; 351 | ENABLE_STRICT_OBJC_MSGSEND = YES; 352 | ENABLE_TESTABILITY = YES; 353 | GCC_C_LANGUAGE_STANDARD = gnu99; 354 | GCC_DYNAMIC_NO_PIC = NO; 355 | GCC_NO_COMMON_BLOCKS = YES; 356 | GCC_OPTIMIZATION_LEVEL = 0; 357 | GCC_PREPROCESSOR_DEFINITIONS = ( 358 | "DEBUG=1", 359 | "$(inherited)", 360 | ); 361 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 362 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 363 | GCC_WARN_UNDECLARED_SELECTOR = YES; 364 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 365 | GCC_WARN_UNUSED_FUNCTION = YES; 366 | GCC_WARN_UNUSED_VARIABLE = YES; 367 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 368 | MTL_ENABLE_DEBUG_INFO = YES; 369 | ONLY_ACTIVE_ARCH = YES; 370 | SDKROOT = iphoneos; 371 | TARGETED_DEVICE_FAMILY = "1,2"; 372 | }; 373 | name = Debug; 374 | }; 375 | 97C147041CF9000F007C117D /* Release */ = { 376 | isa = XCBuildConfiguration; 377 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 378 | buildSettings = { 379 | ALWAYS_SEARCH_USER_PATHS = NO; 380 | CLANG_ANALYZER_NONNULL = YES; 381 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 382 | CLANG_CXX_LIBRARY = "libc++"; 383 | CLANG_ENABLE_MODULES = YES; 384 | CLANG_ENABLE_OBJC_ARC = YES; 385 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 386 | CLANG_WARN_BOOL_CONVERSION = YES; 387 | CLANG_WARN_COMMA = YES; 388 | CLANG_WARN_CONSTANT_CONVERSION = YES; 389 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 390 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 391 | CLANG_WARN_EMPTY_BODY = YES; 392 | CLANG_WARN_ENUM_CONVERSION = YES; 393 | CLANG_WARN_INFINITE_RECURSION = YES; 394 | CLANG_WARN_INT_CONVERSION = YES; 395 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 396 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 397 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 398 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 399 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 400 | CLANG_WARN_STRICT_PROTOTYPES = YES; 401 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 402 | CLANG_WARN_UNREACHABLE_CODE = YES; 403 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 404 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 405 | COPY_PHASE_STRIP = NO; 406 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 407 | ENABLE_NS_ASSERTIONS = NO; 408 | ENABLE_STRICT_OBJC_MSGSEND = YES; 409 | GCC_C_LANGUAGE_STANDARD = gnu99; 410 | GCC_NO_COMMON_BLOCKS = YES; 411 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 412 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 413 | GCC_WARN_UNDECLARED_SELECTOR = YES; 414 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 415 | GCC_WARN_UNUSED_FUNCTION = YES; 416 | GCC_WARN_UNUSED_VARIABLE = YES; 417 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 418 | MTL_ENABLE_DEBUG_INFO = NO; 419 | SDKROOT = iphoneos; 420 | SUPPORTED_PLATFORMS = iphoneos; 421 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 422 | TARGETED_DEVICE_FAMILY = "1,2"; 423 | VALIDATE_PRODUCT = YES; 424 | }; 425 | name = Release; 426 | }; 427 | 97C147061CF9000F007C117D /* Debug */ = { 428 | isa = XCBuildConfiguration; 429 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 430 | buildSettings = { 431 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 432 | CLANG_ENABLE_MODULES = YES; 433 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 434 | ENABLE_BITCODE = NO; 435 | FRAMEWORK_SEARCH_PATHS = ( 436 | "$(inherited)", 437 | "$(PROJECT_DIR)/Flutter", 438 | ); 439 | INFOPLIST_FILE = Runner/Info.plist; 440 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 441 | LIBRARY_SEARCH_PATHS = ( 442 | "$(inherited)", 443 | "$(PROJECT_DIR)/Flutter", 444 | ); 445 | PRODUCT_BUNDLE_IDENTIFIER = com.paras.flowerapp; 446 | PRODUCT_NAME = "$(TARGET_NAME)"; 447 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 448 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 449 | SWIFT_VERSION = 5.0; 450 | VERSIONING_SYSTEM = "apple-generic"; 451 | }; 452 | name = Debug; 453 | }; 454 | 97C147071CF9000F007C117D /* Release */ = { 455 | isa = XCBuildConfiguration; 456 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 457 | buildSettings = { 458 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 459 | CLANG_ENABLE_MODULES = YES; 460 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 461 | ENABLE_BITCODE = NO; 462 | FRAMEWORK_SEARCH_PATHS = ( 463 | "$(inherited)", 464 | "$(PROJECT_DIR)/Flutter", 465 | ); 466 | INFOPLIST_FILE = Runner/Info.plist; 467 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 468 | LIBRARY_SEARCH_PATHS = ( 469 | "$(inherited)", 470 | "$(PROJECT_DIR)/Flutter", 471 | ); 472 | PRODUCT_BUNDLE_IDENTIFIER = com.paras.flowerapp; 473 | PRODUCT_NAME = "$(TARGET_NAME)"; 474 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 475 | SWIFT_VERSION = 5.0; 476 | VERSIONING_SYSTEM = "apple-generic"; 477 | }; 478 | name = Release; 479 | }; 480 | /* End XCBuildConfiguration section */ 481 | 482 | /* Begin XCConfigurationList section */ 483 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { 484 | isa = XCConfigurationList; 485 | buildConfigurations = ( 486 | 97C147031CF9000F007C117D /* Debug */, 487 | 97C147041CF9000F007C117D /* Release */, 488 | 249021D3217E4FDB00AE95B9 /* Profile */, 489 | ); 490 | defaultConfigurationIsVisible = 0; 491 | defaultConfigurationName = Release; 492 | }; 493 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { 494 | isa = XCConfigurationList; 495 | buildConfigurations = ( 496 | 97C147061CF9000F007C117D /* Debug */, 497 | 97C147071CF9000F007C117D /* Release */, 498 | 249021D4217E4FDB00AE95B9 /* Profile */, 499 | ); 500 | defaultConfigurationIsVisible = 0; 501 | defaultConfigurationName = Release; 502 | }; 503 | /* End XCConfigurationList section */ 504 | }; 505 | rootObject = 97C146E61CF9000F007C117D /* Project object */; 506 | } 507 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/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/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/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/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/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/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/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/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/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/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/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/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/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/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/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/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/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/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/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/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/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/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/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/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/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/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/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/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/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/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flutter-devs/Flower_animation/cc68fad7888e603f07c048ca93975316294327b5/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 | flowerapp 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | $(FLUTTER_BUILD_NAME) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | UIViewControllerBasedStatusBarAppearance 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /lib/Cart_Items_screen.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'dart:math'; 3 | 4 | import 'package:flowerapp/homepage.dart'; 5 | import 'package:flutter/material.dart'; 6 | import 'package:flutter/widgets.dart'; 7 | import 'package:font_awesome_flutter/font_awesome_flutter.dart'; 8 | import 'package:google_fonts/google_fonts.dart'; 9 | 10 | import 'model/local_model/homepage_view_model.dart'; 11 | class CartItemsScreen extends StatefulWidget { 12 | @override 13 | _CartItemsScreenState createState() => _CartItemsScreenState(); 14 | } 15 | 16 | class _CartItemsScreenState extends State { 17 | 18 | HomePageViewModel _homePageViewModel = HomePageViewModel(); 19 | 20 | 21 | var backArrowMarginLeft = 5.0; 22 | 23 | var animationDuration = Duration(microseconds: 0); 24 | 25 | var addToCartMarginRight =5.0; 26 | 27 | var backGroundAnimatedImageHeight = 430.0; 28 | 29 | var flowerDescriptionTextAnimation = 200.0; 30 | 31 | var moreInfoComponentHeight = 240.0; 32 | 33 | var priceInfoMargin = 0.0; 34 | 35 | var addToCartMargin = 70.0; 36 | 37 | var itemPriceOpacityValue=0.0; 38 | 39 | var myCartItemsDurationAnimation =Duration(microseconds: 0); 40 | 41 | var shoppingBagAnimationRight =0.0; 42 | 43 | var itemPurchasedViewleftAnimation_1 = 150.0; 44 | 45 | var itemPurchasedViewleftAnimation_2=200.0; 46 | 47 | var itemPurchasedViewleftAnimation_3 =250.0; 48 | 49 | var titleTopMarginAnimation =0.0; 50 | 51 | var animatedBackGroundClipperWidth =double.infinity; 52 | @override 53 | 54 | Widget build(BuildContext context) { 55 | var size = MediaQuery.of(context).size; 56 | animateProperties(size); 57 | return SafeArea( 58 | child: Scaffold( 59 | bottomNavigationBar: priceInfoComponent(size), 60 | body: SingleChildScrollView( 61 | child: Column( 62 | children: [ 63 | Stack( 64 | // fit: StackFit.expand, 65 | children: [ 66 | Container( 67 | height: size.height, 68 | width: size.width, 69 | 70 | // color: Color(0xff6CA62A), 71 | color: Color(0xff274531), 72 | ), 73 | stackBackgroundImage(size), 74 | topBarActions(size), 75 | topBarActionsTitle(size), 76 | myCartItemsView(size), 77 | ], 78 | ), 79 | 80 | ], 81 | ), 82 | ), 83 | 84 | ), 85 | ); 86 | 87 | } 88 | 89 | stackBackgroundImage(size) => ClipPath( 90 | clipper: CustomLeafClipper(), 91 | child: AnimatedContainer( 92 | duration: Duration(milliseconds: 800), 93 | curve: Curves.easeIn, 94 | width: animatedBackGroundClipperWidth, 95 | height: 200, 96 | decoration: BoxDecoration( 97 | color: Color(0xff6CA62A), 98 | // gradient: LinearGradient( 99 | // begin: Alignment.centerLeft, 100 | // end: Alignment.centerRight, 101 | // colors: [Color(0xff6CA62A), Color(0xff315D47)]) 102 | ), 103 | ), 104 | ); 105 | topBarActions(Size size) =>Positioned( 106 | top: 30.0, 107 | left: 0.0, 108 | right: 0.0, 109 | child: Row( 110 | children: [ 111 | AnimatedContainer( 112 | margin: EdgeInsets.only(left: backArrowMarginLeft), 113 | duration: Duration(seconds: 1), 114 | curve: Curves.easeIn, 115 | child: InkWell( 116 | onTap: ()=>Navigator.push(context, MaterialPageRoute(builder: (context)=>HomePage())), 117 | child: Icon(Icons.arrow_back_ios,color: Colors.white,))), 118 | Spacer(), 119 | AnimatedContainer( 120 | curve: Curves.easeIn, 121 | margin: EdgeInsets.only(right: shoppingBagAnimationRight), 122 | duration: animationDuration, 123 | child: Image.asset("assets/images/shop_bag.png",color: Colors.white,fit: BoxFit.cover,height: 24,width: 24,)), 124 | 125 | ], 126 | )); 127 | 128 | void animateProperties(size) { 129 | Timer(const Duration(microseconds: 0), () { 130 | setState(() { 131 | titleTopMarginAnimation =35.0; 132 | addToCartMargin =18.0; 133 | priceInfoMargin =170.0; 134 | itemPurchasedViewleftAnimation_3 =30.0; 135 | itemPurchasedViewleftAnimation_2 =30.0; 136 | itemPurchasedViewleftAnimation_1 =30.0; 137 | myCartItemsDurationAnimation =Duration(milliseconds: 200); 138 | backArrowMarginLeft = 15.0; 139 | animationDuration = Duration(milliseconds: 600); 140 | addToCartMarginRight =10.0; 141 | backGroundAnimatedImageHeight = 300.0; 142 | flowerDescriptionTextAnimation =20.0; 143 | moreInfoComponentHeight = 10.0; 144 | itemPriceOpacityValue=1.0; 145 | shoppingBagAnimationRight =10.0; 146 | animatedBackGroundClipperWidth =size.width/1.4; 147 | }); 148 | }); 149 | } 150 | 151 | myCartItemsView(Size size) =>Positioned( 152 | left: 0, 153 | top: size.height/7, 154 | child: AnimatedContainer( 155 | height: size.height/1.2, 156 | width: size.width, 157 | duration: myCartItemsDurationAnimation, 158 | // curve: Curves.bounceIn, 159 | 160 | 161 | margin: EdgeInsets.only(top: moreInfoComponentHeight), 162 | decoration: BoxDecoration( 163 | color: Colors.white, 164 | borderRadius: BorderRadius.only( 165 | topLeft: Radius.circular(40.0), 166 | topRight: Radius.circular(40.0), 167 | ) 168 | ), 169 | child: Column( 170 | mainAxisSize: MainAxisSize.max, 171 | // mainAxisAlignment: MainAxisAlignment.spa, 172 | children: [ 173 | SizedBox(height: 25,), 174 | totalPieceTextView("A total of 3 Pieces"), 175 | SizedBox(height: 10,), 176 | itemPurchasedViewWithDiscription("Magical Pastel","Classic Bouquet","\$ 45.99",HomePageViewModel().flowerList[0].photoUrl,itemPurchasedViewleftAnimation_1), 177 | itemPurchasedViewWithDiscription("Pale Yellow & Lifac","Delux Bouquet","\$ 45.99",HomePageViewModel().flowerList[1].photoUrl,itemPurchasedViewleftAnimation_2), 178 | itemPurchasedViewWithDiscription("Happiness in pink","Gentle Bouquet","\$ 45.99",HomePageViewModel().flowerList[4].photoUrl,itemPurchasedViewleftAnimation_3), 179 | // addDecorationSearchComponent(size), 180 | // otherItemsToBuy(size), 181 | // priceInfoComponent(size), 182 | ], 183 | ), 184 | ), 185 | ); 186 | 187 | totalPieceTextView(String s) =>AnimatedContainer( 188 | duration: Duration(milliseconds: 600), 189 | curve: Curves.easeInOutBack, 190 | alignment: Alignment.topLeft, 191 | margin: EdgeInsets.only(top: 15,left: flowerDescriptionTextAnimation,bottom: 5,right: 0), 192 | child: Container( 193 | margin: EdgeInsets.only(left: 20), 194 | child: Text(s, 195 | style: GoogleFonts.roboto( 196 | fontStyle: FontStyle.normal, color: Colors.grey,fontWeight: FontWeight.w500)), 197 | ), 198 | ); 199 | 200 | itemPurchasedViewWithDiscription(String s, String t, String u, String itemUrl, var itemPurchasedViewleftAnimation) => AnimatedContainer( 201 | duration: Duration(milliseconds: 800), 202 | curve: Curves.easeInOutBack, 203 | alignment: Alignment.topLeft, 204 | margin: EdgeInsets.only(top: 30,left: itemPurchasedViewleftAnimation,bottom:0,right: 0), 205 | child: Row( 206 | mainAxisAlignment: MainAxisAlignment.start, 207 | children: [ 208 | Image.asset(itemUrl,width: 85,height: 65,fit: BoxFit.contain,), 209 | SizedBox(width: 30,), 210 | Container( 211 | height: 65, 212 | child: Column( 213 | crossAxisAlignment: CrossAxisAlignment.start, 214 | // mainAxisAlignment: MainAxisAlignment.start, 215 | children: [ 216 | Container( 217 | margin: EdgeInsets.only(top: 0,bottom: 7), 218 | child: Text(s, 219 | style: GoogleFonts.roboto( 220 | fontStyle: FontStyle.normal, color: Colors.black,fontWeight: FontWeight.bold,fontSize: 16)), 221 | ) , Container( 222 | 223 | margin: EdgeInsets.only(top: 0,bottom: 0), 224 | child: Text(t, 225 | style: GoogleFonts.roboto( 226 | fontStyle: FontStyle.normal, color: Colors.grey,fontWeight: FontWeight.w500)), 227 | ) , 228 | Spacer(), 229 | Container( 230 | 231 | margin: EdgeInsets.only(top: 7,bottom: 0), 232 | child: Text(u, 233 | style: GoogleFonts.roboto( 234 | fontStyle: FontStyle.normal, color: Color(0xff6CA62A),fontWeight: FontWeight.bold)), 235 | ), 236 | 237 | ], 238 | ), 239 | ) 240 | ], 241 | ), 242 | ); 243 | 244 | priceInfoComponent(Size size) =>AnimatedContainer( 245 | height: priceInfoMargin, 246 | curve: Curves.easeInOutBack, 247 | duration: Duration(milliseconds: 600), 248 | margin: EdgeInsets.only(top: 10 ), 249 | width: size.width, 250 | decoration: BoxDecoration( 251 | borderRadius: BorderRadius.only( 252 | topLeft: Radius.circular(40.0), 253 | topRight: Radius.circular(40.0), 254 | ), 255 | color: Color(0xff274531), 256 | ), 257 | child: Column( 258 | // mainAxisAlignment: MainAxisAlignment.spaceBetween, 259 | children: [ 260 | SizedBox(height: 8,), 261 | taxes(), 262 | total(), 263 | Spacer(), 264 | addToCartView(size), 265 | // taxes(), 266 | ], 267 | ) , 268 | ); 269 | taxes() =>Container( 270 | margin: EdgeInsets.only(left: 30,right: 30,top: 20), 271 | child: Row( 272 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 273 | children: [ 274 | Container( 275 | margin: EdgeInsets.only(top: 10), 276 | child: Text("Taxes", 277 | style: GoogleFonts.roboto( 278 | fontStyle: FontStyle.normal, color: Colors.grey[400],fontWeight: FontWeight.w500,)), 279 | ), 280 | Container( 281 | margin: EdgeInsets.only(top: 10), 282 | child: Text("\$ 7.00", 283 | style: GoogleFonts.roboto( 284 | fontStyle: FontStyle.normal, color: Colors.grey[400],fontWeight: FontWeight.w500,)), 285 | ) 286 | 287 | 288 | ], 289 | ), 290 | ); 291 | 292 | total() =>Container( 293 | margin: EdgeInsets.only(left: 30,right: 15,top: 10), 294 | child: Row( 295 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 296 | children: [ 297 | Container( 298 | margin: EdgeInsets.only(top: 10), 299 | child: Text("Total Price", 300 | style: GoogleFonts.roboto( 301 | fontStyle: FontStyle.normal, color: Colors.white,fontWeight: FontWeight.w500)), 302 | ), 303 | Row( 304 | mainAxisAlignment: MainAxisAlignment.end, 305 | textBaseline: TextBaseline.alphabetic, 306 | children: [ 307 | Container( 308 | alignment: Alignment.topRight, 309 | margin: EdgeInsets.only(top: 0,bottom: 0,right: 2), 310 | child: Text("\$", 311 | style: GoogleFonts.lato( 312 | fontStyle: FontStyle.normal, color: Colors.grey,fontSize: 12)), 313 | ), 314 | Container( 315 | alignment: Alignment.topRight, 316 | margin: EdgeInsets.only(top: 0,right: 10,bottom: 2), 317 | child: Text("45.99", 318 | style: GoogleFonts.lato( 319 | fontStyle: FontStyle.normal, color: Colors.white, fontSize: 24,fontWeight: FontWeight.bold)), 320 | ), 321 | ], 322 | ) 323 | 324 | 325 | ], 326 | ), 327 | ); 328 | 329 | addToCartView(Size size) =>AnimatedContainer( 330 | height: 50, 331 | duration: Duration(milliseconds: 400), 332 | margin: EdgeInsets.only(top: addToCartMargin), 333 | width: size.width, 334 | decoration: BoxDecoration( 335 | color: Color(0xffF2A510), 336 | borderRadius: BorderRadius.only( 337 | topLeft: Radius.elliptical(40, 35), 338 | topRight: Radius.elliptical(40, 35), 339 | ), 340 | ), 341 | child: Center( 342 | child: Text("Add To Cart", 343 | style: GoogleFonts.roboto( 344 | fontStyle: FontStyle.normal, color: Colors.white,fontWeight: FontWeight.bold,wordSpacing: 2.0,fontSize: 18)), 345 | ), 346 | 347 | 348 | 349 | 350 | 351 | ); 352 | topBarActionsTitle(Size size) =>AnimatedPositioned( 353 | curve: Curves.easeIn, 354 | top: titleTopMarginAnimation, 355 | duration: Duration(milliseconds: 400), 356 | child:Container( 357 | width: size.width, 358 | child: Center( 359 | child: Text("My Cart", 360 | style: GoogleFonts.roboto( 361 | fontStyle: FontStyle.normal, color: Colors.white,fontWeight: FontWeight.bold,fontSize: 16)), 362 | ), 363 | ),); 364 | 365 | 366 | } 367 | 368 | class CustomLeafClipper extends CustomClipper { 369 | @override 370 | Path getClip(Size size) { 371 | var path = Path(); 372 | 373 | path.lineTo(0.0,size.height); 374 | path.lineTo(size.width*0.6,size.height); 375 | 376 | path.quadraticBezierTo(0, size.height/4, size.width*0.4, 0); 377 | 378 | path.close(); 379 | return path; 380 | } 381 | 382 | @override 383 | bool shouldReclip(CustomClipper oldClipper) { 384 | return true; 385 | } 386 | } 387 | -------------------------------------------------------------------------------- /lib/const/ui_const.dart: -------------------------------------------------------------------------------- 1 | class UiConstant { 2 | 3 | static final specialityBouquet ="Speciality Bouquet"; 4 | static final flowerDescription ="High Quality artificial foam flowers for making bouquets ,center ,kissing balls or any other flower decorations that you want at your wedding "; 5 | } -------------------------------------------------------------------------------- /lib/flower_view_screen.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:flowerapp/const/ui_const.dart'; 4 | import 'package:flowerapp/model/local_model/homepage_view_model.dart'; 5 | import 'package:flutter/animation.dart'; 6 | import 'package:flutter/cupertino.dart'; 7 | import 'package:flutter/material.dart'; 8 | import 'package:flutter_widgets/flutter_widgets.dart'; 9 | import 'package:font_awesome_flutter/font_awesome_flutter.dart'; 10 | import 'package:google_fonts/google_fonts.dart'; 11 | 12 | import 'Cart_Items_screen.dart'; 13 | class FlowerViewScreen extends StatefulWidget { 14 | 15 | int index; 16 | var photo; 17 | 18 | 19 | FlowerViewScreen({this.index, this.photo}); 20 | 21 | @override 22 | _FlowerViewScreenState createState() => _FlowerViewScreenState(); 23 | } 24 | 25 | class _FlowerViewScreenState extends State { 26 | var stepIcons = [Icons.edit_location, Icons.arrow_back_ios,Icons.edit_location,]; 27 | final List titles = ["Classic", "Delux", "Premium"]; 28 | int _curStep = 2; 29 | HomePageViewModel _homePageViewModel = HomePageViewModel(); 30 | 31 | 32 | var backArrowMarginLeft = 5.0; 33 | 34 | var animationDuration = Duration(microseconds: 0); 35 | 36 | var addToCartMarginRight =5.0; 37 | 38 | var backGroundAnimatedImageHeight = 430.0; 39 | 40 | var flowerDescriptionTextAnimation = 50.0; 41 | 42 | var moreInfoComponentHeight = 40.0; 43 | 44 | var priceInfoMargin = 120.0; 45 | 46 | var addToCartMargin = 40.0; 47 | 48 | var itemPriceOpacityValue=0.0; 49 | 50 | bool itemPriceViewVisibility = false; 51 | 52 | var mimosaWidth =0.0; 53 | 54 | var mimosaHeight =0.0; 55 | 56 | var mimosaPriceWidth = 0.0; 57 | 58 | var mimosaPriceHeight =0.0; 59 | 60 | 61 | 62 | @override 63 | Widget build(BuildContext context) { 64 | var size = MediaQuery.of(context).size; 65 | animateProperties(); 66 | return SafeArea( 67 | child: Scaffold( 68 | // backgroundColor: Color(0xff274531), 69 | body: SingleChildScrollView( 70 | child: Column( 71 | mainAxisAlignment: MainAxisAlignment.start, 72 | children: [ 73 | Stack( 74 | children: [ 75 | stackBackgroundImage(size), 76 | addToCart(size), 77 | topBarActions(size), 78 | ], 79 | ), 80 | SizedBox(height: 14,), 81 | Hero( 82 | tag: "Bouquet OF ${widget.index}", 83 | child: Container( 84 | margin: EdgeInsets.only(left: 10), 85 | child: textViewFlower("Bouquet of ${HomePageViewModel().flowerList[widget.index].name}",1.0,0.0), 86 | ), 87 | ), 88 | SizedBox(height: 4,), 89 | Hero( 90 | tag: "Magical Pastel ${widget.index}", 91 | child: textView(), 92 | ), 93 | Container( 94 | margin: EdgeInsets.only(left: 10,right: 0,bottom: 22), 95 | child: textViewFlower(UiConstant.flowerDescription,2.0,1.9),), 96 | StepProgressView(icons: stepIcons,width: MediaQuery.of(context).size.width,curStep: _curStep,color: Color(0xffF2A510), 97 | titles: titles,), 98 | plantsQuantityViewPrice(), 99 | addDEcoration(size), 100 | ], 101 | ), 102 | ), 103 | ), 104 | ); 105 | } 106 | 107 | addToCart(Size size) => Positioned( 108 | bottom: 0, 109 | right: 10, 110 | child: Container( 111 | margin: EdgeInsets.only(right: 5), 112 | height: 50, 113 | width: 50, 114 | decoration: BoxDecoration( 115 | shape: BoxShape.circle, 116 | color: Color(0xff76A73B), 117 | ), 118 | child: Center( 119 | child: Hero( 120 | tag: "shopping_cart ${widget.index}", 121 | child: InkWell( 122 | onTap: ()=>Navigator.push(context, MaterialPageRoute(builder: (context)=>CartItemsScreen())), 123 | child: Image.asset("assets/images/shop_bag.png",color: Colors.white,fit: BoxFit.fill,height: 24,width: 24,), 124 | ), 125 | ), 126 | ), 127 | )); 128 | 129 | stackBackgroundImage(size) => AnimatedContainer( 130 | padding: EdgeInsets.only(bottom: 20), 131 | curve: Curves.easeIn, 132 | duration: Duration(milliseconds: 600), 133 | height: backGroundAnimatedImageHeight, 134 | child: Hero( 135 | tag: "flower ${widget.index}", 136 | child: Image.asset(widget.photo,fit: BoxFit.scaleDown,width: size.width,)), 137 | ); 138 | 139 | textViewFlower(s,wordSpacing,lineSpace) => AnimatedContainer( 140 | duration: Duration(milliseconds: 600), 141 | curve: Curves.easeIn, 142 | alignment: Alignment.topLeft, 143 | margin: EdgeInsets.only(top: flowerDescriptionTextAnimation,left: 10,bottom: 0,right: 0), 144 | child: Text(s, 145 | style: GoogleFonts.roboto( 146 | fontStyle: FontStyle.normal, color: Colors.grey,fontWeight: FontWeight.w500,wordSpacing: wordSpacing,height: lineSpace)), 147 | ); 148 | 149 | textView() =>Container( 150 | alignment: Alignment.topLeft, 151 | margin: EdgeInsets.only(top: 7,left: 18,bottom: 7), 152 | 153 | child: Text("Magical Pastel", 154 | style: GoogleFonts.roboto( 155 | fontStyle: FontStyle.normal, color: Colors.black,fontWeight: FontWeight.bold,fontSize: 21)), 156 | ); 157 | 158 | plantsQuantityViewPrice() =>Container( 159 | margin: EdgeInsets.only(top: 10), 160 | child: Column( 161 | children: [ 162 | SizedBox(height: 20,), 163 | Container( 164 | margin: EdgeInsets.only(left: 18,right: 40), 165 | child: Row( 166 | // mainAxisAlignment: MainAxisAlignment.spaceBetween, 167 | children: [ 168 | 169 | textViewFlower("Plants",1.0,0.0), 170 | Spacer(), 171 | textViewFlower("Quantity", 1.0,0.0), 172 | Spacer(), 173 | textViewFlower("Price", 1.0,0.0), 174 | 175 | 176 | ], 177 | ), 178 | ), 179 | SizedBox( 180 | height: 4, 181 | ), 182 | Container( 183 | margin: EdgeInsets.only(right: 30,left: 27), 184 | child: Row( 185 | textBaseline: TextBaseline.alphabetic, 186 | // mainAxisAlignment: MainAxisAlignment.spaceBetween, 187 | children: [ 188 | Text(_homePageViewModel.flowerList[widget.index].name, 189 | style: GoogleFonts.roboto( 190 | fontStyle: FontStyle.normal, color: Colors.black,fontWeight: FontWeight.bold,)), 191 | Spacer(), 192 | Text("${_homePageViewModel.flowerList[widget.index].quantity} flowers", 193 | style: GoogleFonts.roboto( 194 | fontStyle: FontStyle.normal, color: Colors.black,fontWeight: FontWeight.bold,)), 195 | Spacer(), 196 | Row( 197 | mainAxisAlignment: MainAxisAlignment.end, 198 | textBaseline: TextBaseline.alphabetic, 199 | children: [ 200 | Container( 201 | alignment: Alignment.topRight, 202 | margin: EdgeInsets.only(top: 0,bottom: 0,right: 2), 203 | child: Text("\$", 204 | style: GoogleFonts.lato( 205 | fontStyle: FontStyle.normal, color: Colors.grey,fontSize: 12)), 206 | ), 207 | Container( 208 | alignment: Alignment.topRight, 209 | margin: EdgeInsets.only(top: 0,right: 10,bottom: 2), 210 | child: Text("34", 211 | style: GoogleFonts.lato( 212 | fontStyle: FontStyle.normal, color: Color(0xffF2A510), fontSize: 24,fontWeight: FontWeight.bold)), 213 | ), 214 | ], 215 | ), 216 | ], 217 | ), 218 | ), 219 | ], 220 | ), 221 | ); 222 | 223 | topBarActions(Size size) =>Positioned( 224 | top: 20.0, 225 | left: 0.0, 226 | right: 0.0, 227 | child: Row( 228 | children: [ 229 | AnimatedContainer( 230 | margin: EdgeInsets.only(left: backArrowMarginLeft), 231 | duration: Duration(seconds: 1), 232 | curve: Curves.easeIn, 233 | child: InkWell( 234 | onTap: ()=>Navigator.of(context).pop(), 235 | child: Icon(Icons.arrow_back_ios,color: Color(0xff274531),))), 236 | Spacer(), 237 | AnimatedContainer( 238 | curve: Curves.easeIn, 239 | margin: EdgeInsets.only(right: 10), 240 | duration: animationDuration, 241 | child: Icon(FontAwesomeIcons.heart,color: Color(0xff274531),)), 242 | AnimatedContainer( 243 | margin: EdgeInsets.only(right: addToCartMarginRight), 244 | duration: Duration(milliseconds: 600), 245 | child: InkWell( 246 | onTap: ()=>Navigator.push(context, MaterialPageRoute(builder: (context)=>CartItemsScreen())),child: Image.asset( 247 | "assets/images/shopping_cart.png", 248 | height: 24, 249 | width: 24, 250 | fit: BoxFit.cover, 251 | color: Color(0xff274531), 252 | ))), 253 | ], 254 | )); 255 | 256 | void animateProperties() { 257 | Timer(const Duration(microseconds: 0), () { 258 | setState(() { 259 | backArrowMarginLeft = 15.0; 260 | animationDuration = Duration(milliseconds: 600); 261 | addToCartMarginRight =20.0; 262 | backGroundAnimatedImageHeight = 220.0; 263 | flowerDescriptionTextAnimation =10.0; 264 | moreInfoComponentHeight = 18.0; 265 | itemPriceOpacityValue=1.0; 266 | 267 | }); 268 | }); 269 | } 270 | void animatemimosa() { 271 | Timer(const Duration(microseconds: 0), () { 272 | setState(() { 273 | mimosaWidth =90.0; 274 | mimosaHeight =15.0; 275 | mimosaPriceWidth =62.0; 276 | mimosaPriceHeight= 18.0; 277 | 278 | }); 279 | }); 280 | } 281 | 282 | addDEcoration(Size size) =>AnimatedContainer( 283 | duration: Duration(milliseconds: 800), 284 | curve: Curves.easeInOutBack, 285 | margin: EdgeInsets.only(top: moreInfoComponentHeight), 286 | decoration: BoxDecoration( 287 | color: Color(0xff76A73B), 288 | borderRadius: BorderRadius.only( 289 | topLeft: Radius.circular(40.0), 290 | topRight: Radius.circular(40.0), 291 | ) 292 | ), 293 | child: Column( 294 | mainAxisSize: MainAxisSize.min, 295 | children: [ 296 | addDecorationSearchComponent(size), 297 | otherItemsToBuy(size), 298 | priceInfoComponent(size), 299 | ], 300 | ), 301 | ); 302 | 303 | addDecorationSearchComponent(size) =>Container( 304 | margin: EdgeInsets.only(top: 30,left: 20,right: 20), 305 | child: Row( 306 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 307 | children: [ 308 | Text("Add Decorarion", 309 | style: GoogleFonts.roboto( 310 | fontStyle: FontStyle.normal, color: Colors.grey[100],fontWeight: FontWeight.bold,)), 311 | searchField(), 312 | 313 | ], 314 | ), 315 | ); 316 | 317 | searchField() =>Container( 318 | width: 83, 319 | height: 30, 320 | margin: EdgeInsets.only(right: 15), 321 | decoration: BoxDecoration( 322 | color: Color(0xff97C964), 323 | borderRadius: BorderRadius.circular(20.0) 324 | ), 325 | child: Center( 326 | child: Row( 327 | children: [ 328 | Container( 329 | margin: EdgeInsets.only(left: 8,right: 2), 330 | child: Icon(Icons.search,color: Color(0xff274531),size: 18,),), 331 | Text("Search", style: GoogleFonts.roboto( 332 | fontStyle: FontStyle.normal, color: Color(0xff274531),fontSize: 12),) 333 | ], 334 | ), 335 | ), 336 | ); 337 | 338 | otherItemsToBuy(size) => Container( 339 | width: size.width, 340 | height: 300, 341 | margin: EdgeInsets.only(top: 20,left: 10), 342 | child: Wrap( 343 | children: [ 344 | InkWell( 345 | onTap: (){ 346 | setState(() { 347 | itemPriceViewVisibility = true; 348 | }); 349 | animatemimosa(); 350 | }, 351 | child: itemView(_homePageViewModel.flowerList[0].itemUrl,_homePageViewModel.flowerList[0].item), 352 | ), 353 | 354 | itemView(_homePageViewModel.flowerList[1].itemUrl,_homePageViewModel.flowerList[1].item), 355 | itemView(_homePageViewModel.flowerList[2].itemUrl,_homePageViewModel.flowerList[2].item), 356 | itemView(_homePageViewModel.flowerList[3].itemUrl,_homePageViewModel.flowerList[3].item), 357 | itemView(_homePageViewModel.flowerList[4].itemUrl,_homePageViewModel.flowerList[4].item), 358 | Container( 359 | height: 90, 360 | width: 90, 361 | margin: EdgeInsets.only(left : 15,bottom: 10,top: 10,right: 10), 362 | decoration: BoxDecoration( 363 | color: Color(0xff274531), 364 | borderRadius: BorderRadius.circular(20.0), 365 | ), 366 | child: Center( 367 | child: Text("See All", 368 | style: GoogleFonts.roboto( 369 | fontStyle: FontStyle.normal, color: Colors.white,fontWeight: FontWeight.bold,)), 370 | ), 371 | ) 372 | ], 373 | ), 374 | ); 375 | 376 | itemView(String s, String t)=> Container( 377 | margin: EdgeInsets.only(left : 15,bottom: 10,top: 10,right: 10), 378 | child: Column( 379 | mainAxisAlignment: MainAxisAlignment.start, 380 | crossAxisAlignment: CrossAxisAlignment.start, 381 | children: [ 382 | Stack( 383 | children: [ 384 | ClipRRect( 385 | borderRadius: BorderRadius.circular(15.0), 386 | child: Image.network(s,width: 90,height: 90,fit: BoxFit.cover,)), 387 | Positioned( 388 | right: 4.0, 389 | top: 3.0, 390 | child: Container( 391 | height: 20, 392 | width: 20, 393 | decoration: BoxDecoration( 394 | color: Color(0xff274531), 395 | borderRadius: BorderRadius.circular(20.0), 396 | ), 397 | child: Center( 398 | child: Icon(FontAwesomeIcons.plus,color: Colors.white,size: 10,), 399 | ), 400 | ), 401 | ) 402 | ], 403 | ), 404 | Container( 405 | margin: EdgeInsets.only(top: 10), 406 | child: Text(t, 407 | style: GoogleFonts.roboto( 408 | fontStyle: FontStyle.normal, color: Colors.white,fontWeight: FontWeight.bold,)), 409 | ) 410 | ], 411 | ), 412 | ); 413 | 414 | priceInfoComponent(Size size) =>VisibilityDetector( 415 | key: Key("unique key"), 416 | onVisibilityChanged: (VisibilityInfo info) { 417 | setState(() { 418 | priceInfoMargin = 0.0; 419 | }); 420 | }, 421 | child: AnimatedContainer( 422 | duration: Duration(milliseconds: 600), 423 | curve: Curves.easeInCirc, 424 | margin: EdgeInsets.only(top: priceInfoMargin ), 425 | width: size.width, 426 | decoration: BoxDecoration( 427 | borderRadius: BorderRadius.only( 428 | topLeft: Radius.circular(40.0), 429 | topRight: Radius.circular(40.0), 430 | ), 431 | color: Color(0xff274531), 432 | ), 433 | child: Column( 434 | children: [ 435 | taxes(), 436 | itemPriceViewVisibility? itemPrice():Container(), 437 | total(), 438 | addToCartView(size), 439 | ], 440 | ) , 441 | )); 442 | 443 | taxes() =>Container( 444 | margin: EdgeInsets.only(left: 40,right: 40,top: 25), 445 | child: Row( 446 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 447 | children: [ 448 | Container( 449 | margin: EdgeInsets.only(top: 10), 450 | child: Text("Classic Bouquet", 451 | style: GoogleFonts.roboto( 452 | fontStyle: FontStyle.normal, color: Colors.grey[500])), 453 | ), 454 | Container( 455 | margin: EdgeInsets.only(top: 10), 456 | child: Text("\$ 34", 457 | style: GoogleFonts.roboto( 458 | fontStyle: FontStyle.normal, color: Colors.grey[500],fontSize: 16)), 459 | ) 460 | 461 | 462 | ], 463 | ), 464 | ); 465 | 466 | total() =>Container( 467 | margin: EdgeInsets.only(left: 40,right: 40,top: 10), 468 | child: Row( 469 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 470 | children: [ 471 | Container( 472 | margin: EdgeInsets.only(top: 10), 473 | child: Text("Sub Total", 474 | style: GoogleFonts.roboto( 475 | fontStyle: FontStyle.normal, color: Colors.white,fontWeight: FontWeight.bold,)), 476 | ), 477 | Row( 478 | mainAxisAlignment: MainAxisAlignment.end, 479 | textBaseline: TextBaseline.alphabetic, 480 | children: [ 481 | Container( 482 | alignment: Alignment.topRight, 483 | margin: EdgeInsets.only(top: 0,bottom: 0,right: 2), 484 | child: Text("\$", 485 | style: GoogleFonts.lato( 486 | fontStyle: FontStyle.normal, color: Colors.grey,fontSize: 12)), 487 | ), 488 | Container( 489 | alignment: Alignment.topRight, 490 | margin: EdgeInsets.only(top: 0,right: 10,bottom: 2), 491 | child: Text("45.99", 492 | style: GoogleFonts.lato( 493 | fontStyle: FontStyle.normal, color: Colors.white, fontSize: 24,fontWeight: FontWeight.bold)), 494 | ), 495 | ], 496 | ) 497 | 498 | ], 499 | ), 500 | ); 501 | 502 | addToCartView(Size size) =>VisibilityDetector( 503 | key: Key("unique key2"), 504 | onVisibilityChanged: (VisibilityInfo info) { 505 | setState(() { 506 | addToCartMargin = 20.0; 507 | }); 508 | }, 509 | child: AnimatedContainer( 510 | curve: Curves.easeInCirc, 511 | height: 60, 512 | duration: Duration(milliseconds: 600), 513 | margin: EdgeInsets.only(top: addToCartMargin), 514 | width: size.width, 515 | decoration: BoxDecoration( 516 | color: Color(0xffF2A510), 517 | borderRadius: BorderRadius.only( 518 | topLeft: Radius.elliptical(40, 35), 519 | topRight: Radius.elliptical(40, 35), 520 | ), 521 | ), 522 | child: Center( 523 | child: Text("Add To Cart", 524 | style: GoogleFonts.roboto( 525 | fontStyle: FontStyle.normal, color: Colors.white,fontWeight: FontWeight.bold,wordSpacing: 2.0,fontSize: 18)), 526 | ), 527 | 528 | 529 | 530 | 531 | 532 | )); 533 | 534 | itemPrice() => Container( 535 | 536 | margin: EdgeInsets.only(left: 40,right: 40,top: 0), 537 | child: Row( 538 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 539 | children: [ 540 | AnimatedContainer( 541 | duration: Duration(milliseconds: 800), 542 | // curve: Curves., 543 | width: mimosaWidth, 544 | height: mimosaHeight, 545 | margin: EdgeInsets.only(top: 10), 546 | child: Text("Mimosa", 547 | style: GoogleFonts.roboto( 548 | fontStyle: FontStyle.normal, color: Colors.grey[500])), 549 | ), 550 | AnimatedContainer( 551 | duration: Duration(milliseconds: 800), 552 | width: mimosaPriceWidth, 553 | height: mimosaPriceHeight, 554 | margin: EdgeInsets.only(top: 10), 555 | child: Text("\$ 11.04", 556 | style: GoogleFonts.roboto( 557 | fontStyle: FontStyle.normal, color: Colors.grey[500],fontSize: 17)), 558 | ) 559 | 560 | ], 561 | ), 562 | ); 563 | 564 | 565 | 566 | 567 | } 568 | 569 | class StepProgressView extends StatefulWidget { 570 | final double _width; 571 | final List _icons; 572 | final List _titles; 573 | final int _curStep; 574 | final Color _activeColor; 575 | 576 | StepProgressView({Key key, 577 | @required List icons, 578 | @required int curStep, 579 | List titles, 580 | @required double width, 581 | @required Color color}) : 582 | _icons = icons, 583 | _titles = titles, 584 | _curStep = curStep, 585 | _width = width, 586 | _activeColor = color, 587 | assert(curStep > 0 == true && curStep <= icons.length), 588 | assert(width > 0), 589 | super(key: key); 590 | 591 | @override 592 | _StepProgressViewState createState() => _StepProgressViewState(); 593 | } 594 | 595 | class _StepProgressViewState extends State { 596 | final Color _inactiveColor = Colors.grey; 597 | 598 | final double lineWidth = 4.0; 599 | 600 | // var animatedStepperWidth = 100.0; 601 | 602 | Widget build (BuildContext context) { 603 | // Timer(const Duration(microseconds: 0), () { 604 | // setState(() { 605 | // animatedStepperWidth =widget._width; 606 | // }); 607 | // }); 608 | return AnimatedContainer( 609 | duration: Duration(milliseconds: 500), 610 | padding: EdgeInsets.only(top: 12.0, left: 24.0, right: 24.0,), 611 | width: widget._width, 612 | child: Column( 613 | children: [ 614 | 615 | Row( 616 | children: _iconViews(), 617 | ), 618 | SizedBox(height: 10,), 619 | 620 | if (widget._titles != null) 621 | Row( 622 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 623 | children: _titleViews(), 624 | ), 625 | 626 | ], 627 | )); 628 | } 629 | 630 | List _iconViews() { 631 | var list = []; 632 | widget._icons.asMap().forEach((i, icon) { 633 | var circleColor = (i == 0 || widget._curStep > i + 1) 634 | ? widget._activeColor 635 | : _inactiveColor; 636 | 637 | var lineColor = widget._curStep > i + 1 638 | ? widget._activeColor 639 | : _inactiveColor; 640 | 641 | var iconColor = (i == 0 || widget._curStep > i + 1) 642 | ? _inactiveColor 643 | : widget._activeColor; 644 | 645 | list.add( 646 | //dot with icon view 647 | Container( 648 | width: 20.0, 649 | height: 20.0, 650 | padding: EdgeInsets.all(0), 651 | // child: Icon(icon, color: iconColor,size: 15.0,), 652 | decoration: new BoxDecoration( 653 | color: circleColor, 654 | borderRadius: new BorderRadius.all(new Radius.circular(25.0)), 655 | border: new Border.all( 656 | color: Colors.transparent, 657 | width: 2.0, 658 | ), 659 | ), 660 | ), 661 | ); 662 | 663 | //line between icons 664 | if (i != widget._icons.length - 1) { 665 | list.add( 666 | Expanded( 667 | child: Container(height: lineWidth, color: lineColor,) 668 | ) 669 | ); 670 | } 671 | }); 672 | 673 | return list; 674 | } 675 | 676 | List _titleViews() { 677 | var list = []; 678 | widget._titles.asMap().forEach((i, text) { 679 | list.add(Text(text, style: GoogleFonts.roboto( 680 | fontStyle: FontStyle.normal, color: widget._activeColor,fontWeight: FontWeight.bold))); 681 | }); 682 | return list; 683 | } 684 | } -------------------------------------------------------------------------------- /lib/homepage.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'dart:math'; 3 | 4 | import 'package:flare_dart/math/mat2d.dart'; 5 | import 'package:flare_flutter/flare.dart'; 6 | import 'package:flare_flutter/flare_actor.dart'; 7 | import 'package:flare_flutter/flare_controller.dart'; 8 | import 'package:flowerapp/flower_view_screen.dart'; 9 | import 'package:flutter/cupertino.dart'; 10 | import 'package:flutter/material.dart'; 11 | import 'package:flutter/widgets.dart'; 12 | import 'package:font_awesome_flutter/font_awesome_flutter.dart'; 13 | import 'package:google_fonts/google_fonts.dart'; 14 | 15 | import 'Cart_Items_screen.dart'; 16 | import 'model/local_model/homepage_view_model.dart'; 17 | import 'dart:math' as math; 18 | 19 | class HomePage extends StatefulWidget { 20 | @override 21 | _HomePageState createState() => _HomePageState(); 22 | } 23 | 24 | class _HomePageState extends State with FlareController { 25 | 26 | double _rockAmount = 0.5; 27 | double _speed = 0.5; 28 | double _rockTime = 0.0; 29 | bool _isPaused = false; 30 | ActorAnimation _rock; 31 | AnimationController animationController; 32 | var listFlowerLeftAnimation =180.0; 33 | var popularFlowerNameListLeftAnimation =120.0; 34 | var flowerNameTopAnimated =0.0; 35 | 36 | var animationTopAppNAme =0.0; 37 | 38 | var animationTopAppNameWidth =0.0; 39 | 40 | var animationTopAppNameHeight =0.0; 41 | 42 | var animatedTopBarActionsButtonsRight =2.0; 43 | 44 | var animationBottomNavigationBarHeight =0.0; 45 | 46 | var animationTopAppNAmeBouquet =10.0; 47 | 48 | var AnimatedAppNameBouquetTop =0.0; 49 | 50 | var animatedPopularFlowerNameListHorizontal =0.0; 51 | var flowerNameTopAnimated_2 = 0.0; 52 | var flowerNameTopAnimated_3 = 0.0; 53 | var flowerNameTopAnimated_4 = 0.0; 54 | 55 | var animatedPopularFlowerTextHeight =0.0; 56 | 57 | var animatedLeafRight =20.0; 58 | 59 | var animationTopLeaf =0.0; 60 | 61 | bool invisibleContainerView = false; 62 | 63 | var listofFlowerCardDuartion =Duration(milliseconds: 1000); 64 | 65 | bool animatePropertiesOrNot = true; 66 | 67 | String selectedListType ="Basket"; 68 | 69 | var animatedSelectedBarTop =373.0; 70 | 71 | ScrollController scrollController; 72 | 73 | @override 74 | void initState() { 75 | super.initState(); 76 | scrollController = ScrollController(initialScrollOffset: 0); 77 | 78 | /* animationController = new AnimationController( 79 | vsync: this, 80 | duration: new Duration(seconds: 1), 81 | ); 82 | 83 | animationController.forward();*/ 84 | 85 | } 86 | 87 | @override 88 | Widget build(BuildContext context) { 89 | var size = MediaQuery.of(context).size; 90 | if(animatePropertiesOrNot ==true) 91 | { 92 | animateProperties(); 93 | } 94 | return SafeArea( 95 | child: Scaffold( 96 | bottomNavigationBar: bottomNavigationBar(size), 97 | // backgroundColor: Colors.blue, 98 | body: SingleChildScrollView( 99 | child: Column( 100 | children: [ 101 | Stack( 102 | children: [ 103 | Container( 104 | width: size.width, 105 | height: size.height/1.5, 106 | ), 107 | backgroundImage(size), 108 | /* AnimatedPositioned( 109 | duration: Duration(milliseconds: 600), 110 | top: animationTopLeaf, 111 | right: animatedLeafRight, 112 | child: AnimatedBuilder( 113 | animation: animationController, 114 | child: Image.asset("assets/images/leaf.png",height: 150,width: 60,fit:BoxFit.cover,), 115 | builder: (BuildContext context, Widget _widget) { 116 | return new Transform.rotate( 117 | 118 | angle: animationController.value -1.6 , 119 | child: _widget, 120 | ); 121 | }), 122 | )*/ 123 | 124 | 125 | // leaf animation 126 | Positioned( 127 | // duration: Duration(milliseconds: 600), 128 | top: -100, 129 | right: -50, 130 | child: Container( 131 | height: 450, 132 | width: 200, 133 | child: FlareActor("assets/dark_leaf_anim.flr", 134 | alignment: Alignment.center, 135 | isPaused: _isPaused, 136 | fit: BoxFit.fitHeight, 137 | animation: "success", 138 | controller: this), 139 | ), 140 | ), 141 | AnimatedPositioned( 142 | duration: Duration(milliseconds: 800), 143 | top: animatedSelectedBarTop, 144 | left: 45, 145 | child: tabBaRSelected(), 146 | ), 147 | AnimatedPositioned( 148 | duration: Duration(milliseconds: 400), 149 | curve: Curves.decelerate, 150 | left: 0, 151 | top: flowerNameTopAnimated, 152 | child: InkWell( 153 | 154 | onTap: ()=>animateListCartProperties(size,"Basket"), 155 | child: flowerName(size), 156 | ), 157 | ), 158 | AnimatedPositioned( 159 | duration: Duration(milliseconds: 600), 160 | curve: Curves.decelerate, 161 | left: 0, 162 | top: flowerNameTopAnimated_2, 163 | child: InkWell( 164 | onTap: ()=> animateListCartProperties(size,"Wedding"), 165 | child: WeddingText(size,), 166 | ), 167 | ), 168 | AnimatedPositioned( 169 | curve: Curves.decelerate, 170 | duration: Duration(milliseconds: 800), 171 | left: 0, 172 | top: flowerNameTopAnimated_3, 173 | child: InkWell( 174 | onTap: ()=>animateListCartProperties(size,"Rose"), 175 | child: RoseText(size), 176 | ), 177 | ), AnimatedPositioned( 178 | curve: Curves.decelerate, 179 | duration: Duration(milliseconds: 1000), 180 | left: 0, 181 | top: flowerNameTopAnimated_4, 182 | child: InkWell( 183 | onTap: ()=>animateListCartProperties(size,"Bouquet"), 184 | child: BouquetText(size), 185 | ), 186 | ), 187 | AnimatedPositioned( 188 | // duration: listofFlowerCardDuartion, 189 | duration: Duration(milliseconds: 600), 190 | curve: Curves.easeInOutBack, 191 | left: listFlowerLeftAnimation, 192 | top: size.height/5, 193 | child: listFlower(size)), 194 | AnimatedPositioned( 195 | left: 27, 196 | top: animationTopAppNAme, 197 | duration: Duration(milliseconds: 400), 198 | child: AnimatedContainer 199 | ( 200 | width: animationTopAppNameWidth, 201 | height: animationTopAppNameHeight, 202 | duration: Duration(milliseconds: 600), 203 | child: Text("Specialty", 204 | style: GoogleFonts.lato( 205 | fontStyle: FontStyle.normal, color: Colors.white, fontSize: 36,fontWeight: FontWeight.bold)), 206 | ), 207 | ), 208 | AnimatedPositioned( 209 | left: 27, 210 | top: AnimatedAppNameBouquetTop, 211 | duration: Duration(milliseconds: 600), 212 | child: AnimatedContainer 213 | ( 214 | width: animationTopAppNameWidth, 215 | height: 50, 216 | duration: Duration(milliseconds: 1200), 217 | curve: Curves.easeInOutBack, 218 | child: Text("Bouquet", 219 | style: GoogleFonts.lato( 220 | fontStyle: FontStyle.normal, color: Colors.white, fontSize: 36,fontWeight: FontWeight.bold)), 221 | ), 222 | ), 223 | 224 | AnimatedPositioned( 225 | right: animatedTopBarActionsButtonsRight, 226 | top: 20.0, 227 | duration: Duration(milliseconds: 400), 228 | child: Row( 229 | children: [ 230 | Container(margin: EdgeInsets.only(right: 20), 231 | child: Icon(Icons.search,color: Colors.white,size: 24,)) , 232 | Container(margin: EdgeInsets.only(right: 5), 233 | child: Image.asset("assets/images/menu_icon.png",height: 18,width: 18,fit: BoxFit.fill,)), 234 | ], 235 | ), 236 | ) 237 | ], 238 | ), 239 | popularFlowers(size), 240 | ], 241 | ), 242 | ), 243 | ), 244 | ); 245 | } 246 | 247 | backgroundImage(size) { 248 | return ClipPath( 249 | clipper: TopBackgrounfImageClipper(), 250 | child: Container( 251 | height: 260, 252 | width: size.width, 253 | child: Image.asset("assets/images/back_groundImage.png",fit: BoxFit.fill,), 254 | 255 | // decoration: BoxDecoration( 256 | // gradient: LinearGradient( 257 | // begin: Alignment.centerLeft, 258 | // end: Alignment.centerRight, 259 | // colors: [Color(0xff6CA62A), Color(0xff315D47)]) 260 | // 261 | // ), 262 | )); 263 | } 264 | 265 | bottomNavigationBar(size) => AnimatedContainer( 266 | duration: Duration(milliseconds: 600), 267 | height: animationBottomNavigationBarHeight, 268 | curve: Curves.easeInOutBack, 269 | width: size.width, 270 | decoration: BoxDecoration( 271 | color: Color(0xffF2A510), 272 | borderRadius: BorderRadius.only( 273 | topLeft: Radius.elliptical(40, 35), 274 | topRight: Radius.elliptical(40, 35), 275 | ), 276 | ), 277 | // margin: EdgeInsets.symmetric(horizontal: 5), 278 | child: Center( 279 | child: Row( 280 | mainAxisAlignment: MainAxisAlignment.spaceEvenly, 281 | children: [ 282 | Image.asset( 283 | "assets/images/home.png", 284 | height: 20, 285 | width: 20, 286 | fit: BoxFit.cover, 287 | color: Colors.white, 288 | ), 289 | Image.asset( 290 | "assets/images/like.png", 291 | height: 20, 292 | width: 20, 293 | fit: BoxFit.cover, 294 | color: Colors.white, 295 | ), 296 | InkWell( 297 | onTap: ()=>Navigator.push(context, MaterialPageRoute(builder: (context)=>CartItemsScreen())), 298 | child: Image.asset( 299 | "assets/images/shopping_cart.png", 300 | height: 20, 301 | width: 20, 302 | fit: BoxFit.cover, 303 | color: Colors.white, 304 | ), 305 | ), 306 | Image.asset( 307 | "assets/images/man.png", 308 | height: 20, 309 | width: 20, 310 | fit: BoxFit.cover, 311 | color: Colors.white, 312 | ), 313 | ], 314 | ), 315 | ), 316 | ); 317 | 318 | flowerName(Size size) => Container( 319 | margin: EdgeInsets.only(top: 60,left: 10), 320 | child: Transform.rotate( 321 | angle: 300, 322 | child: textViewVertical("Basket",Colors.grey), 323 | ), 324 | ); 325 | 326 | 327 | 328 | textViewVertical(String s,var color) => AnimatedDefaultTextStyle( 329 | duration: Duration(seconds: 3), 330 | curve: Curves.easeInOutBack, 331 | style: GoogleFonts.lato( 332 | fontStyle: FontStyle.normal, color: color), 333 | child: Text(s, 334 | ), 335 | ); 336 | 337 | listFlower(Size size) =>Container( 338 | width: size.width*0.85, 339 | height: 300, 340 | child: ListView.builder( 341 | controller: scrollController, 342 | scrollDirection: Axis.horizontal, 343 | itemCount: 6, 344 | itemBuilder: (context,index) 345 | { 346 | return FlowerCardView(index,size); 347 | }), 348 | ); 349 | 350 | FlowerCardView(int index, Size size) =>Card( 351 | 352 | elevation: 2.0, 353 | child: Container( 354 | margin: EdgeInsets.symmetric(horizontal: 4), 355 | width: 200, 356 | color: Colors.white, 357 | child: InkWell( 358 | onTap: () 359 | { 360 | Navigator.push(context, MaterialPageRoute(builder: (context)=>FlowerViewScreen(index: index,photo:SelecetedItemListProvider(selectedListType,index)))); 361 | }, 362 | child: Column( 363 | mainAxisAlignment: MainAxisAlignment.start, 364 | children: [ 365 | Container( 366 | alignment: Alignment.topRight, 367 | margin: EdgeInsets.only(right: 10,top: 10), 368 | child: Text("From", 369 | style: GoogleFonts.lato( 370 | fontStyle: FontStyle.normal, color: Colors.grey)), 371 | ), 372 | Row( 373 | mainAxisAlignment: MainAxisAlignment.end, 374 | textBaseline: TextBaseline.alphabetic, 375 | children: [ 376 | Container( 377 | alignment: Alignment.topRight, 378 | margin: EdgeInsets.only(top: 0,bottom: 0,right: 2), 379 | child: Text("\$", 380 | style: GoogleFonts.lato( 381 | fontStyle: FontStyle.normal, color: Colors.grey,fontSize: 12)), 382 | ), 383 | Container( 384 | alignment: Alignment.topRight, 385 | margin: EdgeInsets.only(top: 0,right: 10,bottom: 2), 386 | child: Text("${HomePageViewModel().flowerList[index].price}", 387 | style: GoogleFonts.lato( 388 | fontStyle: FontStyle.normal, color: Color(0xffF2A510), fontSize: 24,fontWeight: FontWeight.bold)), 389 | ), 390 | ], 391 | ), 392 | Hero( 393 | tag: "flower $index", 394 | child: Image.asset(SelecetedItemListProvider(selectedListType,index),fit: BoxFit.fitHeight,height:140,width: 180,)), 395 | Container( 396 | alignment: Alignment.topLeft, 397 | margin: EdgeInsets.only(top: 20,left: 12,bottom: 0), 398 | child: Hero( 399 | tag: "Bouquet OF $index", 400 | child: Text("Bouquet of ${HomePageViewModel().flowerList[index].name}", 401 | style: GoogleFonts.lato( 402 | fontStyle: FontStyle.normal, color: Colors.grey,fontWeight: FontWeight.w500)), 403 | ), 404 | ), 405 | Row( 406 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 407 | children: [ 408 | Container( 409 | // width: 144, 410 | alignment: Alignment.topLeft, 411 | margin: EdgeInsets.only(top: 2,bottom: 28,left: 12), 412 | child: Hero( 413 | tag: "Magical Pastel $index", 414 | child: Text("Magical Pastel", 415 | style: GoogleFonts.lato( 416 | fontStyle: FontStyle.normal, color: Colors.black, fontSize: 16,fontWeight: FontWeight.bold)), 417 | ), 418 | ), 419 | Container( 420 | margin: EdgeInsets.only(top:0,right: 10), 421 | height: 50, 422 | width: 50, 423 | decoration: BoxDecoration( 424 | shape: BoxShape.circle, 425 | color: Color(0xff76A73B), 426 | ), 427 | child: Center( 428 | child: Hero( 429 | tag: "shopping_cart $index", 430 | child: Image.asset("assets/images/shop_bag.png",color: Colors.white,fit: BoxFit.cover,height: 24,width: 24,) 431 | ), 432 | ), 433 | ), ], 434 | ) 435 | ], 436 | ), 437 | ), 438 | ), 439 | ); 440 | 441 | popularFlowers(Size size) =>Column( 442 | mainAxisAlignment: MainAxisAlignment.start, 443 | mainAxisSize: MainAxisSize.min, 444 | crossAxisAlignment: CrossAxisAlignment.start, 445 | children: [ 446 | popularFlowersText(size), 447 | popularFlowerNameList(size), 448 | ], 449 | ); 450 | 451 | popularFlowersText(size) =>Container( 452 | // duration: Duration(milliseconds: 1200), 453 | 454 | width: size.width*0.9, 455 | margin: EdgeInsets.only(top: 0,left: 20,bottom: 5), 456 | child: Row( 457 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 458 | children: [ 459 | Text("Popular Flowers", 460 | style: GoogleFonts.lato( 461 | fontStyle: FontStyle.normal, color: Colors.black, fontSize: 20,fontWeight: FontWeight.bold)), 462 | Container( 463 | height: 35, 464 | width: 100, 465 | margin: EdgeInsets.only(right: 10), 466 | decoration: BoxDecoration( 467 | color: Color(0xffF6ECDE), 468 | borderRadius: BorderRadius.circular(10.0), 469 | ), 470 | child: Center( 471 | child: Text("See All", 472 | style: GoogleFonts.lato( 473 | fontStyle: FontStyle.normal, color: Color(0xffF2A510),fontWeight: FontWeight.bold,fontSize: 13)), 474 | ), 475 | ), 476 | ], 477 | ), 478 | ); 479 | 480 | popularFlowerNameList(Size size) =>AnimatedContainer( 481 | duration: Duration(milliseconds: 1000), 482 | curve: Curves.easeInOutBack, 483 | margin: EdgeInsets.only(top: 10,left: popularFlowerNameListLeftAnimation), 484 | height: 100, 485 | width: size.width, 486 | child: ListView( 487 | scrollDirection: Axis.horizontal, 488 | children: [ 489 | popularFlowerHorizontalListITem("assets/images/birthday.png"), 490 | popularFlowerHorizontalListITem("assets/images/graduation.png"), 491 | popularFlowerHorizontalListITem("assets/images/birthday.png"), 492 | popularFlowerHorizontalListITem("assets/images/graduation.png"), 493 | popularFlowerHorizontalListITem("assets/images/birthday.png"), 494 | ], 495 | ) 496 | ); 497 | 498 | void animateProperties() { 499 | Timer(const Duration(microseconds: 0), () { 500 | setState(() { 501 | animatedPopularFlowerNameListHorizontal =5.0; 502 | listFlowerLeftAnimation = 55; 503 | popularFlowerNameListLeftAnimation = 0.0; 504 | flowerNameTopAnimated = 330; 505 | flowerNameTopAnimated_2 = 260; 506 | flowerNameTopAnimated_3 = 190; 507 | flowerNameTopAnimated_4 = 120; 508 | animationTopAppNAme =17.0; 509 | animationTopAppNameWidth = 180; 510 | animationTopAppNameHeight =45.0; 511 | animatedTopBarActionsButtonsRight =25.0; 512 | animationBottomNavigationBarHeight =47.0; 513 | animationTopAppNAmeBouquet =55.0; 514 | AnimatedAppNameBouquetTop =57.0; 515 | animatedPopularFlowerTextHeight= 15.0; 516 | animatedLeafRight =52.0; 517 | animationTopLeaf =8.0; 518 | animatedSelectedBarTop =animatedSelectedBarPositionProvider(selectedListType); 519 | bool _isPaused = true; 520 | // animatedSelectedBarTop = 160; 521 | }); 522 | }); 523 | } 524 | 525 | 526 | WeddingText(Size size) => Container( 527 | margin: EdgeInsets.only(top: 60), 528 | child: Transform.rotate( 529 | angle: 300, 530 | child: textViewVertical("Wedding",Colors.grey), 531 | ), 532 | ); 533 | 534 | RoseText(Size size) => Container( 535 | margin: EdgeInsets.only(top: 60,left: 14), 536 | child: Transform.rotate( 537 | angle: 300, 538 | child: textViewVertical("Rose",Colors.grey), 539 | ), 540 | ); 541 | 542 | BouquetText(Size size) =>Container( 543 | margin: EdgeInsets.only(top: 60,left: 3), 544 | child: Transform.rotate( 545 | angle: 300, 546 | child: textViewVertical("Bouquet",Colors.white), 547 | ), 548 | ); 549 | 550 | popularFlowerHorizontalListITem(String s) =>AnimatedContainer( 551 | duration: Duration(milliseconds: 1400), 552 | alignment: Alignment.bottomLeft, 553 | padding: EdgeInsets.only(left: 10,bottom: 5), 554 | margin: EdgeInsets.only(right: animatedPopularFlowerNameListHorizontal), 555 | // height: 0, 556 | width: 140, 557 | child: ClipRRect( 558 | borderRadius: BorderRadius.circular(15.0), 559 | child: Image.asset(s,fit: BoxFit.fitWidth,height: 95,)), 560 | 561 | ); 562 | void animateListCartProperties(size,value) { 563 | 564 | Timer(const Duration(microseconds: 0), () { 565 | setState(() { 566 | // listofFlowerCardDuartion =Duration(milliseconds: 600); 567 | listFlowerLeftAnimation = size.width; 568 | scrollController.jumpTo(1); 569 | animatePropertiesOrNot = false; 570 | selectedListType =value; 571 | }); 572 | }); 573 | Timer(const Duration(milliseconds: 800), () { 574 | setState(() { 575 | animatePropertiesOrNot = true; 576 | }); 577 | }); 578 | } 579 | 580 | tabBaRSelected() =>Container( 581 | height: 50, 582 | width: 5, 583 | decoration: BoxDecoration( 584 | color: Color(0xffF2A510), 585 | borderRadius: BorderRadius.circular(20.0), 586 | ), 587 | ); 588 | 589 | double animatedSelectedBarPositionProvider(String selectedListType) 590 | { 591 | var value = selectedListType; 592 | switch(value) { 593 | case "Basket": { 594 | return 373; 595 | } 596 | break; 597 | 598 | case "Wedding": { return 305; } 599 | break; 600 | 601 | case "Rose": { return 235; } 602 | break; 603 | 604 | case "Bouquet": { return 160; } 605 | break; 606 | 607 | } 608 | } 609 | 610 | String SelecetedItemListProvider(selectedListType,index) { 611 | // HomePageViewModel().flowerList[index].photoUrl 612 | 613 | var value = selectedListType; 614 | switch(value) { 615 | case "Basket": { 616 | return HomePageViewModel().flowerList[index].photoUrl; 617 | } 618 | break; 619 | 620 | case "Wedding": { return HomePageViewModel().WeddingList[index].photoUrl; } 621 | break; 622 | 623 | case "Rose": { return HomePageViewModel().RoseList[index].photoUrl; } 624 | break; 625 | 626 | case "Bouquet": { return HomePageViewModel().BouquetList[index].photoUrl;} 627 | break; 628 | 629 | 630 | } 631 | } 632 | 633 | 634 | 635 | @override 636 | void initialize(FlutterActorArtboard artboard) { 637 | _rock = artboard.getAnimation("success"); 638 | } 639 | 640 | @override 641 | bool advance(FlutterActorArtboard artboard, double elapsed) { 642 | _rockTime += elapsed * _speed; 643 | _rock.apply(_rockTime % _rock.duration, artboard, _rockAmount); 644 | return true; 645 | } 646 | 647 | @override 648 | void setViewTransform(Mat2D viewTransform) { 649 | // TODO: implement setViewTransform 650 | } 651 | 652 | } 653 | 654 | class TopBackgrounfImageClipper extends CustomClipper { 655 | @override 656 | getClip(Size size) { 657 | var path = Path(); 658 | path.lineTo(0.0, size.height); 659 | var firstControlPoint = Offset(55, size.height / 1.4); 660 | var firstEndPoint = Offset(size.width / 1.7, size.height / 1.3); 661 | path.quadraticBezierTo(firstControlPoint.dx, firstControlPoint.dy, 662 | firstEndPoint.dx, firstEndPoint.dy); 663 | var secondControlPoint = Offset(size.width - (35), size.height - 95); 664 | var secondEndPoint = Offset(size.width, size.height / 2.4); 665 | path.quadraticBezierTo(secondControlPoint.dx, secondControlPoint.dy, 666 | secondEndPoint.dx, secondEndPoint.dy); 667 | path.lineTo(size.width, size.height - 40); 668 | path.lineTo(size.width, 0.0); 669 | path.close(); 670 | return path; 671 | } 672 | 673 | @override 674 | bool shouldReclip(CustomClipper oldClipper) { 675 | return false; 676 | } 677 | } 678 | 679 | 680 | -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flowerapp/homepage.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | void main() { 5 | runApp(MyApp()); 6 | } 7 | 8 | class MyApp extends StatelessWidget { 9 | // This widget is the root of your application. 10 | @override 11 | Widget build(BuildContext context) { 12 | return MaterialApp( 13 | title: 'Flutter Demo', 14 | debugShowCheckedModeBanner: false, 15 | theme: ThemeData( 16 | 17 | primarySwatch: Colors.blue, 18 | 19 | visualDensity: VisualDensity.adaptivePlatformDensity, 20 | ), 21 | home: HomePage(), 22 | ); 23 | } 24 | } 25 | 26 | 27 | -------------------------------------------------------------------------------- /lib/model/local_model/homepage_view_model.dart: -------------------------------------------------------------------------------- 1 | import 'dart:ui'; 2 | 3 | class HomePageViewModel 4 | { 5 | 6 | // flower list == 7 | List flowerList = [ 8 | Flower(item: "Mimosa" ,quantity: 2,color: Color(0xffF2A510) , name: "Rose",price: 20,photoUrl: "assets/images/basket_1.png",itemUrl: "https://static.wixstatic.com/media/3ccabb_2659b209b0a8409893980a6aff10ca1d~mv2.jpg/v1/fill/w_550,h_365,al_c,q_80,usm_0.66_1.00_0.01/3ccabb_2659b209b0a8409893980a6aff10ca1d~mv2.webp"), 9 | Flower( item: "Leaves", quantity: 6, color: Color(0xff76A73B),name: "Carnation",price: 45,photoUrl: "assets/images/basket_2.png",itemUrl: "https://cdn.britannica.com/26/152026-050-41D137DE/Sunshine-leaves-beech-tree.jpg"), 10 | Flower( item: "Paper",quantity: 7,color:Color(0xffE9E6E6), name: "Tulip",price: 43,photoUrl: "assets/images/basket_3.png",itemUrl: "https://cdn.gardenista.com/wp-content/uploads/2016/05/Corrie_Beth_Hogg_paper_plant_oxalis-1.jpg"), 11 | Flower(item: "Fern",quantity: 3, color: Color(0xffF2A510) ,name: "Daisy",price: 12,photoUrl: "assets/images/bouquet_1.png",itemUrl: "https://cdnk.nurserylive.com/images/stories/virtuemart/product/nuraerylive-nephrolepis-exaltata-boston-fern-hanging-basket4.jpg"), 12 | Flower(item: "Berries",quantity: 5, color: Color(0xff76A73B),name: "Sunflower",price: 22,photoUrl: "assets/images/bouquet_2.png",itemUrl: "https://ak.picdn.net/shutterstock/videos/19308550/thumb/1.jpg"), 13 | Flower(name: "Rose",price: 20,photoUrl: "assets/images/wedding_1.png"), 14 | Flower(quantity: 5,color: Color(0xffF2A510) ,name: "Carnation",price: 45,photoUrl: "assets/images/wedding_2.png"), 15 | Flower(quantity: 9,color: Color(0xff76A73B),name: "Tulip",price: 43,photoUrl: "assets/images/flower_1.png"), 16 | Flower(quantity: 8,color:Color(0xffE9E6E6),name: "Daisy",price: 12,photoUrl: "assets/images/basket_1.png"), 17 | ]; 18 | 19 | 20 | List WeddingList = [ 21 | 22 | Flower( item: "Leaves", quantity: 6, color: Color(0xff76A73B),name: "Carnation",price: 45,photoUrl: "assets/images/wedding_1.png",itemUrl: "https://cdn.britannica.com/26/152026-050-41D137DE/Sunshine-leaves-beech-tree.jpg"), 23 | Flower(item: "Mimosa" ,quantity: 2,color: Color(0xffF2A510) , name: "Rose",price: 20,photoUrl: "assets/images/wedding_2.png",itemUrl: "https://static.wixstatic.com/media/3ccabb_2659b209b0a8409893980a6aff10ca1d~mv2.jpg/v1/fill/w_550,h_365,al_c,q_80,usm_0.66_1.00_0.01/3ccabb_2659b209b0a8409893980a6aff10ca1d~mv2.webp"), 24 | Flower( item: "Paper",quantity: 7,color:Color(0xffE9E6E6), name: "Tulip",price: 43,photoUrl: "assets/images/basket_1.png",itemUrl: "https://cdn.gardenista.com/wp-content/uploads/2016/05/Corrie_Beth_Hogg_paper_plant_oxalis-1.jpg"), 25 | Flower(item: "Fern",quantity: 3, color: Color(0xffF2A510) ,name: "Daisy",price: 12,photoUrl: "assets/images/basket_2.png",itemUrl: "https://cdnk.nurserylive.com/images/stories/virtuemart/product/nuraerylive-nephrolepis-exaltata-boston-fern-hanging-basket4.jpg"), 26 | Flower(item: "Berries",quantity: 5, color: Color(0xff76A73B),name: "Sunflower",price: 22,photoUrl: "assets/images/basket_3.png",itemUrl: "https://ak.picdn.net/shutterstock/videos/19308550/thumb/1.jpg"), 27 | Flower(name: "Rose",price: 20,photoUrl: "assets/images/bouquet_1.png"), 28 | 29 | Flower(quantity: 5,color: Color(0xffF2A510) ,name: "Carnation",price: 45,photoUrl: "assets/images/wedding_2.png"), 30 | Flower(quantity: 9,color: Color(0xff76A73B),name: "Tulip",price: 43,photoUrl: "assets/images/flower_1.png"), 31 | 32 | ]; 33 | List RoseList = [ 34 | Flower( item: "Paper",quantity: 7,color:Color(0xffE9E6E6), name: "Rose",price: 43,photoUrl: "assets/images/flower_1.png",itemUrl: "https://cdn.gardenista.com/wp-content/uploads/2016/05/Corrie_Beth_Hogg_paper_plant_oxalis-1.jpg"), 35 | Flower(item: "Mimosa" ,quantity: 2,color: Color(0xffF2A510) , name: "Tulip",price: 20,photoUrl: "assets/images/flower_2.png",itemUrl: "https://static.wixstatic.com/media/3ccabb_2659b209b0a8409893980a6aff10ca1d~mv2.jpg/v1/fill/w_550,h_365,al_c,q_80,usm_0.66_1.00_0.01/3ccabb_2659b209b0a8409893980a6aff10ca1d~mv2.webp"), 36 | Flower( item: "Leaves", quantity: 6, color: Color(0xff76A73B),name: "Carnation",price: 45,photoUrl: "assets/images/wedding_2.png",itemUrl: "https://cdn.britannica.com/26/152026-050-41D137DE/Sunshine-leaves-beech-tree.jpg"), 37 | Flower(item: "Fern",quantity: 3, color: Color(0xffF2A510) ,name: "Daisy",price: 12,photoUrl: "assets/images/basket_1.png",itemUrl: "https://cdnk.nurserylive.com/images/stories/virtuemart/product/nuraerylive-nephrolepis-exaltata-boston-fern-hanging-basket4.jpg"), 38 | Flower(item: "Berries",quantity: 5, color: Color(0xff76A73B),name: "Sunflower",price: 22,photoUrl: "assets/images/basket_2.png",itemUrl: "https://ak.picdn.net/shutterstock/videos/19308550/thumb/1.jpg"), 39 | Flower(name: "Rose",price: 20,photoUrl: "assets/images/bouquet_1.png"), 40 | Flower(quantity: 5,color: Color(0xffF2A510) ,name: "Carnation",price: 45,photoUrl: "assets/images/flower_1.png"), 41 | Flower(quantity: 9,color: Color(0xff76A73B),name: "Tulip",price: 43,photoUrl: "assets/images/wedding_1.png"), 42 | ];List BouquetList = [ 43 | Flower(item: "Mimosa" ,quantity: 2,color: Color(0xffF2A510) , name: "Rose",price: 20,photoUrl: "assets/images/bouquet_1.png",itemUrl: "https://static.wixstatic.com/media/3ccabb_2659b209b0a8409893980a6aff10ca1d~mv2.jpg/v1/fill/w_550,h_365,al_c,q_80,usm_0.66_1.00_0.01/3ccabb_2659b209b0a8409893980a6aff10ca1d~mv2.webp"), 44 | Flower( item: "Leaves", quantity: 6, color: Color(0xff76A73B),name: "Carnation",price: 45,photoUrl: "assets/images/bouquet_2.png",itemUrl: "https://cdn.britannica.com/26/152026-050-41D137DE/Sunshine-leaves-beech-tree.jpg"), 45 | Flower( item: "Paper",quantity: 7,color:Color(0xffE9E6E6), name: "Tulip",price: 43,photoUrl: "assets/images/basket_1.png",itemUrl: "https://cdn.gardenista.com/wp-content/uploads/2016/05/Corrie_Beth_Hogg_paper_plant_oxalis-1.jpg"), 46 | Flower(item: "Fern",quantity: 3, color: Color(0xffF2A510) ,name: "Daisy",price: 12,photoUrl: "assets/images/basket_2.png",itemUrl: "https://cdnk.nurserylive.com/images/stories/virtuemart/product/nuraerylive-nephrolepis-exaltata-boston-fern-hanging-basket4.jpg"), 47 | Flower(item: "Berries",quantity: 5, color: Color(0xff76A73B),name: "Sunflower",price: 22,photoUrl: "assets/images/wedding_2.png",itemUrl: "https://ak.picdn.net/shutterstock/videos/19308550/thumb/1.jpg"), 48 | Flower(name: "Rose",price: 20,photoUrl: "assets/images/flower_1.png"), 49 | Flower(quantity: 5,color: Color(0xffF2A510) ,name: "Carnation",price: 45,photoUrl: "assets/images/basket_1.png"), 50 | Flower(quantity: 9,color: Color(0xff76A73B),name: "Tulip",price: 43,photoUrl: "assets/images/basket_2.png"), 51 | Flower(quantity: 8,color:Color(0xffE9E6E6),name: "Daisy",price: 12,photoUrl: "assets/images/wedding_2.png"), 52 | ]; 53 | } 54 | 55 | class Flower 56 | { 57 | String photoUrl; 58 | int price; 59 | String name; 60 | var color; 61 | int quantity; 62 | String item; 63 | String itemUrl; 64 | 65 | Flower({this.photoUrl, this.price, this.name, this.color, this.quantity, 66 | this.item, this.itemUrl}); 67 | 68 | 69 | } -------------------------------------------------------------------------------- /pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | archive: 5 | dependency: transitive 6 | description: 7 | name: archive 8 | url: "https://pub.dartlang.org" 9 | source: hosted 10 | version: "2.0.13" 11 | args: 12 | dependency: transitive 13 | description: 14 | name: args 15 | url: "https://pub.dartlang.org" 16 | source: hosted 17 | version: "1.6.0" 18 | async: 19 | dependency: transitive 20 | description: 21 | name: async 22 | url: "https://pub.dartlang.org" 23 | source: hosted 24 | version: "2.4.1" 25 | boolean_selector: 26 | dependency: transitive 27 | description: 28 | name: boolean_selector 29 | url: "https://pub.dartlang.org" 30 | source: hosted 31 | version: "2.0.0" 32 | charcode: 33 | dependency: transitive 34 | description: 35 | name: charcode 36 | url: "https://pub.dartlang.org" 37 | source: hosted 38 | version: "1.1.3" 39 | collection: 40 | dependency: transitive 41 | description: 42 | name: collection 43 | url: "https://pub.dartlang.org" 44 | source: hosted 45 | version: "1.14.12" 46 | convert: 47 | dependency: transitive 48 | description: 49 | name: convert 50 | url: "https://pub.dartlang.org" 51 | source: hosted 52 | version: "2.1.1" 53 | crypto: 54 | dependency: transitive 55 | description: 56 | name: crypto 57 | url: "https://pub.dartlang.org" 58 | source: hosted 59 | version: "2.1.4" 60 | csslib: 61 | dependency: transitive 62 | description: 63 | name: csslib 64 | url: "https://pub.dartlang.org" 65 | source: hosted 66 | version: "0.16.1" 67 | cupertino_icons: 68 | dependency: "direct main" 69 | description: 70 | name: cupertino_icons 71 | url: "https://pub.dartlang.org" 72 | source: hosted 73 | version: "0.1.3" 74 | file: 75 | dependency: transitive 76 | description: 77 | name: file 78 | url: "https://pub.dartlang.org" 79 | source: hosted 80 | version: "5.1.0" 81 | flare_dart: 82 | dependency: transitive 83 | description: 84 | name: flare_dart 85 | url: "https://pub.dartlang.org" 86 | source: hosted 87 | version: "2.3.4" 88 | flare_flutter: 89 | dependency: "direct main" 90 | description: 91 | name: flare_flutter 92 | url: "https://pub.dartlang.org" 93 | source: hosted 94 | version: "2.0.3" 95 | flutter: 96 | dependency: "direct main" 97 | description: flutter 98 | source: sdk 99 | version: "0.0.0" 100 | flutter_test: 101 | dependency: "direct dev" 102 | description: flutter 103 | source: sdk 104 | version: "0.0.0" 105 | flutter_widgets: 106 | dependency: "direct main" 107 | description: 108 | name: flutter_widgets 109 | url: "https://pub.dartlang.org" 110 | source: hosted 111 | version: "0.1.12" 112 | font_awesome_flutter: 113 | dependency: "direct main" 114 | description: 115 | name: font_awesome_flutter 116 | url: "https://pub.dartlang.org" 117 | source: hosted 118 | version: "8.8.1" 119 | google_fonts: 120 | dependency: "direct main" 121 | description: 122 | name: google_fonts 123 | url: "https://pub.dartlang.org" 124 | source: hosted 125 | version: "1.1.0" 126 | html: 127 | dependency: transitive 128 | description: 129 | name: html 130 | url: "https://pub.dartlang.org" 131 | source: hosted 132 | version: "0.14.0+3" 133 | http: 134 | dependency: transitive 135 | description: 136 | name: http 137 | url: "https://pub.dartlang.org" 138 | source: hosted 139 | version: "0.12.1" 140 | http_parser: 141 | dependency: transitive 142 | description: 143 | name: http_parser 144 | url: "https://pub.dartlang.org" 145 | source: hosted 146 | version: "3.1.4" 147 | image: 148 | dependency: transitive 149 | description: 150 | name: image 151 | url: "https://pub.dartlang.org" 152 | source: hosted 153 | version: "2.1.12" 154 | intl: 155 | dependency: transitive 156 | description: 157 | name: intl 158 | url: "https://pub.dartlang.org" 159 | source: hosted 160 | version: "0.16.1" 161 | matcher: 162 | dependency: transitive 163 | description: 164 | name: matcher 165 | url: "https://pub.dartlang.org" 166 | source: hosted 167 | version: "0.12.6" 168 | meta: 169 | dependency: transitive 170 | description: 171 | name: meta 172 | url: "https://pub.dartlang.org" 173 | source: hosted 174 | version: "1.1.8" 175 | path: 176 | dependency: transitive 177 | description: 178 | name: path 179 | url: "https://pub.dartlang.org" 180 | source: hosted 181 | version: "1.6.4" 182 | path_provider: 183 | dependency: transitive 184 | description: 185 | name: path_provider 186 | url: "https://pub.dartlang.org" 187 | source: hosted 188 | version: "1.6.10" 189 | path_provider_linux: 190 | dependency: transitive 191 | description: 192 | name: path_provider_linux 193 | url: "https://pub.dartlang.org" 194 | source: hosted 195 | version: "0.0.1+1" 196 | path_provider_macos: 197 | dependency: transitive 198 | description: 199 | name: path_provider_macos 200 | url: "https://pub.dartlang.org" 201 | source: hosted 202 | version: "0.0.4+3" 203 | path_provider_platform_interface: 204 | dependency: transitive 205 | description: 206 | name: path_provider_platform_interface 207 | url: "https://pub.dartlang.org" 208 | source: hosted 209 | version: "1.0.2" 210 | pedantic: 211 | dependency: transitive 212 | description: 213 | name: pedantic 214 | url: "https://pub.dartlang.org" 215 | source: hosted 216 | version: "1.9.0" 217 | petitparser: 218 | dependency: transitive 219 | description: 220 | name: petitparser 221 | url: "https://pub.dartlang.org" 222 | source: hosted 223 | version: "2.4.0" 224 | platform: 225 | dependency: transitive 226 | description: 227 | name: platform 228 | url: "https://pub.dartlang.org" 229 | source: hosted 230 | version: "2.2.1" 231 | plugin_platform_interface: 232 | dependency: transitive 233 | description: 234 | name: plugin_platform_interface 235 | url: "https://pub.dartlang.org" 236 | source: hosted 237 | version: "1.0.2" 238 | process: 239 | dependency: transitive 240 | description: 241 | name: process 242 | url: "https://pub.dartlang.org" 243 | source: hosted 244 | version: "3.0.13" 245 | quiver: 246 | dependency: transitive 247 | description: 248 | name: quiver 249 | url: "https://pub.dartlang.org" 250 | source: hosted 251 | version: "2.1.3" 252 | sky_engine: 253 | dependency: transitive 254 | description: flutter 255 | source: sdk 256 | version: "0.0.99" 257 | source_span: 258 | dependency: transitive 259 | description: 260 | name: source_span 261 | url: "https://pub.dartlang.org" 262 | source: hosted 263 | version: "1.7.0" 264 | stack_trace: 265 | dependency: transitive 266 | description: 267 | name: stack_trace 268 | url: "https://pub.dartlang.org" 269 | source: hosted 270 | version: "1.9.3" 271 | stream_channel: 272 | dependency: transitive 273 | description: 274 | name: stream_channel 275 | url: "https://pub.dartlang.org" 276 | source: hosted 277 | version: "2.0.0" 278 | string_scanner: 279 | dependency: transitive 280 | description: 281 | name: string_scanner 282 | url: "https://pub.dartlang.org" 283 | source: hosted 284 | version: "1.0.5" 285 | term_glyph: 286 | dependency: transitive 287 | description: 288 | name: term_glyph 289 | url: "https://pub.dartlang.org" 290 | source: hosted 291 | version: "1.1.0" 292 | test_api: 293 | dependency: transitive 294 | description: 295 | name: test_api 296 | url: "https://pub.dartlang.org" 297 | source: hosted 298 | version: "0.2.15" 299 | typed_data: 300 | dependency: transitive 301 | description: 302 | name: typed_data 303 | url: "https://pub.dartlang.org" 304 | source: hosted 305 | version: "1.1.6" 306 | vector_math: 307 | dependency: transitive 308 | description: 309 | name: vector_math 310 | url: "https://pub.dartlang.org" 311 | source: hosted 312 | version: "2.0.8" 313 | xdg_directories: 314 | dependency: transitive 315 | description: 316 | name: xdg_directories 317 | url: "https://pub.dartlang.org" 318 | source: hosted 319 | version: "0.1.0" 320 | xml: 321 | dependency: transitive 322 | description: 323 | name: xml 324 | url: "https://pub.dartlang.org" 325 | source: hosted 326 | version: "3.6.1" 327 | sdks: 328 | dart: ">=2.7.0 <3.0.0" 329 | flutter: ">=1.17.0 <2.0.0" 330 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: flowerapp 2 | description: a flower app 3 | 4 | # The following line prevents the package from being accidentally published to 5 | # pub.dev using `pub publish`. This is preferred for private packages. 6 | publish_to: 'none' # Remove this line if you wish to publish to pub.dev 7 | 8 | # The following defines the version and build number for your application. 9 | # A version number is three numbers separated by dots, like 1.2.43 10 | # followed by an optional build number separated by a +. 11 | # Both the version and the builder number may be overridden in flutter 12 | # build by specifying --build-name and --build-number, respectively. 13 | # In Android, build-name is used as versionName while build-number used as versionCode. 14 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning 15 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. 16 | # Read more about iOS versioning at 17 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html 18 | version: 1.0.0+1 19 | 20 | environment: 21 | sdk: ">=2.7.0 <3.0.0" 22 | 23 | dependencies: 24 | flutter: 25 | sdk: flutter 26 | 27 | 28 | # The following adds the Cupertino Icons font to your application. 29 | # Use with the CupertinoIcons class for iOS style icons. 30 | cupertino_icons: ^0.1.3 31 | google_fonts: 1.1.0 32 | font_awesome_flutter: 8.8.1 33 | flutter_widgets: 0.1.12 34 | flare_flutter: 2.0.3 35 | 36 | dev_dependencies: 37 | flutter_test: 38 | sdk: flutter 39 | 40 | # For information on the generic Dart part of this file, see the 41 | # following page: https://dart.dev/tools/pub/pubspec 42 | 43 | # The following section is specific to Flutter. 44 | flutter: 45 | 46 | # The following line ensures that the Material Icons font is 47 | # included with your application, so that you can use the icons in 48 | # the material Icons class. 49 | uses-material-design: true 50 | 51 | # To add assets to your application, add an assets section, like this: 52 | assets: 53 | - assets/images/flower.jpg 54 | - assets/images/home.png 55 | - assets/images/like.png 56 | - assets/images/shopping_cart.png 57 | - assets/images/man.png 58 | - assets/images/shopping_bag.png 59 | - assets/images/shop_bag.png 60 | - assets/images/birthday.png 61 | - assets/images/graduation.png 62 | - assets/images/menu_icon.png 63 | - assets/images/back_groundImage.png 64 | - assets/images/leaf.png 65 | - assets/images/basket_1.png 66 | - assets/images/basket_2.png 67 | - assets/images/basket_3.png 68 | - assets/images/wedding_1.png 69 | - assets/images/wedding_2.png 70 | - assets/images/flower_1.png 71 | - assets/images/flower_2.png 72 | - assets/images/bouquet_1.png 73 | - assets/images/bouquet_2.png 74 | - assets/Penguin.flr 75 | - assets/Teddy.flr 76 | - assets/leaf.flr 77 | - assets/dark_leaf_anim.flr 78 | - assets/dark_leaf_anim_2.flr 79 | - assets/dark_leaf_anim_3.flr 80 | 81 | # - images/a_dot_ham.jpeg 82 | 83 | # An image asset can refer to one or more resolution-specific "variants", see 84 | # https://flutter.dev/assets-and-images/#resolution-aware. 85 | 86 | # For details regarding adding assets from package dependencies, see 87 | # https://flutter.dev/assets-and-images/#from-packages 88 | 89 | # To add custom fonts to your application, add a fonts section here, 90 | # in this "flutter" section. Each entry in this list should have a 91 | # "family" key with the font family name, and a "fonts" key with a 92 | # list giving the asset and other descriptors for the font. For 93 | # example: 94 | # fonts: 95 | # - family: Schyler 96 | # fonts: 97 | # - asset: fonts/Schyler-Regular.ttf 98 | # - asset: fonts/Schyler-Italic.ttf 99 | # style: italic 100 | # - family: Trajan Pro 101 | # fonts: 102 | # - asset: fonts/TrajanPro.ttf 103 | # - asset: fonts/TrajanPro_Bold.ttf 104 | # weight: 700 105 | # 106 | # For details regarding fonts from package dependencies, 107 | # see https://flutter.dev/custom-fonts/#from-packages 108 | -------------------------------------------------------------------------------- /test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:flowerapp/main.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(MyApp()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | --------------------------------------------------------------------------------