├── .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 |
--------------------------------------------------------------------------------