From 4e441a937560a3638b53f2daa752275cfa7d8515 Mon Sep 17 00:00:00 2001 From: Abu Anwar <abuanwar072@gmail.com> Date: Fri, 12 Jun 2020 13:42:49 +0600 Subject: [PATCH] done --- .gitignore | 43 ++ .metadata | 10 + android/.gitignore | 7 + android/app/build.gradle | 63 ++ android/app/src/debug/AndroidManifest.xml | 7 + android/app/src/main/AndroidManifest.xml | 47 ++ .../com/example/furniture_app/MainActivity.kt | 6 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes android/app/src/main/res/values/styles.xml | 18 + android/app/src/profile/AndroidManifest.xml | 7 + android/build.gradle | 31 + android/gradle.properties | 4 + .../gradle/wrapper/gradle-wrapper.properties | 6 + android/settings.gradle | 15 + assets/icons/back.svg | 3 + assets/icons/cart_with_item.svg | 4 + assets/icons/chat.svg | 3 + assets/icons/notification.svg | 4 + assets/icons/search.svg | 3 + assets/icons/shopping-bag.svg | 3 + assets/images/Item_1.png | Bin 0 -> 29510 bytes assets/images/Item_2.png | Bin 0 -> 18386 bytes assets/images/Item_3.png | Bin 0 -> 11722 bytes ios/.gitignore | 32 + ios/Flutter/AppFrameworkInfo.plist | 26 + ios/Flutter/Debug.xcconfig | 2 + ios/Flutter/Release.xcconfig | 2 + ios/Podfile | 87 +++ ios/Podfile.lock | 34 ++ ios/Runner.xcodeproj/project.pbxproj | 577 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 91 +++ .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 ++++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 10932 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 564 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 1283 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 1588 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 1025 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 1716 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 1920 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 1283 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 1895 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 3831 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 1888 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 3294 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 3612 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + ios/Runner/Base.lproj/LaunchScreen.storyboard | 37 ++ ios/Runner/Base.lproj/Main.storyboard | 26 + ios/Runner/Info.plist | 45 ++ ios/Runner/Runner-Bridging-Header.h | 1 + lib/components/search_box.dart | 39 ++ lib/constants.dart | 18 + lib/main.dart | 27 + lib/models/product.dart | 35 ++ lib/screens/details/components/body.dart | 82 +++ .../components/chat_and_add_to_cart.dart | 51 ++ .../details/components/color_dots.dart | 38 ++ .../details/components/list_of_colors.dart | 32 + .../details/components/product_image.dart | 43 ++ lib/screens/details/details_screen.dart | 47 ++ lib/screens/product/components/body.dart | 59 ++ .../product/components/category_list.dart | 52 ++ .../product/components/product_card.dart | 116 ++++ lib/screens/product/products_screen.dart | 30 + pubspec.lock | 308 ++++++++++ pubspec.yaml | 79 +++ test/widget_test.dart | 30 + 85 files changed, 2554 insertions(+) create mode 100644 .gitignore create mode 100644 .metadata create mode 100644 android/.gitignore create mode 100644 android/app/build.gradle create mode 100644 android/app/src/debug/AndroidManifest.xml create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/kotlin/com/example/furniture_app/MainActivity.kt create mode 100644 android/app/src/main/res/drawable/launch_background.xml create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/values/styles.xml create mode 100644 android/app/src/profile/AndroidManifest.xml create mode 100644 android/build.gradle create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100644 android/settings.gradle create mode 100644 assets/icons/back.svg create mode 100644 assets/icons/cart_with_item.svg create mode 100644 assets/icons/chat.svg create mode 100644 assets/icons/notification.svg create mode 100644 assets/icons/search.svg create mode 100644 assets/icons/shopping-bag.svg create mode 100644 assets/images/Item_1.png create mode 100644 assets/images/Item_2.png create mode 100644 assets/images/Item_3.png create mode 100644 ios/.gitignore create mode 100644 ios/Flutter/AppFrameworkInfo.plist create mode 100644 ios/Flutter/Debug.xcconfig create mode 100644 ios/Flutter/Release.xcconfig create mode 100644 ios/Podfile create mode 100644 ios/Podfile.lock create mode 100644 ios/Runner.xcodeproj/project.pbxproj create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner/AppDelegate.swift create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 ios/Runner/Base.lproj/Main.storyboard create mode 100644 ios/Runner/Info.plist create mode 100644 ios/Runner/Runner-Bridging-Header.h create mode 100644 lib/components/search_box.dart create mode 100644 lib/constants.dart create mode 100644 lib/main.dart create mode 100644 lib/models/product.dart create mode 100644 lib/screens/details/components/body.dart create mode 100644 lib/screens/details/components/chat_and_add_to_cart.dart create mode 100644 lib/screens/details/components/color_dots.dart create mode 100644 lib/screens/details/components/list_of_colors.dart create mode 100644 lib/screens/details/components/product_image.dart create mode 100644 lib/screens/details/details_screen.dart create mode 100644 lib/screens/product/components/body.dart create mode 100644 lib/screens/product/components/category_list.dart create mode 100644 lib/screens/product/components/product_card.dart create mode 100644 lib/screens/product/products_screen.dart create mode 100644 pubspec.lock create mode 100644 pubspec.yaml create mode 100644 test/widget_test.dart diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1ba9c33 --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Web related +lib/generated_plugin_registrant.dart + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Exceptions to above rules. +!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages diff --git a/.metadata b/.metadata new file mode 100644 index 0000000..7c361dd --- /dev/null +++ b/.metadata @@ -0,0 +1,10 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: b041144f833e05cf463b8887fa12efdec9493488 + channel: stable + +project_type: app diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 0000000..bc2100d --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,7 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 0000000..fabde32 --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,63 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + compileSdkVersion 28 + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + lintOptions { + disable 'InvalidPackage' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "com.example.furniture_app" + minSdkVersion 16 + targetSdkVersion 28 + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.debug + } + } +} + +flutter { + source '../..' +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..e2dddb7 --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.example.furniture_app"> + <!-- Flutter needs it to communicate with the running application + to allow setting breakpoints, to provide hot reload, etc. + --> + <uses-permission android:name="android.permission.INTERNET"/> +</manifest> diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..770e712 --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,47 @@ +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.example.furniture_app"> + <!-- io.flutter.app.FlutterApplication is an android.app.Application that + calls FlutterMain.startInitialization(this); in its onCreate method. + In most cases you can leave this as-is, but you if you want to provide + additional functionality it is fine to subclass or reimplement + FlutterApplication and put your custom class here. --> + <application + android:name="io.flutter.app.FlutterApplication" + android:label="furniture_app" + android:icon="@mipmap/ic_launcher"> + <activity + android:name=".MainActivity" + android:launchMode="singleTop" + android:theme="@style/LaunchTheme" + android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" + android:hardwareAccelerated="true" + android:windowSoftInputMode="adjustResize"> + <!-- Specifies an Android theme to apply to this Activity as soon as + the Android process has started. This theme is visible to the user + while the Flutter UI initializes. After that, this theme continues + to determine the Window background behind the Flutter UI. --> + <meta-data + android:name="io.flutter.embedding.android.NormalTheme" + android:resource="@style/NormalTheme" + /> + <!-- Displays an Android View that continues showing the launch screen + Drawable until Flutter paints its first frame, then this splash + screen fades out. A splash screen is useful to avoid any visual + gap between the end of Android's launch screen and the painting of + Flutter's first frame. --> + <meta-data + android:name="io.flutter.embedding.android.SplashScreenDrawable" + android:resource="@drawable/launch_background" + /> + <intent-filter> + <action android:name="android.intent.action.MAIN"/> + <category android:name="android.intent.category.LAUNCHER"/> + </intent-filter> + </activity> + <!-- Don't delete the meta-data below. + This is used by the Flutter tool to generate GeneratedPluginRegistrant.java --> + <meta-data + android:name="flutterEmbedding" + android:value="2" /> + </application> +</manifest> diff --git a/android/app/src/main/kotlin/com/example/furniture_app/MainActivity.kt b/android/app/src/main/kotlin/com/example/furniture_app/MainActivity.kt new file mode 100644 index 0000000..99f73fa --- /dev/null +++ b/android/app/src/main/kotlin/com/example/furniture_app/MainActivity.kt @@ -0,0 +1,6 @@ +package com.example.furniture_app + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..304732f --- /dev/null +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Modify this file to customize your launch splash screen --> +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:drawable="@android:color/white" /> + + <!-- You can insert your own image assets here --> + <!-- <item> + <bitmap + android:gravity="center" + android:src="@mipmap/launch_image" /> + </item> --> +</layer-list> diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U<k`UN+s5qQ#T?KrmN7v*f2L%`GO4-^ z(#_kX+jhyc?*UrsvLED<w+p3gfi4y<3GxeO5CDRJfCLa|I1d8%B?X@R0!qL1ba4!c zIQ;g^b-pGC0f)elH+vJ_clF3>|N3vA*22N<t#oc3|FNCx%`Ll}Jbl*Q`}yg~1ZO@= zF!6p)NTYsh!6(JdtLiRuwi@`&XeqAXe9fY|=kfFy_3t|md##(iHE+K4ydxH3>aGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#i<K@6w~yiZZH!59hqLTYF-H zp0%uz(2~z(X$>qdw@AL`7MR}m`rwr|mZgU`8P7SB<Kba6`>kL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZ<W8RzO1)p=v7f>vCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q0<?|W-^A&VhjhO+044$%!YxiPI;`p4Q#=k za-F;6dk-j1J*_nBlG2>3KywUtLX8Ua?`H+NMzkczFPK3<KtaL4z@UHr{Pp|KpFjT| z1oAia3j-A_^>lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zyt<ns@%x_-ezPmiS-=02Ut8`WUGa5ad?jb?UB<rkVmAJ)*Xy}nR&U>Q?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@U<OZDKbLh*2~7avPrJzg literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..09d4391482be68e9e4a07fab769b5de337d16eb1 GIT binary patch literal 721 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy!iOI#yLg7ec#$`gxH85~pclTsBt za}(23gHjVyDhp4h+5i=O3-AeX1=1l$e`s#|#^}+&7(N@w0CIr{$Oe+Uk^K-ZP~83C zcc@hG6rikF&NPT(23>y!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg z<JnHTOuK%sGbNji)8cv6*ZNtnbwxJZ-?eY1e-ZPG#r<}_kct2Ie>oq1^2_p9@|WEo z*X_Uko@K)qYYv~<poG`LOv(2(Hhkk{Dz;b6_#4<(=XBwh@>>43eQGMdbiGbo>E~Q& zr<n4_y=h^-h|%}kO&jwCioQ5EzF6K8^VdP)H>YBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}f<lyK#S=nvDw%*y%vwN3psIS+1s7G}QfbZGd| zV;VoMy*YI2-%hU{-w$hl9!*Y_m~60h&vVVs6)lfgu09v4QWIt25UBGxaN`?mVmn*e U?z!!Jz`$qlboFyt=akR{0C)T?>Hq)$ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*<I`!eYGGw1~|=m#_ChcFm~F&M`%SZ6TU=QA3HGn&RTnk6urCox*3Gg@ad z+GI1@<S^O-Q7)rh9;1CBqhm3nV+o^EDWh`*qe~T|Yc-==4WnBvqgx%LdmW=k1EWVH zqbCqGF?u#LdbTinH8Xm(F#5DJ`gAb*0#PTUUpJ#)52HU2^)d$ZF$VTC22NlMoX8kB zi7{v*V-S#>%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&f<tNc(Fvx&VC63f@(X4V5O7Fnm=6N`&!0cPZsO%v z3=B;Ao-U3d6}R4ANDmGU6lr~^!Nn0K;_9?HfJbVIkW)*G%Yg&F)*BmaZ)6Dl_&?vn za8gV0`@6<5-|YBa|J|21FVarliS1gU$698&iU*DCL=pdt&mR>lvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2<a5l9V~;L&ZJD?F zD6?3<TgqciA=l+!=Lp=a%2;%{dX@{HT-OP1|K<}HAM1TO7OY<MaYyH#Pk)4WR?Ts} zSNX4tLr#6-^m$z!Pd18IzSivQkh7k6T`o7OKThT4#m*F4b=OPt(kAX%9+=X!JT9f} zc|=Oray6sl!J;#tXm&@~>^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b z<q`EIyVgP^b`|@{uDX5oB6GTR%^Or)?eBf<KkJg@eR6BbGYJ*-U;nQCudos6R9mG` zc=6fn-^`2s)0Hm%cpbX>pQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9<SN`RwE}r7KC~Q%?|CMD5O&m%cKw{Bn6{qJbmFIooO_;g=+H+v4V(@hJb6Mw< G&;$S>I;xof literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0 GIT binary patch literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`Y<EGuRA6NX2Md zPqmGQbJPjRLrI#9?bL25ZHra>V6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_M<hJUv`}aj#i9>sH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8<s&Q-yp4r*9 z(t|8L&`vhm$wAg!MByQdFQW1h)eqSS&@P++v^xmx2}OHF$WDZ4QHUN37S3Sd0#=@| zD*$YR!8QbJ55gWH>=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~<G>Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%<BT_6>4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8h<N~B$l%}NU6KvLZj~&>t^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z<NEXJGYh+`9LE^Z1#g~OZ)yl?O>%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z<YzdcoCZ;A^sD<`wcO1=DLw>~7YxD~Rf<<Lt&2H?f`^~9TW?0O(WnyXeZvF- hHxv6WEXUT@T$j&O|7sZ6iSVC<kf$5l^{TT-@h=>(a@_y` literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..1f83a33 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Theme applied to the Android Window while the process is starting --> + <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar"> + <!-- Show a splash screen on the activity. Automatically removed when + Flutter draws its first frame --> + <item name="android:windowBackground">@drawable/launch_background</item> + </style> + <!-- Theme applied to the Android Window as soon as the process has started. + This theme determines the color of the Android Window while your + Flutter UI initializes, as well as behind your Flutter UI while its + running. + + This Theme is only used starting with V2 of Flutter's Android embedding. --> + <style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar"> + <item name="android:windowBackground">@android:color/white</item> + </style> +</resources> diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..e2dddb7 --- /dev/null +++ b/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.example.furniture_app"> + <!-- Flutter needs it to communicate with the running application + to allow setting breakpoints, to provide hot reload, etc. + --> + <uses-permission android:name="android.permission.INTERNET"/> +</manifest> diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..3100ad2 --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,31 @@ +buildscript { + ext.kotlin_version = '1.3.50' + repositories { + google() + jcenter() + } + + dependencies { + classpath 'com.android.tools.build:gradle:3.5.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + jcenter() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..38c8d45 --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,4 @@ +org.gradle.jvmargs=-Xmx1536M +android.enableR8=true +android.useAndroidX=true +android.enableJetifier=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..296b146 --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Jun 23 08:50:38 CEST 2017 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 0000000..d3b6a40 --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,15 @@ +// Copyright 2014 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +include ':app' + +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() + +assert localPropertiesFile.exists() +localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + +def flutterSdkPath = properties.getProperty("flutter.sdk") +assert flutterSdkPath != null, "flutter.sdk not set in local.properties" +apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/assets/icons/back.svg b/assets/icons/back.svg new file mode 100644 index 0000000..666dfa4 --- /dev/null +++ b/assets/icons/back.svg @@ -0,0 +1,3 @@ +<svg id="back" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="22" height="22" viewBox="0 0 22 22"> + <image id="Arrow-icon" width="22" height="22" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAHdElNRQfkBAoGJygwwdO9AAABEElEQVRo3u2XvU4CURBGz0LnE/gehNjQ2PEIvgSJlZAsIf5UVFRGpeFNJMRQ2PkGFiaYWGos16GAkL27hM75CubcZn+KM3Oze2cGgiAIgiA4dpoH355xwQnvquAG/GEYQ40+x7brh4a/frjTG9/+AYxKemPkre8n+ql3/tcVfabUP3nrb7T620T/qNU/eOvvEv1ErXckA8ZclZ58cO/kLnjlBS6T7L1XL+OTU88tr7AS1LmUJgVdmd3I6x/hFzMn/S/PLDeX4lMA5OdgPQT3SgDVWigJQdwN1ENw74dA3hG6h7BvNFtinO/uWhgL/10oDyaSyUg+mgEMKDCM/D8lh3+zNh3emGvyD4IgCILgWFgD10TsYC9S1MoAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjAtMDQtMTBUMDY6Mzk6NDArMDA6MDAjCjy/AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIwLTA0LTEwVDA2OjM5OjQwKzAwOjAwUleEAwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAAASUVORK5CYII="/> +</svg> diff --git a/assets/icons/cart_with_item.svg b/assets/icons/cart_with_item.svg new file mode 100644 index 0000000..fcae491 --- /dev/null +++ b/assets/icons/cart_with_item.svg @@ -0,0 +1,4 @@ +<svg id="cart" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="27" height="22" viewBox="0 0 27 22"> + <image id="business" width="22" height="22" transform="translate(5)" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAHdElNRQfkBQQJEjhZpBjRAAAC60lEQVRo3u2ZS2sUQRCAvyS7oDFRAj6yWRLfJ0E0R1HxICKIBEE8COJV8Q949RIEf4MHES9ejEjUu/kFKiQRJBjIwxiMunETTTbjYbt3e3qmZ3o3U4HgVh8aumuqvq2uqamdaaM52ccQVzlOkRwzTDHKCNNN2mpYenhImcAaFZ5zaCvcn2Y64lyPEkPS7q+wYjgs85kJlkNxuCPp/iSlmqsXXCQPQDtneMy6Wl/nkpT7PJPKyRKXI7uDfFG7i/TIANytnfSp2P0iM0rjkYT7NqaU+dtOnfO13OjKHmBQGX9Pe4LWS6V13ddsu69iLbWesZGg9dTSzhCgX83vErX07kD2AAU1zyVqfWMNgL7sAXaoeTVRa4M/Ie1UyTmcRX9Bp5oPstPjJ+U5EtlZYNkP6gI/nNV+M2OVm34AoyLuAwImXQELyzHf82tYDkf9tcWolegCSrwNrZ6jF4BXKWl4jRywzJvQ6ll1FxWYT6Pco8I1Zq2/VuuFlOurz8tP1uoTdfWgrR49gqKaZ5sIsVu0taK94QaYyRRAW/MA0BUg2wg0AOCKwAQAiyykuKrqjfsCRCthn3WJlgd00s8wlRSAWwxT5r4DwOMZMaLy9Wi6agPSoXrGj/bGVt0FFb7GR8AF8J2VTAH0IfSwKxkgx35DPXsA7EJmA/TSAWR9AKZF6z6wAWTKkGmxBZAC4CpD/08E5AB+UYoDsGWCgIC/DbTr/hJrOz4HZhP/fjUr1ajm2esG2E23ApCQ2FIUBpDLANNqCyABQK4MbZcIyALMq37SA2DOy2Cjsq466lSAJX6LANTbMuMNgwnQwQFAqgyZlo3W1ATQ7ZhMBpiWjUMwAWRT0ANAtgpshwi0AOQBfqo3hY62bJyAgDWRdkzLpN2WRSMwJ9KOaamWIqMtqwN0qXZM7gBM67VaWAeQzwDTei0LWgD1l1T6VO5xQxCg2w2glwb8P7dsQmKSUKoJiZeYTxcFxqiIfSkIjw+c0G7/AUNyiwXFGkCbAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIwLTA1LTA0VDA5OjE4OjU2KzAwOjAwmNsJTQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMC0wNS0wNFQwOToxODo1NiswMDowMOmGsfEAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC"/> + <circle id="Ellipse_1363" data-name="Ellipse 1363" cx="3" cy="3" r="3" fill="#035aa6"/> +</svg> diff --git a/assets/icons/chat.svg b/assets/icons/chat.svg new file mode 100644 index 0000000..01a27b1 --- /dev/null +++ b/assets/icons/chat.svg @@ -0,0 +1,3 @@ +<svg id="chat" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14" height="14" viewBox="0 0 14 14"> + <image id="chat-2" data-name="chat" width="14" height="14" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAHdElNRQfkBQQJJQN4qFHBAAAEaklEQVRo3u2ZS2xUZRTHf/dOO0MboCCvQqUoi9poTSWUEiMhkQTQGJSauNAoqQGFhIWaqBs3atmICY2JslJEmyC60Lrw/UowmhShrTzE1ipprfaBKG0H+u7fxZzeTttpmedlw9l8957vnPP/3+815zsD1+Uai5OsowIsII8AAYboY9Dp9YGAsihjLaWUUEg+gUmdV2ilnd+op54zznCaB0p5qlStLik+CatWT6ogXeAb9IH644SOlhF9ogplpzQFupcXKZ+mHqWDVjoZ4DIQIpdcVlHAwhgh2tjH4aSmRHfo2ynf1Kl39YTWKjSDx3xt1FM6ogtT/Fr0QKLgQVVpKCpEt17TOsW5ZOWqXPvVMYnEUS2NH3616qNcf9VOBZMYwWxV6KdJ43dXfI5b9W+U0y4F4nKLHcvR/frFizaonVd3eSRq6A8pL3lwL2JIL0fFfHZ240qNmmGPKlIH9+Ku118ehWdmNtuuYTNqVnH64AG0wlsPY9oe26RUV8zktPLTCw+gPNVZ/F7dGqu7xbqbtDj98ABaoHOGcUJZUzsPWVeXbs4MPICK9J/hPDe5Y4vGJEmj2pw5eAA9ZgT6tGRCGdAZU7+aWXgAfTYNS5Wm+l25PhC4zbZ62E4ZOTprBB7KPDyA3jO83ZHXzfbaGO+PTcoENhjij5HXGnut9Ace5KjZlvwiFLREq0dz/CIAOjA+6S5lRJbCp86AfwT42tpylzJ7/MZHeGiwtthljT3W+4nvdHAJgCLUYKlCEjlPKmK/Ct0uNwDQ6gz5S4DITWqeSw4Afi7AiIwB4LpEDt9B3wnMB6DPZRSAFBLPJCWSpPe4tAGw2l90LSKS9LS4nAcgT8t8ZTC++Ztc/rDH230lsMnaE6jCTuXX/cTXz4ZagOba1bsjlRtQgvClBn8KXCfMdwDkc49vA7DH2poInx1eQuL68v0rNSBJGtbyiCKkv43Co74QeGf85jmh2muqDuOUSfi77QIwpImzR9k6ZRS+v1pNJ0X4xWo1pOrJHSVeGSqD21FZ+spQzmvu1M7xaZDeyMxiVEBHDGFEm6Z3OzrqUahJ/0Qo6GXfMxUplK0PPZM6FaUVfomOebHfmo3lx55ZWLvTdVHRfVH1kZpZJ1hBHdSEfJ4G8MKooZcOxnHg62H1mXl3yuAHooq8Q9oTr2OxVbXOeRonsSNKc7RNtRqJ+vazWh+/+43m9KWn2acxNapa27RiVs+g1mmvPlJY0TKgqpnKu1kxtRutbbSwz/MCUEopT4Mucpo/aaeLfsKMkkeIeSznJlZRxFSgEQ5T5bQlMn7oC2O+BZSlaiUrnXpFiWebKrcKRreCKtfxJKHfVkU8t61pO11BfrAL6zEus5XxXXucHRRzJ2u4hcIZ/mfop5mTnKSOBmcsvs+dTuAQj8ewe59dTtizyWEly1hKDrlAPwP00kW780/Cwz0Nfn+M4bzgW+0kBvxFvaSFqUdOHH5YTXpTD860e9Mn3hpQiBJ77KePLt+v69flWsn/YQzZm3wZ8PQAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjAtMDUtMDRUMDk6Mzc6MDMrMDA6MDArZMrCAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIwLTA1LTA0VDA5OjM3OjAzKzAwOjAwWjlyfgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAAASUVORK5CYII="/> +</svg> diff --git a/assets/icons/notification.svg b/assets/icons/notification.svg new file mode 100644 index 0000000..cc741eb --- /dev/null +++ b/assets/icons/notification.svg @@ -0,0 +1,4 @@ +<svg id="Component_2_1" data-name="Component 2 – 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="22" height="22" viewBox="0 0 22 22"> + <image id="Bell-icon" width="22" height="22" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAHdElNRQfkBAoDNQxy/YVUAAADE0lEQVRo3u1ZXUgUURg9o+amaW1UZFgiPli+WPQSIUn1YAVRVFARvgViEbFFofUYEQlJlEH6UI9CEUlQQr1EhWC/SGsQCv2TiaXZrmLqenro7t0Z98e5d3bnac7LfDN7v3POvXvnzp1vAE2wgm38wL8c4iPWMkuXR1e+gVM0o4tFbsqfZjzessAt+XJOMhGa3DJwVUo+Zj0vcUKchTjfHQPvhOCz/1OPh6ShzepsOrM3Ot06jBkAwF1QXFnhjoGQOFaI4xoYIvqjwaYO3hEDPs0Ay7iFQXEecelWZB0To5u5mZbO4xG+YHIMsYXlmRLP4XH+4NyIsJ0l6Zdfxx4b4lGEeZKGPWZbzViHKzAvMkQQXXiPPPgwjREUYz02wboUd6LWGElH3w2et/TuG89wVYJ2Pu7lQ0vLIIvTYaDJRDnKAH0pW2/gc1P7fi53Kh8w0T3lShsZWWw0PapfM9+JfJWJ6iZzbOfVMCTzbujL5/OjpGmzO6ul9TGZu0fXwAVJ0cls5ex9nBHZX7S2KiziuCD4zqVaHWiRHWjQSb8o0w9ojmABvwqGQeapJufIZfeN2r9vYYk9tg6qpu6Uqft15QHmckCw3FdNvSYSh1MvPHPyNAueMUUe9orEdifyAKvlSFYnbpFwS8ZcrBbhE2cG0I0JEVUqGEAZoqterzN9YxL9IkyyUUlsYJmMPjscAeBTHKcNA7GVKwSniO6UC1UMxDaXU44NTMZx2jDgIjwDngHPgGfAM+AZ8Ax4BjwDs977eBQnsATz5Lb0t6wD62KB2A1OIQzgF5qN1qQGWIkee3UzByDWGsHYqfUvKM24PGCgNLm5QvYrlCP10Getl8yeA37sSln196NRRNctb0012AoAGMTllP0fwD1j1MH4sUT2pMpyPVrMDKoyqt6GYRlZvw0sivs9QwZGpMQ2U/992C5C5y+zc4EdYrAj3C2uZMt6Cnk48wZ2SLEZ3uYxnuVLeeUn/Rk3APBB0lus3gV5gIvlZyorWp1z27WwkLdmiY/xlH49Uc/ERraxj+Mc5iue0/808Q+82Zjamp9afQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMC0wNC0xMFQwMzo1MzoxMiswMDowMB7NymsAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjAtMDQtMTBUMDM6NTM6MTIrMDA6MDBvkHLXAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAABJRU5ErkJggg=="/> + <circle id="Ellipse_30" data-name="Ellipse 30" cx="4" cy="4" r="4" transform="translate(14 11)" fill="#ffa41b"/> +</svg> diff --git a/assets/icons/search.svg b/assets/icons/search.svg new file mode 100644 index 0000000..10097e7 --- /dev/null +++ b/assets/icons/search.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="22" height="22" viewBox="0 0 22 22"> + <image id="search" width="22" height="22" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAHdElNRQfkBA0EGBWuJFlHAAAEUUlEQVRo3t1YS2xVVRRd9/aTgg8eHxOLlagolPAaozQQeU1qizqTxEAc2QEJSYnYAZDgRIuOINGEMHBmI4lMDWFmjHw0fspL1MZIsSVUTUigbeCVvtf/a1kOsOfue+59t+f+YuIe7fbsvdY6+5x37tnHgqHRQg7tyKEZT2M9HkM9JlHGGIYxhGv4yZo1RQpttNnJcxxjkM3xMg9xbfLkq3mUf9PUZtjH55Mjr+UxjhuTL9siz7MpCfo8fwtNvmwlHmeNGY/lS27jfXwIL0QR3+MGhjGGaSxgDTZgC5rxMrb7gFzF29bdaHPP8mvPnO7wE7bSrpLxJI+w35MzyrYo9E/wVw3oFrtZa5D5Ar/govbbOBCWvpE3XRATfNd0NQGAu/mzK78SSgKzHHClX+am0BWsYa+rDnPsME21tbU/FWbuLqROFgXOA241S+sVSUvsiUb+L1aOtwXaABtWTsm7CheLHgC4zXWInV0pvNZ17JyKSw8A3MUZcT62Bgcfc229iGvvQe0WqAVa1QNXi3JNhN/5ARIuCAlvVg87KsKOJEcP8CmWFfIvVWpAW3xwB5Mqv0I/KSbX7h+yV4R0JUsPMMsJhf6Zf8g58ckxOPNDSzgjjqRV3mGLoyrg4+TpAb4kKvyad7hFDLdGwDeRMKQYTutjNpyNUcRAOgJwSXmebWhjh/J/sB6mJOA75eW8Apzr1PWU6IFB5WXZqAt4Rvk3UxNwC0vKf1YXkFX+eFr81gIm1R9a82Ijo/xyahUASspbowtwjp7FFAVUlFenC5hSfsYULYI5hdfqbIt/rEuLnZbYaR4Bo8pPrq3UrQnOnVDrlmwMK785NQEOcgV/6QKGlL8nNQF55Y1YFfeQjYKjM5G22s/2Kq/fM8YGzqpv1TtpsHMj5wMvPLykhvtDo5sI6BHtjt+Fl4fEjWBn4vQ2f3cu/P4hazmtQr5MXMB+Mb2D1YL6RJF2J0pfx0GFfY/Vzlo+x4q4vSd4Med7Yv4fBAWeF4G9idG3iMW9z2xQaBNLopHsTIQ+wxtiWodXCj8ugovMGXEE4dW5njsK1R64nIQaXhEJt7ktFn09vxFoZW43SdokWhRynLsi02e0xx7Tho9tYtOQM+yORN/iWntynnnz5H3iB0mSF7g5FHkdT4h3kWUrhZFwgHOu5DJPcp1Rps394tiJIaGDD7T0SZ7hi4E5j7OH1z2088Kf4ivmErZqD5aPbIif8i3uYL2I3MxX2curXPBEl9nFPZyMKqGBZ7V3X8cqLHKEI7zr2rJuKzz64cWQALCVBUax+zzsHDseCR1hJFjcx2uhyO/xI67XUOJIAAC2s8+zLb22xCs86P/BjS0B4Cq+ztP80UfIAv/g5+wKfl2sLsFakVuHasQWZJAFMIsp3MGfllFPyTy+Eg3aNN6wvg1dh3jGfOyF+D9IaBMXH7KU/C08rIRUOpEwEkrx8eJJuPifCAC4k/0s8SIb/wHatdKR1DWRDwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMC0wNC0xM1QwNDoyNDoyMSswMDowMD72a0UAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjAtMDQtMTNUMDQ6MjQ6MjErMDA6MDBPq9P5AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAABJRU5ErkJggg=="/> +</svg> diff --git a/assets/icons/shopping-bag.svg b/assets/icons/shopping-bag.svg new file mode 100644 index 0000000..4ebcfe8 --- /dev/null +++ b/assets/icons/shopping-bag.svg @@ -0,0 +1,3 @@ +<svg id="shopping-bag" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14" height="14" viewBox="0 0 14 14"> + <image id="shopping-bag-2" data-name="shopping-bag" width="14" height="14" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAHdElNRQfkBQQJIS5ZG8iwAAAC9klEQVRo3u2ZS2uTQRSG32kTqDVVCl6ahNb7ShDNUlRciAgiRRAXgrhV/ANu3RTB3+CiiBs3VqTq3v4CFWwFKRZ6sQ1WTUwrTfq66Ewy330Sv1Mo5mwGZs53zpN3zkxO8il0ZNyPUVzDCRSRwTxmMYkJNddZrPaTD/IRa/Rbg895eDvSn+Eco6zCUen0V7lmJazxC6dZ9ehwVzL9KVaaqV7wErMAwB6e5RPW9Xydl6XSZzmjk6zySmC1xK96tcxBGYB7zZ0+Hbpe5Lz2eCyRXnFWh78T6XOhWRu59AFKOvh79sR4vdReN1zj9rg6wpTWM7UZ4/XU550iwLAe38V6mdWR9AHyelyM9VrBBgCgkD5Anx7X45zUJv54vBMtEzbJvpBP0K/HQ9zl8JGyPBpYWVZVJyZe5A9K2DpvuQFMiqQnyZkowbx23HX/2rYjwTtEhShQQQ5ABW890+cxBAB4FV+GuI4MgCreeGbP6VOUV0tJG7BXyzXlm3+t5/MJz299X372zY7rp0t+/+AWFPW40KnOoWaiFf0L0QDzqQKYaA4A5gZIV4E2AKIUmAYAlLGckGrL75MrQPAmLPgeMfYQ/RjGmGokANzGGGp4EAGQ/B3BCV2vxxJd2zD26p7xo39lm06BauBbuAJRAN/VWpoAMJswyN2xAMzggOWePkCrr4hQYAi9ANI+hHZE3znwA8hcQ3bELkACQNQ19P8oIAagfqHiDrCBcuoKmIOY97Zl4TWwEPvzq1PbUjWLfZEA3IMBi1VGAd8meBWQK0E7ahcgBkDuGtopCsgCLKHhCrDoFLBNU3XdUScCrKrfIgq02jLrHwYLgL04CEDqGrIjW62prYBpx2QqwI5sbYINIFuCDgCyt8BOUKALIA6gfqKaDFDHipgC5iYotNqyIMCiSDvmBbDasiYAc7odk6sAO3rzLmwpIF+CdvRmFXQBWn9SmV25z5uCAAPRAGZqxP11yz9YSBFKNSHhFnx1wTyn2BB7U+C1Dzxp8v4FSQKzsT0wS50AAAAldEVYdGRhdGU6Y3JlYXRlADIwMjAtMDUtMDRUMDk6MzM6NDYrMDA6MDD0/UvlAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIwLTA1LTA0VDA5OjMzOjQ2KzAwOjAwhaDzWQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAAASUVORK5CYII="/> +</svg> diff --git a/assets/images/Item_1.png b/assets/images/Item_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1e2ef1f512ae0c43e1c779d317bab06a071f1b62 GIT binary patch literal 29510 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 UEJnox0Q&P@{v){RjY;tT0i6O9=>Px# literal 0 HcmV?d00001 diff --git a/assets/images/Item_2.png b/assets/images/Item_2.png new file mode 100644 index 0000000000000000000000000000000000000000..27a8f2bf9000f2d48f347790e8d7291b2a497467 GIT binary patch literal 18386 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�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 literal 0 HcmV?d00001 diff --git a/assets/images/Item_3.png b/assets/images/Item_3.png new file mode 100644 index 0000000000000000000000000000000000000000..0352ccff18b82980eb34630b0320f02901e155b8 GIT binary patch literal 11722 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 literal 0 HcmV?d00001 diff --git a/ios/.gitignore b/ios/.gitignore new file mode 100644 index 0000000..e96ef60 --- /dev/null +++ b/ios/.gitignore @@ -0,0 +1,32 @@ +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 0000000..6b4c0f7 --- /dev/null +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>$(DEVELOPMENT_LANGUAGE)</string> + <key>CFBundleExecutable</key> + <string>App</string> + <key>CFBundleIdentifier</key> + <string>io.flutter.flutter.app</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>App</string> + <key>CFBundlePackageType</key> + <string>FMWK</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleVersion</key> + <string>1.0</string> + <key>MinimumOSVersion</key> + <string>8.0</string> +</dict> +</plist> diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..e8efba1 --- /dev/null +++ b/ios/Flutter/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..399e934 --- /dev/null +++ b/ios/Flutter/Release.xcconfig @@ -0,0 +1,2 @@ +#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "Generated.xcconfig" diff --git a/ios/Podfile b/ios/Podfile new file mode 100644 index 0000000..6697f0a --- /dev/null +++ b/ios/Podfile @@ -0,0 +1,87 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '9.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def parse_KV_file(file, separator='=') + file_abs_path = File.expand_path(file) + if !File.exists? file_abs_path + return []; + end + generated_key_values = {} + skip_line_start_symbols = ["#", "/"] + File.foreach(file_abs_path) do |line| + next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } + plugin = line.split(pattern=separator) + if plugin.length == 2 + podname = plugin[0].strip() + path = plugin[1].strip() + podpath = File.expand_path("#{path}", file_abs_path) + generated_key_values[podname] = podpath + else + puts "Invalid plugin specification: #{line}" + end + end + generated_key_values +end + +target 'Runner' do + use_frameworks! + use_modular_headers! + + # Flutter Pod + + copied_flutter_dir = File.join(__dir__, 'Flutter') + copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework') + copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec') + unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path) + # Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet. + # That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration. + # CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist. + + generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig') + unless File.exist?(generated_xcode_build_settings_path) + raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path) + cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR']; + + unless File.exist?(copied_framework_path) + FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir) + end + unless File.exist?(copied_podspec_path) + FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir) + end + end + + # Keep pod path relative so it can be checked into Podfile.lock. + pod 'Flutter', :path => 'Flutter' + + # Plugin Pods + + # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock + # referring to absolute paths on developers' machines. + system('rm -rf .symlinks') + system('mkdir -p .symlinks/plugins') + plugin_pods = parse_KV_file('../.flutter-plugins') + plugin_pods.each do |name, path| + symlink = File.join('.symlinks', 'plugins', name) + File.symlink(path, symlink) + pod name, :path => File.join(symlink, 'ios') + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + target.build_configurations.each do |config| + config.build_settings['ENABLE_BITCODE'] = 'NO' + end + end +end diff --git a/ios/Podfile.lock b/ios/Podfile.lock new file mode 100644 index 0000000..663e33a --- /dev/null +++ b/ios/Podfile.lock @@ -0,0 +1,34 @@ +PODS: + - Flutter (1.0.0) + - path_provider (0.0.1): + - Flutter + - path_provider_linux (0.0.1): + - Flutter + - path_provider_macos (0.0.1): + - Flutter + +DEPENDENCIES: + - Flutter (from `Flutter`) + - path_provider (from `.symlinks/plugins/path_provider/ios`) + - path_provider_linux (from `.symlinks/plugins/path_provider_linux/ios`) + - path_provider_macos (from `.symlinks/plugins/path_provider_macos/ios`) + +EXTERNAL SOURCES: + Flutter: + :path: Flutter + path_provider: + :path: ".symlinks/plugins/path_provider/ios" + path_provider_linux: + :path: ".symlinks/plugins/path_provider_linux/ios" + path_provider_macos: + :path: ".symlinks/plugins/path_provider_macos/ios" + +SPEC CHECKSUMS: + Flutter: 0e3d915762c693b495b44d77113d4970485de6ec + path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c + path_provider_linux: 4d630dc393e1f20364f3e3b4a2ff41d9674a84e4 + path_provider_macos: f760a3c5b04357c380e2fddb6f9db6f3015897e0 + +PODFILE CHECKSUM: c34e2287a9ccaa606aeceab922830efb9a6ff69a + +COCOAPODS: 1.9.1 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..a6904db --- /dev/null +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,577 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 7CC7CE4A9627CC5B750EA464 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A28399390CE7D5A8DDC203FE /* Pods_Runner.framework */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; + 75E8367CCEE1C2201BF9B5E3 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; + A28399390CE7D5A8DDC203FE /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CAD67A22B8DAD120B31EA586 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; }; + FE38E36AB539AF40CD1443F0 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7CC7CE4A9627CC5B750EA464 /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 803CA2B837E7B37733309B5B /* Pods */ = { + isa = PBXGroup; + children = ( + 75E8367CCEE1C2201BF9B5E3 /* Pods-Runner.debug.xcconfig */, + FE38E36AB539AF40CD1443F0 /* Pods-Runner.release.xcconfig */, + CAD67A22B8DAD120B31EA586 /* Pods-Runner.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = "<group>"; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = "<group>"; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 803CA2B837E7B37733309B5B /* Pods */, + D95AD4452D414FFC2C33ED97 /* Frameworks */, + ); + sourceTree = "<group>"; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + ); + name = Products; + sourceTree = "<group>"; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 97C146F11CF9000F007C117D /* Supporting Files */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = "<group>"; + }; + 97C146F11CF9000F007C117D /* Supporting Files */ = { + isa = PBXGroup; + children = ( + ); + name = "Supporting Files"; + sourceTree = "<group>"; + }; + D95AD4452D414FFC2C33ED97 /* Frameworks */ = { + isa = PBXGroup; + children = ( + A28399390CE7D5A8DDC203FE /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = "<group>"; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + FA2735CAD5A7FB0B5580EEFC /* [CP] Check Pods Manifest.lock */, + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 7CB3D67DF25007E8DA4E89A3 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1020; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 7CB3D67DF25007E8DA4E89A3 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", + "${PODS_ROOT}/../Flutter/Flutter.framework", + "${BUILT_PRODUCTS_DIR}/path_provider/path_provider.framework", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; + FA2735CAD5A7FB0B5580EEFC /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = "<group>"; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = "<group>"; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.furnitureApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.furnitureApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.furnitureApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Workspace + version = "1.0"> + <FileRef + location = "group:Runner.xcodeproj"> + </FileRef> +</Workspace> diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>IDEDidComputeMac32BitWarning</key> + <true/> +</dict> +</plist> diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>PreviewsEnabled</key> + <false/> +</dict> +</plist> diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..a28140c --- /dev/null +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Scheme + LastUpgradeVersion = "1020" + version = "1.3"> + <BuildAction + parallelizeBuildables = "YES" + buildImplicitDependencies = "YES"> + <BuildActionEntries> + <BuildActionEntry + buildForTesting = "YES" + buildForRunning = "YES" + buildForProfiling = "YES" + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "97C146ED1CF9000F007C117D" + BuildableName = "Runner.app" + BlueprintName = "Runner" + ReferencedContainer = "container:Runner.xcodeproj"> + </BuildableReference> + </BuildActionEntry> + </BuildActionEntries> + </BuildAction> + <TestAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + shouldUseLaunchSchemeArgsEnv = "YES"> + <Testables> + </Testables> + <MacroExpansion> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "97C146ED1CF9000F007C117D" + BuildableName = "Runner.app" + BlueprintName = "Runner" + ReferencedContainer = "container:Runner.xcodeproj"> + </BuildableReference> + </MacroExpansion> + <AdditionalOptions> + </AdditionalOptions> + </TestAction> + <LaunchAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + launchStyle = "0" + useCustomWorkingDirectory = "NO" + ignoresPersistentStateOnLaunch = "NO" + debugDocumentVersioning = "YES" + debugServiceExtension = "internal" + allowLocationSimulation = "YES"> + <BuildableProductRunnable + runnableDebuggingMode = "0"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "97C146ED1CF9000F007C117D" + BuildableName = "Runner.app" + BlueprintName = "Runner" + ReferencedContainer = "container:Runner.xcodeproj"> + </BuildableReference> + </BuildableProductRunnable> + <AdditionalOptions> + </AdditionalOptions> + </LaunchAction> + <ProfileAction + buildConfiguration = "Profile" + shouldUseLaunchSchemeArgsEnv = "YES" + savedToolIdentifier = "" + useCustomWorkingDirectory = "NO" + debugDocumentVersioning = "YES"> + <BuildableProductRunnable + runnableDebuggingMode = "0"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "97C146ED1CF9000F007C117D" + BuildableName = "Runner.app" + BlueprintName = "Runner" + ReferencedContainer = "container:Runner.xcodeproj"> + </BuildableReference> + </BuildableProductRunnable> + </ProfileAction> + <AnalyzeAction + buildConfiguration = "Debug"> + </AnalyzeAction> + <ArchiveAction + buildConfiguration = "Release" + revealArchiveInOrganizer = "YES"> + </ArchiveAction> +</Scheme> diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..21a3cc1 --- /dev/null +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Workspace + version = "1.0"> + <FileRef + location = "group:Runner.xcodeproj"> + </FileRef> + <FileRef + location = "group:Pods/Pods.xcodeproj"> + </FileRef> +</Workspace> diff --git a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>IDEDidComputeMac32BitWarning</key> + <true/> +</dict> +</plist> diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>PreviewsEnabled</key> + <false/> +</dict> +</plist> diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift new file mode 100644 index 0000000..70693e4 --- /dev/null +++ b/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d36b1fa --- /dev/null +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332 GIT binary patch literal 10932 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..28c6bf03016f6c994b70f38d1b7346e5831b531f GIT binary patch literal 564 zcmV-40?Yl0P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp) z=>Px$?ny*JR5%f>l)FnDQ543{x%ZCiu33$Wg!pQFfT_}?5Q|_VSlIbLC`dpoMXL}9 zHfd9&47Mo(7D231gb+kjFxZHS4-m~7WurTH&doVX2KI5sU4v(sJ1@T9eCIKPjsqSr z)C01LsCxk=72-vXmX}CQD#BD;Cthymh&~=f$Q8nn0J<}ZrusBy4PvRNE}+1ceuj8u z0mW5k8fmgeLnTbWHGwfKA3@PdZxhn|PypR&^p?weGftrtCbjF#+zk_5BJh7;0`#Wr zgDpM_;Ax{jO##IrT`Oz;MvfwGfV$zD#c2xckpcXC6oou4ML~ezCc2EtnsQTB4tWNg z?4bkf;hG7IMfhgNI(FV5Gs4|*GyMTIY0$B=_*mso9<WQhydS~rpwVfTyjm}~vs+Nj zL2;<v%s@b+9jXc@S}#x@@VwF4twVwRxFCih^tWg?H)v?24ZSeYC3aaOsM8yWc7GEz z7zKYq3)^d7srCATzmw!h1d8POV>Ityq$m^S>15>-?0(zQ<8Qy<_TjHE33(?_M8oaM zyc;NxzRVK@DL6RJnX%U^xW0Gpg(lXp(!uK1v0YgHjs^ZXSQ|m#lV<y2`lV{mrphLz zZs5NcIN~Wp-YgL)o*yksN!%A$BK4ovtf60)eD^OF((VmRH^fQ+0000<MNUMnLSTXr Cg!*^@ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2ccbfd967d9697cd4b83225558af2911e9571c9b GIT binary patch literal 1283 zcmV+e1^oJnP)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T7000EaNkl<Zc$~$U zO>7ip7{`C_J2Tx<S}3NqpxB^%g)f1Fg2os<-~kDV#FGRs+&p_AidZnjqZ&0H2nR1* zj0q8l5fTo51w)j?(&7h*nm|&p(vR)ByR$QY4>Pmfw%h$|%acrYHt)Re^PB%O&&=~a zhS(%I#+V>J-vjIib^<+s%ludY7y^C(P8nmqn9fp!i+?vr`bziDE=bx`%2W#Xyrj|i z!XQ4v1%L`m{7KT7q+LZNB^h8Ha2e=`Wp65^0;J00)_^G=au=8Yo;1b`CV&@#=jIBo zjN^JNVfYSs)+kDdGe7`1&8!?MQYKS?D<dJ!G*SVsfpkGU(q>uHZf3iogk_%#9E|5S zWeHrmAo>P;ejX7mwq#*}W25m^ZI+{(Z8fI?4jM_fffY0nok=+88^|*_DwcW>mR#e+ z<Ez>X$F_KMdb6sRz!~7KkyN0G(3XQ+;z3X%PZ4gh;n-%62U<*VUKNv(D&<?Pa8X$2 z7!Cm2JRI`|2MxYb7DBni>Q->Na@Xb&u5Q3`3DGf+a8O5x7c#7+R+EAYl@R5us)CIw z7sT@_y~Ao@uL#&^LIh&QceqiT^+lb0YbFZt_SHOtWA%mgPEKVNvVgCsXy{5+zl*X8 zCJe)Q@y>wH^>l4;h1l^Y*9%-23TSmE>q5nI@?mt%n;Sj4Qq`Z+ib)a*a^cJc%E9^J zB;4s+K@rARbcBLT5P=@r;IVnBMKvT*)ew*R;&8vu%?Z&S>s?8?)3*YawM0P4!q$Kv zMmKh3lgE~&w&v%wVzH3Oe=jeNT=n@Y6J6TdHWTjXfX~-=1A1Bw`EW8rn}MqeI34nh zexFeA?&C3B2(E?0{drE@DA2pu(A#ElY&6el60Rn|Qpn-FkfQ8M93AfWIr)drgDFEU zghdWK)^71EWCP(@(=c4kfH1Y(4iugD4fve6;nSUpLT%!)MUHs1!zJYy4y||C+SwQ! z)KM&$7_tyM`sljP2fz6&Z;jxRn{Wup8IOUx8D4uh&(=<hAE@CMcU{$tA%YXI_aT>O zx-7$a;U><*5L^!%<hgO?EU&+RjyvO7JjW1(jTP<<mHfpWO->xRlw)vAbh;sdlR||& ze}8_8%)c2Fwy=F&H|LM+p{pZB5DKTx>Y?F1N%BlZkXf!}JeGuMZk~LPi7{cidvUGB zAJ4LVeNV%XO>LTrklB#^-;8nb;}6l;1oW&WS=Mz*Az!4cqqQzbOSFq`$Q%PfD7srM zpKgP-D_0XPTRX*hAqeq0TDkJ;5HB1%$3Np)99#1<DGLlIe;R_chCpIPcPAH*zr@Cs z?fB^|EuMpG4X$HBVo_%sSAM_4?&DuFlF8#(Lxtca1NV%iv%qemMnJ<G_#|w%M>6c{ zJImlNL(np<oN+CTXIZs=Ip^Qn&FbY#Fn}>L!W|Gr_kxl1GVmF5&^$^YherS7+~q$p zt}{a=*RiD2Ikv6o=IM1kgc7zqpaZ;OB)P!1zz*i3{U()Dq#jG)egvK}@uFLa`oyWZ zf~=MV)|yJn`M^$N%ul5);JuQvaU1r2wt(}J_Qgyy`qWQI`hEeRX0uC@c1(dQ2}=U$ tNIIaX+dr)NRWXcxoR{>fqI{SF_dm1Ylv~=3YHI)h002ovPDHLkV1g(pWS;;4 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f091b6b0bca859a3f474b03065bef75ba58a9e4c GIT binary patch literal 1588 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..4cde12118dda48d71e01fcb589a74d069c5d7cb5 GIT binary patch literal 1025 zcmV+c1pfPpP)<h;3K|Lk000e1NJLTq0012T0012b1^@s6R+DEB000BXNkl<Zc$~GD zO=w(I6vuz}zV|Yjbed17ZK+8~s#O|MP&clmqDBgWZmLq<SX}r4y4TvKx^iJf5Gq-y zOGQEjOCyP3MX4X5l~PNgieUPsktUPGBs1^bzl-}OnIxT=SE~o^V(z=|{La^$dmfUE zBm*GnK}km>U6E9hRK9^#O7(mu>ETqrXGsduA8$)?`v2seloOCza43C{NQ$$<lg6i9 zl}<@|7r;n*02l>gAOH**MCn0Q?+L7dl7qnbRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yI zC*%Wgg22K|8E#!~c<Gji=2TnCP5=vx8A($>TNYR~@Y9Kep<iQi*1HiJn2AMS!E&HK zVnfa>MPrrB8cABapAFa=`H+UGhkXUZV1GnwR1*lPyZ;*K(i~2gp|@bzp8}og7e*#% zEnr|^CWdVV!-4*Y_7rFvlww2Ze+>j*!Z!pQ?2l->4q#nqRu9`ELo6RMS5=br47g_X zRw}P9a7RRYQ%2Vsd0Me{_(EggTnuN6j=-?uFS6j^u69elMypu?t>op*wBx<=Wx8?( ztpe^(fwM6jJX7M-l*k3kEpWOl_Vk3@(_w4oc}4YF<H6foEqi-Iie=wvW~+c5O@{fz z15Zzj&L+qQPza&y;JLn#y}co!t)163;kCwx>4|Rt=<qKwceYzzPl3~A@%(s+$wlbO zc~D^BY8jsH33#eIY*@)P+hFCz&o3t2+iBU*?19gIU*g-zge@(Wn_CP4Vk(AbwubEK z374wAp49EV)x|L}FJ3uW;>2V^XU?#Yz`8(e?aZ@#li0n*=g^qOcVpd-Wbok=@b#Yw zqn8u9a)z>l(1<yk<F_A9G0?W)jg&H7#tqwGWPN2m*&Q-?N5mfsA}|J<Z(-)UuQ+*R zjGb?c@Yn1jfi)zqX5f~c$$GU_a(w7qiMP%R9Utb>kEaPYZ6hwubN6i<8QHgsu0oE) ziJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+&KI9y^);#0qt}t-$C|Bo71lHi{_+lg#f%RFy z0um=e3$K3i6K{U_4K!EX<i!R0Z{NtsYrELo(c*J#)_6Q;B#i<)$v7hkaB2AVeLT(w zU;Ip%kGwHqz-)1z`*v*RqZjUHU2}-Rka8<C(s3i{5#T7-ISo1qYYdC!WW~O<hQAkM zTAD(la4CD$)8M0iM>?F&rExl^W|G8Z8;`5z-k}OGNZ0#WVb$WCpQu-_YsiqKP?BB# vzVHS-CTUF4Ozn5G+mq_~Qqto~ahA+K`|lyv3(-e}00000NkvXXu0mjfd`9t{ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d0ef06e7edb86cdfe0d15b4b0d98334a86163658 GIT binary patch literal 1716 zcmds$`#;kQ7{|XelZftyR5~xW7?MLxS4^|Hw3&P7^y)@A9Fj{Xm1~_CIV^XZ%SLBn zA;!r`GqGHg=7>xrB{?psZQs88ZaedDoagm^KF{a*>G|dJWRSe^I$DNW008I^+;Kjt z>9p3GNR^I;v>5_`+91i(*G;u5|L+Bu6M=(afLjtkya#yZ175|z$pU~>2#^Z_pCZ7o z1c6UNcv2B3?;<Go5WWQn|6+uH2_m2r5lB}%5TZuPR`V-CQi_n2Vq{<`GLVi8qN@j# zqI`={L3C8G3I^(@3RHBhE;&c<RtGw!0)4Fxo!p8}d#c|cHc-(hHf$6dbHN{)B&J-6 z8CPP?l~^=?vruV^WG`2|w?$&vBC(2KTgB8_sZ6T`6J3jmsl%uYPl@SJV)#nyIF2<> zX%qdxCXQp<sXX*V>dKRz=#b*q0P%b&o)5ZrNZt7$fiETSK_VaY=mb4GK`#~0K#~9^ zcY!`#Af+4h?UMR-gMKOmpuYeN5P*RKF!(tb`)oe0j2B<k6JOOEKm0v@7`o2xzafNf z3ZX<HM12iqsu+Xris0NgGTIwip-5ILf*5aQWp8EWDyC!=Q!?hXjP-1SH7#S$$T+=I zoW3be|GWDB>H1l?=>y#S5pMqkx6i{*=V9JF%>N8`ewGhRE(|WohnD59R^$_36{4>S zDFlPC5|k?;SPsDo87!B{6*7eqmMdU|QZ84>6)Kd9wNfh90=y=TFQay-0__>=<4pk& zYDjgIhL-jQ9o>z32K)BgAH+HxamL{ZL~ozu)Qqe@a`FpH=oQRA8=L-m-1dam(Ix2V z?du;LdMO+ooBelr^_y4<euq@26~q7NegFU@k$`jdb$`xyeJ4P8+-Tj3Ra{hbRCmT! zBMV($^{^e=(UH`dj`r@`Y(H|el`alrd8skZwkzYhRr(Gz(QZp(Qd(hE^@5E~qU`i; z(SkYe?}g2Y&YJj296Moad2)yG0fTMR6U}BWMARc(<#Fztb!h_|mPqTik`s(WVh&f0 z?pxZ)BEP>{|44tmgH^2hSzPFd;U^!1p>6d|o)<M!d`#7E^t}^Xk~3cs-?nsZx|T{j zmy5ZGo@mfoIbG>(-01z{i&Kj@)z-yfWQ)V#3Uo!_U}q3u`(fOs`_f^ueFii1xBNUB z6Me<Ad__=MhyIK(Twff~+;!n_S-82~DqfzFOPkl&Gp}(|cUQyE@haMbYi+pu2R#52 zQ(?79{^}u<pnJs07X?Jd1xEs{hF)^P@+6Hdd>cwJN$CqV&vhc+)b(p4NzGGEgwWNs z@*lUV6LaduZH)4_g!cE<2G6#+hJrWd5(|p1Z;YJ7ifVHv+n49btR}dq?HHDjl{m$T z!jLZcGkb&XS2OG~u%&R$(X+Z`CWec%QKt>NGYvd5g20)PU(dOn^7%@6kQb}C(%=vr z{?RP(z~C9DPnL{q^@pVw@|Vx~@3v!9dCaBtbh2EdtoNHm4kGxp>i#ct)7p|$QJs+U z-a3qtcPvhihub?wnJqEt>zC@)2suY?%-96cYCm$Q8R%-8$PZYsx3~QOLMDf(piXMm zB=<63yQk1AdOz#-qsEDX>>c)EES%$owHKue;?B3)8aRd}m~_)>SL3h2(9X;|+2#7X z+#2)NpD%qJvCQ0a-uzZLmz*ms+l*N}w)3LRQ*6>|Ub-fyptY(keUxw+)jfwF5K{L9 z|Cl_w=`!l_o><384d&?)$6Nh(GAm=4p_;{qVn#hI8lqewW7~wUlyBM-4Z|)cZr?Rh z=xZ&Ol>4(CU85ea(CZ^aO@2N18K>ftl8>2MqetAR53_JA>Fal`^)1Y--Am~UDa4th zKfCYpcXky$XSFDWBMIl(q=Mxj$iMBX=|<EP6d-<IdS!f=-N7pvgRfUm7gq{u46xo{ z(betbRXvB#X1rgdf*#8+ETp0)ap9@+(t?IGTzEX?@U7?cr16G3E(5=(NmSno5Zt_R J4_(fr{s-Hn_EP`= literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..dcdc2306c28505ebc0b6c3a359c4d252bf626b9f GIT binary patch literal 1920 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 GLSTY{`iRf~ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..2ccbfd967d9697cd4b83225558af2911e9571c9b GIT binary patch literal 1283 zcmV+e1^oJnP)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T7000EaNkl<Zc$~$U zO>7ip7{`C_J2Tx<S}3NqpxB^%g)f1Fg2os<-~kDV#FGRs+&p_AidZnjqZ&0H2nR1* zj0q8l5fTo51w)j?(&7h*nm|&p(vR)ByR$QY4>Pmfw%h$|%acrYHt)Re^PB%O&&=~a zhS(%I#+V>J-vjIib^<+s%ludY7y^C(P8nmqn9fp!i+?vr`bziDE=bx`%2W#Xyrj|i z!XQ4v1%L`m{7KT7q+LZNB^h8Ha2e=`Wp65^0;J00)_^G=au=8Yo;1b`CV&@#=jIBo zjN^JNVfYSs)+kDdGe7`1&8!?MQYKS?D<dJ!G*SVsfpkGU(q>uHZf3iogk_%#9E|5S zWeHrmAo>P;ejX7mwq#*}W25m^ZI+{(Z8fI?4jM_fffY0nok=+88^|*_DwcW>mR#e+ z<Ez>X$F_KMdb6sRz!~7KkyN0G(3XQ+;z3X%PZ4gh;n-%62U<*VUKNv(D&<?Pa8X$2 z7!Cm2JRI`|2MxYb7DBni>Q->Na@Xb&u5Q3`3DGf+a8O5x7c#7+R+EAYl@R5us)CIw z7sT@_y~Ao@uL#&^LIh&QceqiT^+lb0YbFZt_SHOtWA%mgPEKVNvVgCsXy{5+zl*X8 zCJe)Q@y>wH^>l4;h1l^Y*9%-23TSmE>q5nI@?mt%n;Sj4Qq`Z+ib)a*a^cJc%E9^J zB;4s+K@rARbcBLT5P=@r;IVnBMKvT*)ew*R;&8vu%?Z&S>s?8?)3*YawM0P4!q$Kv zMmKh3lgE~&w&v%wVzH3Oe=jeNT=n@Y6J6TdHWTjXfX~-=1A1Bw`EW8rn}MqeI34nh zexFeA?&C3B2(E?0{drE@DA2pu(A#ElY&6el60Rn|Qpn-FkfQ8M93AfWIr)drgDFEU zghdWK)^71EWCP(@(=c4kfH1Y(4iugD4fve6;nSUpLT%!)MUHs1!zJYy4y||C+SwQ! z)KM&$7_tyM`sljP2fz6&Z;jxRn{Wup8IOUx8D4uh&(=<hAE@CMcU{$tA%YXI_aT>O zx-7$a;U><*5L^!%<hgO?EU&+RjyvO7JjW1(jTP<<mHfpWO->xRlw)vAbh;sdlR||& ze}8_8%)c2Fwy=F&H|LM+p{pZB5DKTx>Y?F1N%BlZkXf!}JeGuMZk~LPi7{cidvUGB zAJ4LVeNV%XO>LTrklB#^-;8nb;}6l;1oW&WS=Mz*Az!4cqqQzbOSFq`$Q%PfD7srM zpKgP-D_0XPTRX*hAqeq0TDkJ;5HB1%$3Np)99#1<DGLlIe;R_chCpIPcPAH*zr@Cs z?fB^|EuMpG4X$HBVo_%sSAM_4?&DuFlF8#(Lxtca1NV%iv%qemMnJ<G_#|w%M>6c{ zJImlNL(np<oN+CTXIZs=Ip^Qn&FbY#Fn}>L!W|Gr_kxl1GVmF5&^$^YherS7+~q$p zt}{a=*RiD2Ikv6o=IM1kgc7zqpaZ;OB)P!1zz*i3{U()Dq#jG)egvK}@uFLa`oyWZ zf~=MV)|yJn`M^$N%ul5);JuQvaU1r2wt(}J_Qgyy`qWQI`hEeRX0uC@c1(dQ2}=U$ tNIIaX+dr)NRWXcxoR{>fqI{SF_dm1Ylv~=3YHI)h002ovPDHLkV1g(pWS;;4 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f9ed8f5cee1c98386d13b17e89f719e83555b2 GIT binary patch literal 1895 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22 GIT binary patch literal 2665 zcmV-v3YPVWP)<h;3K|Lk000e1NJLTq004LZ004Lh1^@s6Ib=4{000UwNkl<Zc-rlq zYm5|C7RRe*0FADziHUDrU-1=;kC>oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!Y<vIH1Geh#8IOh)*#1HYf~_d31O6R2|Q)y0`mwP4_U<^}M(4N&cy3hVJUQ zzy6<d?!BEVO)E11Kt~NDN7v6rqHaJfM>V6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>B<XqJPiqP$?hv#xRc0#zTFn@Js@#}iPmawjhJ$y4D^ zFn6<9i#nBO;uWmUJ}r2hg4&_LMh?1@xtXvjy8&~-oy(mptHwLB;NAQXSC@4!aF;6A z#;#5?(5uUGGFNk#(HAmQ^Ax)<=<&HB&6hd2^Ib2bBEFCx9aQ7RrR8Z{y;aT?1M+nP zPN7(_rc<Ha+#-bvF=}!T>U73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrq<vjr@ zjsDtgSYVi;xOhA2fZV(oAB^VyL!weLiH5CNn6W7XH??Qr#sGBlM;WO7APoz@Fl^WX zr)y@=D!$2D1^F$%M8Gxa2rv6K3*%bSFzx*`Oz}}u>GA5ewEg<CHfLauVTDl=*xJR5 z3@&S~65(Js-0?X0#9h^G{;LjOcVcTA?*23bJ=xIeJv+s(sJ{}xqmq)EdALgn+zk#~ z;xfNQ;7-8TzYF1ZQ@ExT>YqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2<wSM~MNeEkB6?E9XiKSZ(=93|Ki= zV!&$oQDVSq%THp!Y7s+Xz-r4+V!*2AN(@+S`AG~|)m(`ItBnJR0W0T93^?x2W$!Nx zNe4LY%a4|Fus<tQaoqA_zbBVA+PvF@&-a+n5s<d*HKBc%nR{=-1CG0M+3)un7R=t9 zfq&xjuh^J|$pMI5PHFVJDOmE2VP6o<vIGarzyD=1cJ4m>Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB<p?ZP?C=qjPz<LB2oIP_EpX&7Ip49Wc90AGz=sxd7P24URkF zFcsp{vJH2G+;9U=(Zt1bI~*7L3E2zWeMU&mZHXRk;7t~ZRG+_)eQ|E9{LT$!nq+d2 z=X5xos+WQFRC5#N+|U*}*Z_NVvZu71O`dZ@U8*c}vSB-UD3I$!fZGy3xS?(~@J=2I zWG~JoS6IK}lMGBsDBRGu3y11tFV5}ESWwlPf{}0a+KUZA!d($lxS<0s=HyZ}xz;1x z$>`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9<T8<6H*UPsnkd3dI(%8!`cV`zQW6 zcR<Jzr{!1y=9e{zYrC?Ab=s?Q{eUc@b7KXVhwOgrhjYC^7S*}21I)l$0XerE$Ray8 zmVjX>a5tvPhC3L@qB~bOz<xP*Fpz5`aIR2*+2E3U|CLj72M@UyYTHsc&rQLKt%mS$ zg#gUz@{W{+DKiCsd!yG^xIE<3*Y?1<>kL@^z0<?@S>k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4q<t?4J^Jlyv{yL<uY)lb8S>Cb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs<Gm|AThk4A95j5BlUq=-|Z^ z@JbGFA>@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@C<AA_lRJOZBdFz8o40s6G1 zn5HRU4s0>VBGqImZf&<eC+Fba_cCZFj{$wu4WN&{1N5<TK%cnKaj*@yu_Rn~x~>+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY<R2p3%7r|j=z(oy1lG>3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N<fjm8U$PsTfvXgEnfd5DT(Fc-7R8Ed?tC5*?9RWOFcEBZ_9C%HRth;6`A18pv z%36b?gdFi!BRkPl0{BqWuL^Pikf#?mUXHA=;C7;p)JWii|I%M%Apy~^CgVK0vVL_4 z-L-SxfEo8umQ5N9V&x>%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$<R(v2Y-h;n6lJ0J~$VTqEE;sVO}glh2h-$_kQkm zL1qotJ@g5N8o$^FW3-TGSTZ=sFDb~vz+J=G^-Ik~0F!!Li5iZ2M?sD~+%~$7QL$gR z9OMcLniTA2?gdp%jvw5^7&C1s!JdG}15ht>-I}S!H_~pI&2H8Z1C|BX4VgZ^-!<n_ zZjPo?Cb6g(qjDkZoSVts@s|p8WMH?Us`xUh`4!we`7dO(1ht1daUbNjsZ@A}+UEk> zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s<M0d-n220=mAU7(LZ-At!cdlWCv zu@AK#bt~#<9;~k^d5}}7VXmK@h?<Ui3iTm4-?>&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22 GIT binary patch literal 2665 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 XsPq=LnkwKG00000NkvXXu0mjfhAk5^ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..75b2d164a5a98e212cca15ea7bf2ab5de5108680 GIT binary patch literal 3831 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..c4df70d39da7941ef3f6dcb7f06a192d8dcb308d GIT binary patch literal 1888 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 aR{jt9+;fr}hV%pg0000<MNUMnLSTYU=Zg*i literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6a84f41e14e27f4b11f16f9ee39279ac98f8d5ac GIT binary patch literal 3294 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d0e1f58536026aebc4f1f70e481f6993c9ff088d GIT binary patch literal 3612 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 0000000..0bedcf2 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 0000000..89c2725 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f2e259c --- /dev/null +++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM"> + <dependencies> + <deployment identifier="iOS"/> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/> + </dependencies> + <scenes> + <!--View Controller--> + <scene sceneID="EHf-IW-A2E"> + <objects> + <viewController id="01J-lp-oVM" sceneMemberID="viewController"> + <layoutGuides> + <viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/> + <viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/> + </layoutGuides> + <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3"> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4"> + </imageView> + </subviews> + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <constraints> + <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/> + <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/> + </constraints> + </view> + </viewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="53" y="375"/> + </scene> + </scenes> + <resources> + <image name="LaunchImage" width="168" height="185"/> + </resources> +</document> diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f3c2851 --- /dev/null +++ b/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r"> + <dependencies> + <deployment identifier="iOS"/> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/> + </dependencies> + <scenes> + <!--Flutter View Controller--> + <scene sceneID="tne-QT-ifu"> + <objects> + <viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController"> + <layoutGuides> + <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/> + <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/> + </layoutGuides> + <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC"> + <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> + </view> + </viewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/> + </objects> + </scene> + </scenes> +</document> diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist new file mode 100644 index 0000000..b8c0453 --- /dev/null +++ b/ios/Runner/Info.plist @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>$(DEVELOPMENT_LANGUAGE)</string> + <key>CFBundleExecutable</key> + <string>$(EXECUTABLE_NAME)</string> + <key>CFBundleIdentifier</key> + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>furniture_app</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleShortVersionString</key> + <string>$(FLUTTER_BUILD_NAME)</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleVersion</key> + <string>$(FLUTTER_BUILD_NUMBER)</string> + <key>LSRequiresIPhoneOS</key> + <true/> + <key>UILaunchStoryboardName</key> + <string>LaunchScreen</string> + <key>UIMainStoryboardFile</key> + <string>Main</string> + <key>UISupportedInterfaceOrientations</key> + <array> + <string>UIInterfaceOrientationPortrait</string> + <string>UIInterfaceOrientationLandscapeLeft</string> + <string>UIInterfaceOrientationLandscapeRight</string> + </array> + <key>UISupportedInterfaceOrientations~ipad</key> + <array> + <string>UIInterfaceOrientationPortrait</string> + <string>UIInterfaceOrientationPortraitUpsideDown</string> + <string>UIInterfaceOrientationLandscapeLeft</string> + <string>UIInterfaceOrientationLandscapeRight</string> + </array> + <key>UIViewControllerBasedStatusBarAppearance</key> + <false/> +</dict> +</plist> diff --git a/ios/Runner/Runner-Bridging-Header.h b/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 0000000..308a2a5 --- /dev/null +++ b/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/lib/components/search_box.dart b/lib/components/search_box.dart new file mode 100644 index 0000000..0d90b4d --- /dev/null +++ b/lib/components/search_box.dart @@ -0,0 +1,39 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +import '../constants.dart'; + +class SearchBox extends StatelessWidget { + const SearchBox({ + Key key, + this.onChanged, + }) : super(key: key); + + final ValueChanged onChanged; + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.all(kDefaultPadding), + padding: EdgeInsets.symmetric( + horizontal: kDefaultPadding, + vertical: kDefaultPadding / 4, // 5 top and bottom + ), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.4), + borderRadius: BorderRadius.circular(12), + ), + child: TextField( + onChanged: onChanged, + style: TextStyle(color: Colors.white), + decoration: InputDecoration( + enabledBorder: InputBorder.none, + focusedBorder: InputBorder.none, + icon: SvgPicture.asset("assets/icons/search.svg"), + hintText: 'Search', + hintStyle: TextStyle(color: Colors.white), + ), + ), + ); + } +} diff --git a/lib/constants.dart b/lib/constants.dart new file mode 100644 index 0000000..7ce0090 --- /dev/null +++ b/lib/constants.dart @@ -0,0 +1,18 @@ +import 'package:flutter/material.dart'; + +// list of colors that we use in our app +const kBackgroundColor = Color(0xFFF1EFF1); +const kPrimaryColor = Color(0xFF035AA6); +const kSecondaryColor = Color(0xFFFFA41B); +const kTextColor = Color(0xFF000839); +const kTextLightColor = Color(0xFF747474); +const kBlueColor = Color(0xFF40BAD5); + +const kDefaultPadding = 20.0; + +// our default Shadow +const kDefaultShadow = BoxShadow( + offset: Offset(0, 15), + blurRadius: 27, + color: Colors.black12, // Black color with 12% opacity +); diff --git a/lib/main.dart b/lib/main.dart new file mode 100644 index 0000000..05f21ff --- /dev/null +++ b/lib/main.dart @@ -0,0 +1,27 @@ +import 'package:flutter/material.dart'; +import 'package:furniture_app/constants.dart'; +import 'package:furniture_app/screens/product/products_screen.dart'; +import 'package:google_fonts/google_fonts.dart'; + +void main() { + runApp(MyApp()); +} + +class MyApp extends StatelessWidget { + // This widget is the root of your application. + @override + Widget build(BuildContext context) { + return MaterialApp( + debugShowCheckedModeBanner: false, + title: 'Furniture app', + theme: ThemeData( + // We set Poppins as our default font + textTheme: GoogleFonts.poppinsTextTheme(Theme.of(context).textTheme), + primaryColor: kPrimaryColor, + accentColor: kPrimaryColor, + visualDensity: VisualDensity.adaptivePlatformDensity, + ), + home: ProductsScreen(), + ); + } +} diff --git a/lib/models/product.dart b/lib/models/product.dart new file mode 100644 index 0000000..a6e539b --- /dev/null +++ b/lib/models/product.dart @@ -0,0 +1,35 @@ +class Product { + final int id, price; + final String title, description, image; + + Product({this.id, this.price, this.title, this.description, this.image}); +} + +// list of products +// for our demo +List<Product> products = [ + Product( + id: 1, + price: 56, + title: "Classic Leather Arm Chair", + image: "assets/images/Item_1.png", + description: + "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim", + ), + Product( + id: 4, + price: 68, + title: "Poppy Plastic Tub Chair", + image: "assets/images/Item_2.png", + description: + "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim", + ), + Product( + id: 9, + price: 39, + title: "Bar Stool Chair", + image: "assets/images/Item_3.png", + description: + "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim", + ), +]; diff --git a/lib/screens/details/components/body.dart b/lib/screens/details/components/body.dart new file mode 100644 index 0000000..e68de85 --- /dev/null +++ b/lib/screens/details/components/body.dart @@ -0,0 +1,82 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:furniture_app/constants.dart'; +import 'package:furniture_app/models/product.dart'; + +import 'chat_and_add_to_cart.dart'; +import 'list_of_colors.dart'; +import 'product_image.dart'; + +class Body extends StatelessWidget { + final Product product; + + const Body({Key key, this.product}) : super(key: key); + @override + Widget build(BuildContext context) { + // it provide us total height and width + Size size = MediaQuery.of(context).size; + // it enable scrolling on small devices + return SafeArea( + bottom: false, + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: <Widget>[ + Container( + width: double.infinity, + padding: EdgeInsets.symmetric(horizontal: kDefaultPadding), + decoration: BoxDecoration( + color: kBackgroundColor, + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(50), + bottomRight: Radius.circular(50), + ), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: <Widget>[ + Center( + child: Hero( + tag: '${product.id}', + child: ProductPoster( + size: size, + image: product.image, + ), + ), + ), + ListOfColors(), + Padding( + padding: const EdgeInsets.symmetric( + vertical: kDefaultPadding / 2), + child: Text( + product.title, + style: Theme.of(context).textTheme.headline6, + ), + ), + Text( + '\$${product.price}', + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.w600, + color: kSecondaryColor, + ), + ), + Padding( + padding: + EdgeInsets.symmetric(vertical: kDefaultPadding / 2), + child: Text( + product.description, + style: TextStyle(color: kTextLightColor), + ), + ), + SizedBox(height: kDefaultPadding), + ], + ), + ), + ChatAndAddToCart(), + ], + ), + ), + ); + } +} diff --git a/lib/screens/details/components/chat_and_add_to_cart.dart b/lib/screens/details/components/chat_and_add_to_cart.dart new file mode 100644 index 0000000..fdda24e --- /dev/null +++ b/lib/screens/details/components/chat_and_add_to_cart.dart @@ -0,0 +1,51 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; + +import '../../../constants.dart'; + +class ChatAndAddToCart extends StatelessWidget { + const ChatAndAddToCart({ + Key key, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.all(kDefaultPadding), + padding: EdgeInsets.symmetric( + horizontal: kDefaultPadding, + vertical: kDefaultPadding / 2, + ), + decoration: BoxDecoration( + color: Color(0xFFFCBF1E), + borderRadius: BorderRadius.circular(30), + ), + child: Row( + children: <Widget>[ + SvgPicture.asset( + "assets/icons/chat.svg", + height: 18, + ), + SizedBox(width: kDefaultPadding / 2), + Text( + "Chat", + style: TextStyle(color: Colors.white), + ), + // it will cover all available spaces + Spacer(), + FlatButton.icon( + onPressed: () {}, + icon: SvgPicture.asset( + "assets/icons/shopping-bag.svg", + height: 18, + ), + label: Text( + "Add to Cart", + style: TextStyle(color: Colors.white), + ), + ), + ], + ), + ); + } +} diff --git a/lib/screens/details/components/color_dots.dart b/lib/screens/details/components/color_dots.dart new file mode 100644 index 0000000..7ec870e --- /dev/null +++ b/lib/screens/details/components/color_dots.dart @@ -0,0 +1,38 @@ +import 'package:flutter/material.dart'; + +import '../../../constants.dart'; + +class ColorDot extends StatelessWidget { + const ColorDot({ + Key key, + this.fillColor, + // by default we set it false + this.isSelected = false, + }) : super(key: key); + final Color fillColor; + final bool isSelected; + + @override + Widget build(BuildContext context) { + return Container( + margin: + // left and right padding 8 + EdgeInsets.symmetric(horizontal: kDefaultPadding / 2.5), + padding: EdgeInsets.all(3), + height: 24, + width: 24, + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all( + color: isSelected ? Color(0xFF707070) : Colors.transparent, + ), + ), + child: Container( + decoration: BoxDecoration( + shape: BoxShape.circle, + color: fillColor, + ), + ), + ); + } +} diff --git a/lib/screens/details/components/list_of_colors.dart b/lib/screens/details/components/list_of_colors.dart new file mode 100644 index 0000000..ab98424 --- /dev/null +++ b/lib/screens/details/components/list_of_colors.dart @@ -0,0 +1,32 @@ +import 'package:flutter/material.dart'; + +import '../../../constants.dart'; +import 'color_dots.dart'; + +class ListOfColors extends StatelessWidget { + const ListOfColors({ + Key key, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: kDefaultPadding), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: <Widget>[ + ColorDot( + fillColor: Color(0xFF80989A), + isSelected: true, + ), + ColorDot( + fillColor: Color(0xFFFF5200), + ), + ColorDot( + fillColor: kPrimaryColor, + ), + ], + ), + ); + } +} diff --git a/lib/screens/details/components/product_image.dart b/lib/screens/details/components/product_image.dart new file mode 100644 index 0000000..d1e78f7 --- /dev/null +++ b/lib/screens/details/components/product_image.dart @@ -0,0 +1,43 @@ +import 'package:flutter/material.dart'; + +import '../../../constants.dart'; + +class ProductPoster extends StatelessWidget { + const ProductPoster({ + Key key, + @required this.size, + this.image, + }) : super(key: key); + + final Size size; + final String image; + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.symmetric(vertical: kDefaultPadding), + // the height of this container is 80% of our width + height: size.width * 0.8, + + child: Stack( + alignment: Alignment.bottomCenter, + children: <Widget>[ + Container( + height: size.width * 0.7, + width: size.width * 0.7, + decoration: BoxDecoration( + color: Colors.white, + shape: BoxShape.circle, + ), + ), + Image.asset( + image, + height: size.width * 0.75, + width: size.width * 0.75, + fit: BoxFit.cover, + ), + ], + ), + ); + } +} diff --git a/lib/screens/details/details_screen.dart b/lib/screens/details/details_screen.dart new file mode 100644 index 0000000..a1b986c --- /dev/null +++ b/lib/screens/details/details_screen.dart @@ -0,0 +1,47 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:furniture_app/constants.dart'; +import 'package:furniture_app/models/product.dart'; + +import 'components/body.dart'; + +class DetailsScreen extends StatelessWidget { + final Product product; + + const DetailsScreen({Key key, this.product}) : super(key: key); + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: kPrimaryColor, + appBar: buildAppBar(context), + body: Body( + product: product, + ), + ); + } + + AppBar buildAppBar(BuildContext context) { + return AppBar( + backgroundColor: kBackgroundColor, + elevation: 0, + leading: IconButton( + padding: EdgeInsets.only(left: kDefaultPadding), + icon: SvgPicture.asset("assets/icons/back.svg"), + onPressed: () { + Navigator.pop(context); + }, + ), + centerTitle: false, + title: Text( + 'Back'.toUpperCase(), + style: Theme.of(context).textTheme.bodyText2, + ), + actions: <Widget>[ + IconButton( + icon: SvgPicture.asset('assets/icons/cart_with_item.svg'), + onPressed: () {}, + ), + ], + ); + } +} diff --git a/lib/screens/product/components/body.dart b/lib/screens/product/components/body.dart new file mode 100644 index 0000000..d7dfb8b --- /dev/null +++ b/lib/screens/product/components/body.dart @@ -0,0 +1,59 @@ +import 'package:flutter/material.dart'; +import 'package:furniture_app/components/search_box.dart'; +import 'package:furniture_app/constants.dart'; +import 'package:furniture_app/models/product.dart'; +import 'package:furniture_app/screens/details/details_screen.dart'; + +import 'category_list.dart'; +import 'product_card.dart'; + +class Body extends StatelessWidget { + @override + Widget build(BuildContext context) { + return SafeArea( + bottom: false, + child: Column( + children: <Widget>[ + SearchBox(onChanged: (value) {}), + CategoryList(), + SizedBox(height: kDefaultPadding / 2), + Expanded( + child: Stack( + children: <Widget>[ + // Our background + Container( + margin: EdgeInsets.only(top: 70), + decoration: BoxDecoration( + color: kBackgroundColor, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(40), + topRight: Radius.circular(40), + ), + ), + ), + ListView.builder( + // here we use our demo procuts list + itemCount: products.length, + itemBuilder: (context, index) => ProductCard( + itemIndex: index, + product: products[index], + press: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => DetailsScreen( + product: products[index], + ), + ), + ); + }, + ), + ) + ], + ), + ), + ], + ), + ); + } +} diff --git a/lib/screens/product/components/category_list.dart b/lib/screens/product/components/category_list.dart new file mode 100644 index 0000000..ce3c617 --- /dev/null +++ b/lib/screens/product/components/category_list.dart @@ -0,0 +1,52 @@ +import 'package:flutter/material.dart'; + +import '../../../constants.dart'; + +// We need statefull widget because we are gonna change some state on our category +class CategoryList extends StatefulWidget { + @override + _CategoryListState createState() => _CategoryListState(); +} + +class _CategoryListState extends State<CategoryList> { + // by default first item will be selected + int selectedIndex = 0; + List categories = ['All', 'Sofa', 'Park bench', 'Armchair']; + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.symmetric(vertical: kDefaultPadding / 2), + height: 30, + child: ListView.builder( + scrollDirection: Axis.horizontal, + itemCount: categories.length, + itemBuilder: (context, index) => GestureDetector( + onTap: () { + setState(() { + selectedIndex = index; + }); + }, + child: Container( + alignment: Alignment.center, + margin: EdgeInsets.only( + left: kDefaultPadding, + // At end item it add extra 20 right padding + right: index == categories.length - 1 ? kDefaultPadding : 0, + ), + padding: EdgeInsets.symmetric(horizontal: kDefaultPadding), + decoration: BoxDecoration( + color: index == selectedIndex + ? Colors.white.withOpacity(0.4) + : Colors.transparent, + borderRadius: BorderRadius.circular(6), + ), + child: Text( + categories[index], + style: TextStyle(color: Colors.white), + ), + ), + ), + ), + ); + } +} diff --git a/lib/screens/product/components/product_card.dart b/lib/screens/product/components/product_card.dart new file mode 100644 index 0000000..35acb00 --- /dev/null +++ b/lib/screens/product/components/product_card.dart @@ -0,0 +1,116 @@ +import 'package:flutter/material.dart'; +import 'package:furniture_app/models/product.dart'; + +import '../../../constants.dart'; + +class ProductCard extends StatelessWidget { + const ProductCard({ + Key key, + this.itemIndex, + this.product, + this.press, + }) : super(key: key); + + final int itemIndex; + final Product product; + final Function press; + + @override + Widget build(BuildContext context) { + // It will provide us total height and width of our screen + Size size = MediaQuery.of(context).size; + return Container( + margin: EdgeInsets.symmetric( + horizontal: kDefaultPadding, + vertical: kDefaultPadding / 2, + ), + // color: Colors.blueAccent, + height: 160, + child: InkWell( + onTap: press, + child: Stack( + alignment: Alignment.bottomCenter, + children: <Widget>[ + // Those are our background + Container( + height: 136, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(22), + color: itemIndex.isEven ? kBlueColor : kSecondaryColor, + boxShadow: [kDefaultShadow], + ), + child: Container( + margin: EdgeInsets.only(right: 10), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(22), + ), + ), + ), + // our product image + Positioned( + top: 0, + right: 0, + child: Hero( + tag: '${product.id}', + child: Container( + padding: EdgeInsets.symmetric(horizontal: kDefaultPadding), + height: 160, + // image is square but we add extra 20 + 20 padding thats why width is 200 + width: 200, + child: Image.asset( + product.image, + fit: BoxFit.cover, + ), + ), + ), + ), + // Product title and price + Positioned( + bottom: 0, + left: 0, + child: SizedBox( + height: 136, + // our image take 200 width, thats why we set out total width - 200 + width: size.width - 200, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: <Widget>[ + Spacer(), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: kDefaultPadding), + child: Text( + product.title, + style: Theme.of(context).textTheme.button, + ), + ), + // it use the available space + Spacer(), + Container( + padding: EdgeInsets.symmetric( + horizontal: kDefaultPadding * 1.5, // 30 padding + vertical: kDefaultPadding / 4, // 5 top and bottom + ), + decoration: BoxDecoration( + color: kSecondaryColor, + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(22), + topRight: Radius.circular(22), + ), + ), + child: Text( + "\$${product.price}", + style: Theme.of(context).textTheme.button, + ), + ), + ], + ), + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/screens/product/products_screen.dart b/lib/screens/product/products_screen.dart new file mode 100644 index 0000000..9e558c7 --- /dev/null +++ b/lib/screens/product/products_screen.dart @@ -0,0 +1,30 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:furniture_app/constants.dart'; + +import 'components/body.dart'; + +class ProductsScreen extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: buildAppBar(), + backgroundColor: kPrimaryColor, + body: Body(), + ); + } + + AppBar buildAppBar() { + return AppBar( + elevation: 0, + centerTitle: false, + title: Text('Dashboard'), + actions: <Widget>[ + IconButton( + icon: SvgPicture.asset("assets/icons/notification.svg"), + onPressed: () {}, + ), + ], + ); + } +} diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 0000000..9da4d44 --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,308 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + archive: + dependency: transitive + description: + name: archive + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.13" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.0" + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.1" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + charcode: + dependency: transitive + description: + name: charcode + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.3" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.14.12" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.4" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.3" + file: + dependency: transitive + description: + name: file + url: "https://pub.dartlang.org" + source: hosted + version: "5.1.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_svg: + dependency: "direct main" + description: + name: flutter_svg + url: "https://pub.dartlang.org" + source: hosted + version: "0.17.4" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + google_fonts: + dependency: "direct main" + description: + name: google_fonts + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + http: + dependency: transitive + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.1" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.4" + image: + dependency: transitive + description: + name: image + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.12" + intl: + dependency: transitive + description: + name: intl + url: "https://pub.dartlang.org" + source: hosted + version: "0.16.1" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.6" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.8" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.4" + path_drawing: + dependency: transitive + description: + name: path_drawing + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.1" + path_parsing: + dependency: transitive + description: + name: path_parsing + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.4" + path_provider: + dependency: transitive + description: + name: path_provider + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.10" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+1" + path_provider_macos: + dependency: transitive + description: + name: path_provider_macos + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.4+3" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + pedantic: + dependency: transitive + description: + name: pedantic + url: "https://pub.dartlang.org" + source: hosted + version: "1.9.0" + petitparser: + dependency: transitive + description: + name: petitparser + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.0" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.1" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.13" + quiver: + dependency: transitive + description: + name: quiver + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.7.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.9.3" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.5" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.15" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.6" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.8" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.0" + xml: + dependency: transitive + description: + name: xml + url: "https://pub.dartlang.org" + source: hosted + version: "3.6.1" +sdks: + dart: ">=2.7.0 <3.0.0" + flutter: ">=1.17.0 <2.0.0" diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100644 index 0000000..a3ecba0 --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,79 @@ +name: furniture_app +description: A new Flutter project. + +# The following line prevents the package from being accidentally published to +# pub.dev using `pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +# The following defines the version and build number for your application. +# A version number is three numbers separated by dots, like 1.2.43 +# followed by an optional build number separated by a +. +# Both the version and the builder number may be overridden in flutter +# build by specifying --build-name and --build-number, respectively. +# In Android, build-name is used as versionName while build-number used as versionCode. +# Read more about Android versioning at https://developer.android.com/studio/publish/versioning +# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. +# Read more about iOS versioning at +# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html +version: 1.0.0+1 + +environment: + sdk: ">=2.7.0 <3.0.0" + +dependencies: + flutter: + sdk: flutter + + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^0.1.3 + flutter_svg: ^0.17.4 #it helps us to use SVG in our app + google_fonts: ^1.1.0 #this allows you to easily use any fonts from fonts.google.com in your Flutter app + +dev_dependencies: + flutter_test: + sdk: flutter + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter. +flutter: + + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + + # To add assets to your application, add an assets section, like this: + assets: + - assets/images/ + - assets/icons/ + # - images/a_dot_ham.jpeg + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware. + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/assets-and-images/#from-packages + + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/custom-fonts/#from-packages diff --git a/test/widget_test.dart b/test/widget_test.dart new file mode 100644 index 0000000..d75b538 --- /dev/null +++ b/test/widget_test.dart @@ -0,0 +1,30 @@ +// This is a basic Flutter widget test. +// +// To perform an interaction with a widget in your test, use the WidgetTester +// utility that Flutter provides. For example, you can send tap and scroll +// gestures. You can also use WidgetTester to find child widgets in the widget +// tree, read text, and verify that the values of widget properties are correct. + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:furniture_app/main.dart'; + +void main() { + testWidgets('Counter increments smoke test', (WidgetTester tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget(MyApp()); + + // Verify that our counter starts at 0. + expect(find.text('0'), findsOneWidget); + expect(find.text('1'), findsNothing); + + // Tap the '+' icon and trigger a frame. + await tester.tap(find.byIcon(Icons.add)); + await tester.pump(); + + // Verify that our counter has incremented. + expect(find.text('0'), findsNothing); + expect(find.text('1'), findsOneWidget); + }); +} -- 2.24.1