├── .flutter-plugins-dependencies ├── .gitignore ├── .metadata ├── README.md ├── android ├── app │ ├── build.gradle │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── kotlin │ │ └── com │ │ │ └── nb │ │ │ └── flutteruishopping │ │ │ └── MainActivity.kt │ │ └── res │ │ ├── drawable │ │ └── launch_background.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ └── values │ │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties └── settings.gradle ├── assets ├── fonts │ ├── icons.ttf │ └── montserrat │ │ ├── Montserrat-Black.ttf │ │ ├── Montserrat-BlackItalic.ttf │ │ ├── Montserrat-Bold.ttf │ │ ├── Montserrat-BoldItalic.ttf │ │ ├── Montserrat-ExtraBold.ttf │ │ ├── Montserrat-ExtraBoldItalic.ttf │ │ ├── Montserrat-ExtraLight.ttf │ │ ├── Montserrat-ExtraLightItalic.ttf │ │ ├── Montserrat-Italic.ttf │ │ ├── Montserrat-Light.ttf │ │ ├── Montserrat-LightItalic.ttf │ │ ├── Montserrat-Medium.ttf │ │ ├── Montserrat-MediumItalic.ttf │ │ ├── Montserrat-Regular.ttf │ │ ├── Montserrat-SemiBold.ttf │ │ ├── Montserrat-SemiBoldItalic.ttf │ │ ├── Montserrat-Thin.ttf │ │ ├── Montserrat-ThinItalic.ttf │ │ └── OFL.txt └── images │ ├── camera │ └── ic_launcher.png │ ├── chat │ └── ic_launcher.png │ ├── feed │ ├── city.png │ ├── feed11-city1.png │ ├── feed11-city2.png │ ├── feed11-header.png │ ├── feed12_header.png │ ├── feed12_pic1.png │ ├── feed12_pic2.png │ ├── feed12_plus.png │ ├── feed13_header1.png │ ├── feed13_header2.png │ ├── feed13_header3.png │ ├── feed13_pic1.png │ ├── feed13_pic2.png │ ├── feed13_pic3.png │ ├── feed13_pic4.png │ ├── feed1_avatar1.png │ ├── feed1_avatar2.png │ ├── feed2_avatar2.png │ ├── feed2_image1.png │ ├── feed2_image2.png │ ├── feed_add.png │ ├── feed_more.png │ ├── feed_pic3_01.jpg │ ├── feed_pic3_02.jpg │ ├── feed_pic3_03.jpg │ ├── feed_pic3_header_01.jpg │ ├── feed_pic3_header_02.jpg │ ├── feed_pic3_header_03.jpg │ ├── feed_pic3_left.jpg │ ├── feed_pic5_01.jpg │ ├── feed_search.png │ ├── heart.png │ ├── ic_launcher.png │ ├── landscape.png │ ├── menonglass.png │ ├── night.png │ ├── shop_river.png │ └── white_background.png │ ├── main │ ├── pic01.png │ ├── pic02.png │ ├── pic03.png │ ├── pic04.png │ ├── pic05.png │ ├── pic06.png │ ├── pic07.png │ ├── pic08.png │ ├── pic09.png │ ├── pic10.png │ └── pic11.png │ ├── media │ └── ic_launcher.png │ ├── navigation │ └── ic_launcher.png │ ├── profile │ ├── ic_launcher.png │ ├── icon_heart.png │ ├── icon_home.png │ ├── icon_stats.png │ ├── profile_add.png │ ├── profile_arrow_left.png │ ├── profile_avatar.png │ ├── profile_follow.png │ ├── profile_landscape.png │ ├── profile_photos_01.png │ ├── profile_photos_02.png │ ├── profile_photos_03.png │ ├── profile_photos_04.png │ ├── profile_photos_05.png │ ├── profile_photos_06.png │ └── profile_photos_07.png │ ├── shopping │ ├── apple_pay.png │ ├── applepay.jpg │ ├── background.jpg │ ├── battery.png │ ├── ic_launcher.png │ ├── paypal.png │ └── visa.png │ ├── signup │ ├── ic_launcher.png │ ├── logo_signup.png │ ├── signup_page_11_bg.png │ ├── signup_page_6_bg.png │ ├── signup_page_8_bg.png │ └── signup_page_9_profile.png │ ├── statistics │ └── ic_launcher.png │ └── walkthrough │ └── ic_launcher.png ├── doc ├── 01-signup-no.jpg ├── 01-signup.jpg ├── 02-walk_through-no.jpg ├── 02-walk_through.jpg ├── 03-navigation-no.jpg ├── 03-navigation.jpg ├── 04-profile-no.jpg ├── 04-profile.jpg ├── 05-feed-no.jpg ├── 05-feed.jpg ├── 06-chat-no.jpg ├── 06-chat.jpg ├── 07-shopping-no.jpg ├── 07-shopping.jpg ├── 08-statistics-no.jpg ├── 08-statistics.jpg ├── 09-media-no.jpg ├── 09-media.jpg ├── 10-camera-no.jpg └── 10-camera.jpg ├── images ├── camera │ └── ic_launcher.png ├── chat │ └── ic_launcher.png ├── feed │ ├── city.png │ ├── feed11-city1.png │ ├── feed11-city2.png │ ├── feed11-header.png │ ├── feed12_header.png │ ├── feed12_pic1.png │ ├── feed12_pic2.png │ ├── feed12_plus.png │ ├── feed13_header1.png │ ├── feed13_header2.png │ ├── feed13_header3.png │ ├── feed13_pic1.png │ ├── feed13_pic2.png │ ├── feed13_pic3.png │ ├── feed13_pic4.png │ ├── feed1_avatar1.png │ ├── feed1_avatar2.png │ ├── feed2_avatar2.png │ ├── feed2_image1.png │ ├── feed2_image2.png │ ├── feed_add.png │ ├── feed_more.png │ ├── feed_pic5_01.jpg │ ├── feed_search.png │ ├── heart.png │ ├── ic_launcher.png │ ├── landscape.png │ ├── menonglass.png │ ├── night.png │ ├── shop_river.png │ └── white_background.png ├── main │ ├── pic01.png │ ├── pic02.png │ ├── pic03.png │ ├── pic04.png │ ├── pic05.png │ ├── pic06.png │ ├── pic07.png │ ├── pic08.png │ ├── pic09.png │ ├── pic10.png │ └── pic11.png ├── media │ └── ic_launcher.png ├── navigation │ └── ic_launcher.png ├── profile │ ├── ic_launcher.png │ ├── profile_arrow_left.png │ ├── profile_avatar.png │ ├── profile_follow.png │ ├── profile_photos_01.png │ ├── profile_photos_02.png │ └── profile_photos_03.png ├── shopping │ ├── apple_pay.png │ ├── applepay.jpg │ ├── background.jpg │ ├── battery.png │ ├── ic_launcher.png │ ├── paypal.png │ └── visa.png ├── signup │ ├── ic_launcher.png │ ├── logo_signup.png │ ├── signup_page_11_bg.png │ ├── signup_page_6_bg.png │ ├── signup_page_8_bg.png │ └── signup_page_9_profile.png ├── statistics │ └── ic_launcher.png └── walkthrough │ └── ic_launcher.png ├── ios ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ ├── Release.xcconfig │ └── flutter_export_environment.sh ├── Podfile ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings └── Runner │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── Icon-App-1024x1024@1x.png │ │ ├── Icon-App-20x20@1x.png │ │ ├── Icon-App-20x20@2x.png │ │ ├── Icon-App-20x20@3x.png │ │ ├── Icon-App-29x29@1x.png │ │ ├── Icon-App-29x29@2x.png │ │ ├── Icon-App-29x29@3x.png │ │ ├── Icon-App-40x40@1x.png │ │ ├── Icon-App-40x40@2x.png │ │ ├── Icon-App-40x40@3x.png │ │ ├── Icon-App-60x60@2x.png │ │ ├── Icon-App-60x60@3x.png │ │ ├── Icon-App-76x76@1x.png │ │ ├── Icon-App-76x76@2x.png │ │ └── Icon-App-83.5x83.5@2x.png │ └── LaunchImage.imageset │ │ ├── Contents.json │ │ ├── LaunchImage.png │ │ ├── LaunchImage@2x.png │ │ ├── LaunchImage@3x.png │ │ └── README.md │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── Info.plist │ └── main.m ├── lib ├── const │ ├── _const.dart │ ├── color_const.dart │ ├── gradient_const.dart │ ├── icons.dart │ ├── images_const.dart │ ├── page_str_const.dart │ ├── shadow_const.dart │ ├── size_const.dart │ ├── string_const.dart │ └── styles.dart ├── item │ ├── Menu.dart │ └── menu_stream.dart ├── main.dart ├── page │ ├── camera │ │ └── CameraPageOne.dart │ ├── chat │ │ └── ChatPageOne.dart │ ├── empty_page.dart │ ├── feed │ │ ├── FeedPageEleven.dart │ │ ├── FeedPageFour.dart │ │ ├── FeedPageOne.dart │ │ ├── FeedPageTen.dart │ │ ├── FeedPageThirteen.dart │ │ ├── FeedPageTwelve.dart │ │ ├── FeedPageTwo.dart │ │ ├── feed_const.dart │ │ ├── feed_five_page.dart │ │ ├── feed_three_page.dart │ │ └── top_title.dart │ ├── home_page.dart │ ├── media │ │ └── MediaPageOne.dart │ ├── navigation │ │ ├── common │ │ │ ├── pages │ │ │ │ └── home_page.dart │ │ │ └── widgets │ │ │ │ └── background_common.dart │ │ └── navigation1 │ │ │ ├── animations │ │ │ └── home_page_animator.dart │ │ │ ├── coordinator.dart │ │ │ └── widgets │ │ │ ├── button.dart │ │ │ └── menu_buttons.dart │ ├── page_const.dart │ ├── profile │ │ ├── ProfilePageOne.dart │ │ ├── ProfilePageTwo.dart │ │ ├── profile_const.dart │ │ └── top_bar.dart │ ├── shopping │ │ ├── ShopPageEighteen.dart │ │ ├── ShopPageNineteen.dart │ │ └── ShopPageOne.dart │ ├── signup │ │ ├── SignPageEight.dart │ │ ├── SignPageEleven.dart │ │ ├── SignPageFive.dart │ │ ├── SignPageFour.dart │ │ ├── SignPageNine.dart │ │ ├── SignPageOne.dart │ │ ├── SignPageSeven.dart │ │ ├── SignPageSix.dart │ │ ├── SignPageThree.dart │ │ ├── SignPageTwo.dart │ │ ├── SingPageTen.dart │ │ └── widgets │ │ │ ├── date_picker.dart │ │ │ ├── gender_picker.dart │ │ │ ├── location_picker.dart │ │ │ ├── signup_6_box.dart │ │ │ ├── signup_apbar.dart │ │ │ ├── signup_arrow_button.dart │ │ │ ├── signup_button.dart │ │ │ ├── signup_const.dart │ │ │ └── signup_profile_image_picker.dart │ ├── statistics │ │ └── StatisticPageOne.dart │ └── walkthrough │ │ └── WalkThPageOne.dart ├── util │ ├── GradientUtil.dart │ └── SizeUtil.dart └── view │ └── AboutMeTitle.dart ├── pubspec.yaml └── test └── widget_test.dart /.flutter-plugins-dependencies: -------------------------------------------------------------------------------- 1 | {"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"google_places_picker","path":"/Users/muhammadsaadullahshahid/developer/flutter/.pub-cache/hosted/pub.dartlang.org/google_places_picker-2.1.0+3/","native_build":true,"dependencies":[]},{"name":"image_picker","path":"/Users/muhammadsaadullahshahid/developer/flutter/.pub-cache/hosted/pub.dartlang.org/image_picker-0.6.7+22/","native_build":true,"dependencies":[]}],"android":[{"name":"flutter_plugin_android_lifecycle","path":"/Users/muhammadsaadullahshahid/developer/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_plugin_android_lifecycle-1.0.11/","native_build":true,"dependencies":[]},{"name":"google_places_picker","path":"/Users/muhammadsaadullahshahid/developer/flutter/.pub-cache/hosted/pub.dartlang.org/google_places_picker-2.1.0+3/","native_build":true,"dependencies":[]},{"name":"image_picker","path":"/Users/muhammadsaadullahshahid/developer/flutter/.pub-cache/hosted/pub.dartlang.org/image_picker-0.6.7+22/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]}],"macos":[],"linux":[],"windows":[],"web":[]},"dependencyGraph":[{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"google_places_picker","dependencies":[]},{"name":"image_picker","dependencies":["flutter_plugin_android_lifecycle"]}],"date_created":"2023-03-27 01:50:50.103075","version":"3.3.8"} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.lock 4 | *.log 5 | *.pyc 6 | *.swp 7 | .DS_Store 8 | .atom/ 9 | .buildlog/ 10 | .history 11 | .svn/ 12 | 13 | # IntelliJ related 14 | *.iml 15 | *.ipr 16 | *.iws 17 | .idea/ 18 | 19 | # Visual Studio Code related 20 | .vscode/ 21 | 22 | # Flutter/Dart/Pub related 23 | **/doc/api/ 24 | .dart_tool/ 25 | .flutter-plugins 26 | .packages 27 | .pub-cache/ 28 | .pub/ 29 | build/ 30 | 31 | # Android related 32 | **/android/**/gradle-wrapper.jar 33 | **/android/.gradle 34 | **/android/captures/ 35 | **/android/gradlew 36 | **/android/gradlew.bat 37 | **/android/local.properties 38 | **/android/**/GeneratedPluginRegistrant.java 39 | 40 | # iOS/XCode related 41 | **/ios/**/*.mode1v3 42 | **/ios/**/*.mode2v3 43 | **/ios/**/*.moved-aside 44 | **/ios/**/*.pbxuser 45 | **/ios/**/*.perspectivev3 46 | **/ios/**/*sync/ 47 | **/ios/**/.sconsign.dblite 48 | **/ios/**/.tags* 49 | **/ios/**/.vagrant/ 50 | **/ios/**/DerivedData/ 51 | **/ios/**/Icon? 52 | **/ios/**/Pods/ 53 | **/ios/**/.symlinks/ 54 | **/ios/**/ui.profile 55 | **/ios/**/xcuserdata 56 | **/ios/.generated/ 57 | **/ios/Flutter/App.framework 58 | **/ios/Flutter/Flutter.framework 59 | **/ios/Flutter/Generated.xcconfig 60 | **/ios/Flutter/app.flx 61 | **/ios/Flutter/app.zip 62 | **/ios/Flutter/flutter_assets/ 63 | **/ios/ServiceDefinitions.json 64 | **/ios/Runner/GeneratedPluginRegistrant.* 65 | 66 | # Exceptions to above rules. 67 | !**/ios/**/default.mode1v3 68 | !**/ios/**/default.mode2v3 69 | !**/ios/**/default.pbxuser 70 | !**/ios/**/default.perspectivev3 71 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 72 | -------------------------------------------------------------------------------- /.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 8426910a19abc4ab081c58fd1a72c433353eaa31 8 | channel: master 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # flutter-ui-nice 2 | 3 | ### :heart: Star :heart: the repo to support the project or :smile:[Follow Me](https://github.com/nb312).Thanks! 4 | 5 | | Facebook Page | Twitter | Medium | QQ Group | 6 | | ----------------------------------------------------- | --------------------------------------- | ---------------------------------------------- | --------- | 7 | | [Flutter Open ](https://www.facebook.com/flutteropen) | [NieBin](https://twitter.com/niebin_gg) | [Flutter Open](https://medium.com/flutteropen) | 963828159 | 8 | 9 | # Contributors 10 | 11 | | ~ | ~ | ~ | ~ | ~ | 12 | | ---------------------------------------------- | ---------------------------------------- | ---------------------------------------------- | ----------------------------------------- | --------------------------------------------------------- | -------------------------------------------------------- | 13 | | [NieBin](https://github.com/nb312) | [Echonox](https://github.com/echonox) | [Mahesh Jamdade](https://github.com/maheshmnj) | [edgartrem](https://github.com/edgartrem) | [srikanthbollojula](https://github.com/srikanthbollojula) | 14 | | [Yasin ilhan](https://github.com/kalismeras61) | [Çağrı Akgül](https://github.com/saturu) | [dndoanh](https://github.com/dndoanh) | [Waffulz](https://github.com/Waffulz) | [Santosh Prasad Sah](https://github.com/SahSantoshh) | [Muhammad Saadullah Shahid](https://github.com/saadii00) | 15 | 16 | # Contents 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | # License 39 | 40 | Copyright 2019 @NieBin 41 | 42 | Licensed under the Apache License, Version 2.0 (the "License"); 43 | you may not use this file except in compliance with the License. 44 | You may obtain a copy of the License at 45 | 46 | http://www.apache.org/licenses/LICENSE-2.0 47 | 48 | Unless required by applicable law or agreed to in writing, software 49 | distributed under the License is distributed on an "AS IS" BASIS, 50 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 51 | See the License for the specific language governing permissions and 52 | limitations under the License. 53 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | def localProperties = new Properties() 2 | def localPropertiesFile = rootProject.file('local.properties') 3 | if (localPropertiesFile.exists()) { 4 | localPropertiesFile.withReader('UTF-8') { reader -> 5 | localProperties.load(reader) 6 | } 7 | } 8 | 9 | def flutterRoot = localProperties.getProperty('flutter.sdk') 10 | if (flutterRoot == null) { 11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 12 | } 13 | 14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 15 | if (flutterVersionCode == null) { 16 | flutterVersionCode = '1' 17 | } 18 | 19 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 20 | if (flutterVersionName == null) { 21 | flutterVersionName = '1.0' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | apply plugin: 'kotlin-android' 26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 27 | 28 | android { 29 | compileSdkVersion 31 30 | 31 | sourceSets { 32 | main.java.srcDirs += 'src/main/kotlin' 33 | } 34 | 35 | lintOptions { 36 | disable 'InvalidPackage' 37 | } 38 | 39 | defaultConfig { 40 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 41 | applicationId "com.nb.flutteruishopping" 42 | minSdkVersion 16 43 | targetSdkVersion 29 44 | versionCode flutterVersionCode.toInteger() 45 | versionName flutterVersionName 46 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 47 | } 48 | 49 | buildTypes { 50 | release { 51 | // TODO: Add your own signing config for the release build. 52 | // Signing with the debug keys for now, so `flutter run --release` works. 53 | signingConfig signingConfigs.debug 54 | } 55 | } 56 | } 57 | 58 | flutter { 59 | source '../..' 60 | } 61 | 62 | dependencies { 63 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 64 | testImplementation 'junit:junit:4.12' 65 | androidTestImplementation 'com.android.support.test:runner:1.0.2' 66 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' 67 | } 68 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 8 | 9 | 10 | 11 | 12 | 17 | 21 | 28 | 32 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 44 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /android/app/src/main/kotlin/com/nb/flutteruishopping/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.nb.flutteruishopping 2 | 3 | import android.os.Bundle 4 | 5 | import io.flutter.embedding.android.FlutterActivity 6 | 7 | 8 | class MainActivity: FlutterActivity() { 9 | } 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.7.20' 3 | repositories { 4 | google() 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:7.1.2' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | jcenter() 18 | } 19 | } 20 | 21 | rootProject.buildDir = '../build' 22 | subprojects { 23 | project.buildDir = "${rootProject.buildDir}/${project.name}" 24 | } 25 | subprojects { 26 | project.evaluationDependsOn(':app') 27 | } 28 | 29 | task clean(type: Delete) { 30 | delete rootProject.buildDir 31 | } 32 | 33 | subprojects { 34 | project.configurations.all { 35 | resolutionStrategy.eachDependency { details -> 36 | if (details.requested.group == 'com.android.support' 37 | && !details.requested.name.contains('multidex') ) { 38 | details.useVersion "26.1.0" 39 | } 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | android.enableR8=true 5 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip 7 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /assets/fonts/montserrat/Montserrat-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/fonts/montserrat/Montserrat-Black.ttf -------------------------------------------------------------------------------- /assets/fonts/montserrat/Montserrat-BlackItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/fonts/montserrat/Montserrat-BlackItalic.ttf -------------------------------------------------------------------------------- /assets/fonts/montserrat/Montserrat-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/fonts/montserrat/Montserrat-Bold.ttf -------------------------------------------------------------------------------- /assets/fonts/montserrat/Montserrat-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/fonts/montserrat/Montserrat-BoldItalic.ttf -------------------------------------------------------------------------------- /assets/fonts/montserrat/Montserrat-ExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/fonts/montserrat/Montserrat-ExtraBold.ttf -------------------------------------------------------------------------------- /assets/fonts/montserrat/Montserrat-ExtraBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/fonts/montserrat/Montserrat-ExtraBoldItalic.ttf -------------------------------------------------------------------------------- /assets/fonts/montserrat/Montserrat-ExtraLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/fonts/montserrat/Montserrat-ExtraLight.ttf -------------------------------------------------------------------------------- /assets/fonts/montserrat/Montserrat-ExtraLightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/fonts/montserrat/Montserrat-ExtraLightItalic.ttf -------------------------------------------------------------------------------- /assets/fonts/montserrat/Montserrat-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/fonts/montserrat/Montserrat-Italic.ttf -------------------------------------------------------------------------------- /assets/fonts/montserrat/Montserrat-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/fonts/montserrat/Montserrat-Light.ttf -------------------------------------------------------------------------------- /assets/fonts/montserrat/Montserrat-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/fonts/montserrat/Montserrat-LightItalic.ttf -------------------------------------------------------------------------------- /assets/fonts/montserrat/Montserrat-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/fonts/montserrat/Montserrat-Medium.ttf -------------------------------------------------------------------------------- /assets/fonts/montserrat/Montserrat-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/fonts/montserrat/Montserrat-MediumItalic.ttf -------------------------------------------------------------------------------- /assets/fonts/montserrat/Montserrat-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/fonts/montserrat/Montserrat-Regular.ttf -------------------------------------------------------------------------------- /assets/fonts/montserrat/Montserrat-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/fonts/montserrat/Montserrat-SemiBold.ttf -------------------------------------------------------------------------------- /assets/fonts/montserrat/Montserrat-SemiBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/fonts/montserrat/Montserrat-SemiBoldItalic.ttf -------------------------------------------------------------------------------- /assets/fonts/montserrat/Montserrat-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/fonts/montserrat/Montserrat-Thin.ttf -------------------------------------------------------------------------------- /assets/fonts/montserrat/Montserrat-ThinItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/fonts/montserrat/Montserrat-ThinItalic.ttf -------------------------------------------------------------------------------- /assets/fonts/montserrat/OFL.txt: -------------------------------------------------------------------------------- 1 | Copyright 2011 The Montserrat Project Authors (https://github.com/JulietaUla/Montserrat) 2 | 3 | This Font Software is licensed under the SIL Open Font License, Version 1.1. 4 | This license is copied below, and is also available with a FAQ at: 5 | http://scripts.sil.org/OFL 6 | 7 | 8 | ----------------------------------------------------------- 9 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 10 | ----------------------------------------------------------- 11 | 12 | PREAMBLE 13 | The goals of the Open Font License (OFL) are to stimulate worldwide 14 | development of collaborative font projects, to support the font creation 15 | efforts of academic and linguistic communities, and to provide a free and 16 | open framework in which fonts may be shared and improved in partnership 17 | with others. 18 | 19 | The OFL allows the licensed fonts to be used, studied, modified and 20 | redistributed freely as long as they are not sold by themselves. The 21 | fonts, including any derivative works, can be bundled, embedded, 22 | redistributed and/or sold with any software provided that any reserved 23 | names are not used by derivative works. The fonts and derivatives, 24 | however, cannot be released under any other type of license. The 25 | requirement for fonts to remain under this license does not apply 26 | to any document created using the fonts or their derivatives. 27 | 28 | DEFINITIONS 29 | "Font Software" refers to the set of files released by the Copyright 30 | Holder(s) under this license and clearly marked as such. This may 31 | include source files, build scripts and documentation. 32 | 33 | "Reserved Font Name" refers to any names specified as such after the 34 | copyright statement(s). 35 | 36 | "Original Version" refers to the collection of Font Software components as 37 | distributed by the Copyright Holder(s). 38 | 39 | "Modified Version" refers to any derivative made by adding to, deleting, 40 | or substituting -- in part or in whole -- any of the components of the 41 | Original Version, by changing formats or by porting the Font Software to a 42 | new environment. 43 | 44 | "Author" refers to any designer, engineer, programmer, technical 45 | writer or other person who contributed to the Font Software. 46 | 47 | PERMISSION & CONDITIONS 48 | Permission is hereby granted, free of charge, to any person obtaining 49 | a copy of the Font Software, to use, study, copy, merge, embed, modify, 50 | redistribute, and sell modified and unmodified copies of the Font 51 | Software, subject to the following conditions: 52 | 53 | 1) Neither the Font Software nor any of its individual components, 54 | in Original or Modified Versions, may be sold by itself. 55 | 56 | 2) Original or Modified Versions of the Font Software may be bundled, 57 | redistributed and/or sold with any software, provided that each copy 58 | contains the above copyright notice and this license. These can be 59 | included either as stand-alone text files, human-readable headers or 60 | in the appropriate machine-readable metadata fields within text or 61 | binary files as long as those fields can be easily viewed by the user. 62 | 63 | 3) No Modified Version of the Font Software may use the Reserved Font 64 | Name(s) unless explicit written permission is granted by the corresponding 65 | Copyright Holder. This restriction only applies to the primary font name as 66 | presented to the users. 67 | 68 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font 69 | Software shall not be used to promote, endorse or advertise any 70 | Modified Version, except to acknowledge the contribution(s) of the 71 | Copyright Holder(s) and the Author(s) or with their explicit written 72 | permission. 73 | 74 | 5) The Font Software, modified or unmodified, in part or in whole, 75 | must be distributed entirely under this license, and must not be 76 | distributed under any other license. The requirement for fonts to 77 | remain under this license does not apply to any document created 78 | using the Font Software. 79 | 80 | TERMINATION 81 | This license becomes null and void if any of the above conditions are 82 | not met. 83 | 84 | DISCLAIMER 85 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 86 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 87 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 88 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE 89 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 90 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 91 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 92 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM 93 | OTHER DEALINGS IN THE FONT SOFTWARE. 94 | -------------------------------------------------------------------------------- /assets/images/camera/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/camera/ic_launcher.png -------------------------------------------------------------------------------- /assets/images/chat/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/chat/ic_launcher.png -------------------------------------------------------------------------------- /assets/images/feed/city.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/city.png -------------------------------------------------------------------------------- /assets/images/feed/feed11-city1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed11-city1.png -------------------------------------------------------------------------------- /assets/images/feed/feed11-city2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed11-city2.png -------------------------------------------------------------------------------- /assets/images/feed/feed11-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed11-header.png -------------------------------------------------------------------------------- /assets/images/feed/feed12_header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed12_header.png -------------------------------------------------------------------------------- /assets/images/feed/feed12_pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed12_pic1.png -------------------------------------------------------------------------------- /assets/images/feed/feed12_pic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed12_pic2.png -------------------------------------------------------------------------------- /assets/images/feed/feed12_plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed12_plus.png -------------------------------------------------------------------------------- /assets/images/feed/feed13_header1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed13_header1.png -------------------------------------------------------------------------------- /assets/images/feed/feed13_header2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed13_header2.png -------------------------------------------------------------------------------- /assets/images/feed/feed13_header3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed13_header3.png -------------------------------------------------------------------------------- /assets/images/feed/feed13_pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed13_pic1.png -------------------------------------------------------------------------------- /assets/images/feed/feed13_pic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed13_pic2.png -------------------------------------------------------------------------------- /assets/images/feed/feed13_pic3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed13_pic3.png -------------------------------------------------------------------------------- /assets/images/feed/feed13_pic4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed13_pic4.png -------------------------------------------------------------------------------- /assets/images/feed/feed1_avatar1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed1_avatar1.png -------------------------------------------------------------------------------- /assets/images/feed/feed1_avatar2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed1_avatar2.png -------------------------------------------------------------------------------- /assets/images/feed/feed2_avatar2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed2_avatar2.png -------------------------------------------------------------------------------- /assets/images/feed/feed2_image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed2_image1.png -------------------------------------------------------------------------------- /assets/images/feed/feed2_image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed2_image2.png -------------------------------------------------------------------------------- /assets/images/feed/feed_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed_add.png -------------------------------------------------------------------------------- /assets/images/feed/feed_more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed_more.png -------------------------------------------------------------------------------- /assets/images/feed/feed_pic3_01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed_pic3_01.jpg -------------------------------------------------------------------------------- /assets/images/feed/feed_pic3_02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed_pic3_02.jpg -------------------------------------------------------------------------------- /assets/images/feed/feed_pic3_03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed_pic3_03.jpg -------------------------------------------------------------------------------- /assets/images/feed/feed_pic3_header_01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed_pic3_header_01.jpg -------------------------------------------------------------------------------- /assets/images/feed/feed_pic3_header_02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed_pic3_header_02.jpg -------------------------------------------------------------------------------- /assets/images/feed/feed_pic3_header_03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed_pic3_header_03.jpg -------------------------------------------------------------------------------- /assets/images/feed/feed_pic3_left.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed_pic3_left.jpg -------------------------------------------------------------------------------- /assets/images/feed/feed_pic5_01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed_pic5_01.jpg -------------------------------------------------------------------------------- /assets/images/feed/feed_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/feed_search.png -------------------------------------------------------------------------------- /assets/images/feed/heart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/heart.png -------------------------------------------------------------------------------- /assets/images/feed/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/ic_launcher.png -------------------------------------------------------------------------------- /assets/images/feed/landscape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/landscape.png -------------------------------------------------------------------------------- /assets/images/feed/menonglass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/menonglass.png -------------------------------------------------------------------------------- /assets/images/feed/night.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/night.png -------------------------------------------------------------------------------- /assets/images/feed/shop_river.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/shop_river.png -------------------------------------------------------------------------------- /assets/images/feed/white_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/feed/white_background.png -------------------------------------------------------------------------------- /assets/images/main/pic01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/main/pic01.png -------------------------------------------------------------------------------- /assets/images/main/pic02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/main/pic02.png -------------------------------------------------------------------------------- /assets/images/main/pic03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/main/pic03.png -------------------------------------------------------------------------------- /assets/images/main/pic04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/main/pic04.png -------------------------------------------------------------------------------- /assets/images/main/pic05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/main/pic05.png -------------------------------------------------------------------------------- /assets/images/main/pic06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/main/pic06.png -------------------------------------------------------------------------------- /assets/images/main/pic07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/main/pic07.png -------------------------------------------------------------------------------- /assets/images/main/pic08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/main/pic08.png -------------------------------------------------------------------------------- /assets/images/main/pic09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/main/pic09.png -------------------------------------------------------------------------------- /assets/images/main/pic10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/main/pic10.png -------------------------------------------------------------------------------- /assets/images/main/pic11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/main/pic11.png -------------------------------------------------------------------------------- /assets/images/media/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/media/ic_launcher.png -------------------------------------------------------------------------------- /assets/images/navigation/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/navigation/ic_launcher.png -------------------------------------------------------------------------------- /assets/images/profile/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/profile/ic_launcher.png -------------------------------------------------------------------------------- /assets/images/profile/icon_heart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/profile/icon_heart.png -------------------------------------------------------------------------------- /assets/images/profile/icon_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/profile/icon_home.png -------------------------------------------------------------------------------- /assets/images/profile/icon_stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/profile/icon_stats.png -------------------------------------------------------------------------------- /assets/images/profile/profile_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/profile/profile_add.png -------------------------------------------------------------------------------- /assets/images/profile/profile_arrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/profile/profile_arrow_left.png -------------------------------------------------------------------------------- /assets/images/profile/profile_avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/profile/profile_avatar.png -------------------------------------------------------------------------------- /assets/images/profile/profile_follow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/profile/profile_follow.png -------------------------------------------------------------------------------- /assets/images/profile/profile_landscape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/profile/profile_landscape.png -------------------------------------------------------------------------------- /assets/images/profile/profile_photos_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/profile/profile_photos_01.png -------------------------------------------------------------------------------- /assets/images/profile/profile_photos_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/profile/profile_photos_02.png -------------------------------------------------------------------------------- /assets/images/profile/profile_photos_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/profile/profile_photos_03.png -------------------------------------------------------------------------------- /assets/images/profile/profile_photos_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/profile/profile_photos_04.png -------------------------------------------------------------------------------- /assets/images/profile/profile_photos_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/profile/profile_photos_05.png -------------------------------------------------------------------------------- /assets/images/profile/profile_photos_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/profile/profile_photos_06.png -------------------------------------------------------------------------------- /assets/images/profile/profile_photos_07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/profile/profile_photos_07.png -------------------------------------------------------------------------------- /assets/images/shopping/apple_pay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/shopping/apple_pay.png -------------------------------------------------------------------------------- /assets/images/shopping/applepay.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/shopping/applepay.jpg -------------------------------------------------------------------------------- /assets/images/shopping/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/shopping/background.jpg -------------------------------------------------------------------------------- /assets/images/shopping/battery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/shopping/battery.png -------------------------------------------------------------------------------- /assets/images/shopping/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/shopping/ic_launcher.png -------------------------------------------------------------------------------- /assets/images/shopping/paypal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/shopping/paypal.png -------------------------------------------------------------------------------- /assets/images/shopping/visa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/shopping/visa.png -------------------------------------------------------------------------------- /assets/images/signup/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/signup/ic_launcher.png -------------------------------------------------------------------------------- /assets/images/signup/logo_signup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/signup/logo_signup.png -------------------------------------------------------------------------------- /assets/images/signup/signup_page_11_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/signup/signup_page_11_bg.png -------------------------------------------------------------------------------- /assets/images/signup/signup_page_6_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/signup/signup_page_6_bg.png -------------------------------------------------------------------------------- /assets/images/signup/signup_page_8_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/signup/signup_page_8_bg.png -------------------------------------------------------------------------------- /assets/images/signup/signup_page_9_profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/signup/signup_page_9_profile.png -------------------------------------------------------------------------------- /assets/images/statistics/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/statistics/ic_launcher.png -------------------------------------------------------------------------------- /assets/images/walkthrough/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/assets/images/walkthrough/ic_launcher.png -------------------------------------------------------------------------------- /doc/01-signup-no.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/doc/01-signup-no.jpg -------------------------------------------------------------------------------- /doc/01-signup.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/doc/01-signup.jpg -------------------------------------------------------------------------------- /doc/02-walk_through-no.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/doc/02-walk_through-no.jpg -------------------------------------------------------------------------------- /doc/02-walk_through.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/doc/02-walk_through.jpg -------------------------------------------------------------------------------- /doc/03-navigation-no.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/doc/03-navigation-no.jpg -------------------------------------------------------------------------------- /doc/03-navigation.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/doc/03-navigation.jpg -------------------------------------------------------------------------------- /doc/04-profile-no.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/doc/04-profile-no.jpg -------------------------------------------------------------------------------- /doc/04-profile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/doc/04-profile.jpg -------------------------------------------------------------------------------- /doc/05-feed-no.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/doc/05-feed-no.jpg -------------------------------------------------------------------------------- /doc/05-feed.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/doc/05-feed.jpg -------------------------------------------------------------------------------- /doc/06-chat-no.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/doc/06-chat-no.jpg -------------------------------------------------------------------------------- /doc/06-chat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/doc/06-chat.jpg -------------------------------------------------------------------------------- /doc/07-shopping-no.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/doc/07-shopping-no.jpg -------------------------------------------------------------------------------- /doc/07-shopping.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/doc/07-shopping.jpg -------------------------------------------------------------------------------- /doc/08-statistics-no.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/doc/08-statistics-no.jpg -------------------------------------------------------------------------------- /doc/08-statistics.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/doc/08-statistics.jpg -------------------------------------------------------------------------------- /doc/09-media-no.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/doc/09-media-no.jpg -------------------------------------------------------------------------------- /doc/09-media.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/doc/09-media.jpg -------------------------------------------------------------------------------- /doc/10-camera-no.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/doc/10-camera-no.jpg -------------------------------------------------------------------------------- /doc/10-camera.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/doc/10-camera.jpg -------------------------------------------------------------------------------- /images/camera/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/camera/ic_launcher.png -------------------------------------------------------------------------------- /images/chat/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/chat/ic_launcher.png -------------------------------------------------------------------------------- /images/feed/city.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/city.png -------------------------------------------------------------------------------- /images/feed/feed11-city1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed11-city1.png -------------------------------------------------------------------------------- /images/feed/feed11-city2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed11-city2.png -------------------------------------------------------------------------------- /images/feed/feed11-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed11-header.png -------------------------------------------------------------------------------- /images/feed/feed12_header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed12_header.png -------------------------------------------------------------------------------- /images/feed/feed12_pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed12_pic1.png -------------------------------------------------------------------------------- /images/feed/feed12_pic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed12_pic2.png -------------------------------------------------------------------------------- /images/feed/feed12_plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed12_plus.png -------------------------------------------------------------------------------- /images/feed/feed13_header1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed13_header1.png -------------------------------------------------------------------------------- /images/feed/feed13_header2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed13_header2.png -------------------------------------------------------------------------------- /images/feed/feed13_header3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed13_header3.png -------------------------------------------------------------------------------- /images/feed/feed13_pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed13_pic1.png -------------------------------------------------------------------------------- /images/feed/feed13_pic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed13_pic2.png -------------------------------------------------------------------------------- /images/feed/feed13_pic3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed13_pic3.png -------------------------------------------------------------------------------- /images/feed/feed13_pic4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed13_pic4.png -------------------------------------------------------------------------------- /images/feed/feed1_avatar1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed1_avatar1.png -------------------------------------------------------------------------------- /images/feed/feed1_avatar2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed1_avatar2.png -------------------------------------------------------------------------------- /images/feed/feed2_avatar2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed2_avatar2.png -------------------------------------------------------------------------------- /images/feed/feed2_image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed2_image1.png -------------------------------------------------------------------------------- /images/feed/feed2_image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed2_image2.png -------------------------------------------------------------------------------- /images/feed/feed_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed_add.png -------------------------------------------------------------------------------- /images/feed/feed_more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed_more.png -------------------------------------------------------------------------------- /images/feed/feed_pic5_01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed_pic5_01.jpg -------------------------------------------------------------------------------- /images/feed/feed_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/feed_search.png -------------------------------------------------------------------------------- /images/feed/heart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/heart.png -------------------------------------------------------------------------------- /images/feed/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/ic_launcher.png -------------------------------------------------------------------------------- /images/feed/landscape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/landscape.png -------------------------------------------------------------------------------- /images/feed/menonglass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/menonglass.png -------------------------------------------------------------------------------- /images/feed/night.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/night.png -------------------------------------------------------------------------------- /images/feed/shop_river.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/shop_river.png -------------------------------------------------------------------------------- /images/feed/white_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/feed/white_background.png -------------------------------------------------------------------------------- /images/main/pic01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/main/pic01.png -------------------------------------------------------------------------------- /images/main/pic02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/main/pic02.png -------------------------------------------------------------------------------- /images/main/pic03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/main/pic03.png -------------------------------------------------------------------------------- /images/main/pic04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/main/pic04.png -------------------------------------------------------------------------------- /images/main/pic05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/main/pic05.png -------------------------------------------------------------------------------- /images/main/pic06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/main/pic06.png -------------------------------------------------------------------------------- /images/main/pic07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/main/pic07.png -------------------------------------------------------------------------------- /images/main/pic08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/main/pic08.png -------------------------------------------------------------------------------- /images/main/pic09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/main/pic09.png -------------------------------------------------------------------------------- /images/main/pic10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/main/pic10.png -------------------------------------------------------------------------------- /images/main/pic11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/main/pic11.png -------------------------------------------------------------------------------- /images/media/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/media/ic_launcher.png -------------------------------------------------------------------------------- /images/navigation/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/navigation/ic_launcher.png -------------------------------------------------------------------------------- /images/profile/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/profile/ic_launcher.png -------------------------------------------------------------------------------- /images/profile/profile_arrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/profile/profile_arrow_left.png -------------------------------------------------------------------------------- /images/profile/profile_avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/profile/profile_avatar.png -------------------------------------------------------------------------------- /images/profile/profile_follow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/profile/profile_follow.png -------------------------------------------------------------------------------- /images/profile/profile_photos_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/profile/profile_photos_01.png -------------------------------------------------------------------------------- /images/profile/profile_photos_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/profile/profile_photos_02.png -------------------------------------------------------------------------------- /images/profile/profile_photos_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/profile/profile_photos_03.png -------------------------------------------------------------------------------- /images/shopping/apple_pay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/shopping/apple_pay.png -------------------------------------------------------------------------------- /images/shopping/applepay.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/shopping/applepay.jpg -------------------------------------------------------------------------------- /images/shopping/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/shopping/background.jpg -------------------------------------------------------------------------------- /images/shopping/battery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/shopping/battery.png -------------------------------------------------------------------------------- /images/shopping/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/shopping/ic_launcher.png -------------------------------------------------------------------------------- /images/shopping/paypal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/shopping/paypal.png -------------------------------------------------------------------------------- /images/shopping/visa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/shopping/visa.png -------------------------------------------------------------------------------- /images/signup/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/signup/ic_launcher.png -------------------------------------------------------------------------------- /images/signup/logo_signup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/signup/logo_signup.png -------------------------------------------------------------------------------- /images/signup/signup_page_11_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/signup/signup_page_11_bg.png -------------------------------------------------------------------------------- /images/signup/signup_page_6_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/signup/signup_page_6_bg.png -------------------------------------------------------------------------------- /images/signup/signup_page_8_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/signup/signup_page_8_bg.png -------------------------------------------------------------------------------- /images/signup/signup_page_9_profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/signup/signup_page_9_profile.png -------------------------------------------------------------------------------- /images/statistics/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/statistics/ic_launcher.png -------------------------------------------------------------------------------- /images/walkthrough/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/images/walkthrough/ic_launcher.png -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Flutter/flutter_export_environment.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # This is a generated file; do not edit or check into version control. 3 | export "FLUTTER_ROOT=/Users/muhammadsaadullahshahid/developer/flutter" 4 | export "FLUTTER_APPLICATION_PATH=/Users/muhammadsaadullahshahid/flutter-ui-nice" 5 | export "COCOAPODS_PARALLEL_CODE_SIGN=true" 6 | export "FLUTTER_TARGET=lib/main.dart" 7 | export "FLUTTER_BUILD_DIR=build" 8 | export "FLUTTER_BUILD_NAME=1.0.0" 9 | export "FLUTTER_BUILD_NUMBER=1" 10 | export "DART_OBFUSCATION=false" 11 | export "TRACK_WIDGET_CREATION=true" 12 | export "TREE_SHAKE_ICONS=false" 13 | export "PACKAGE_CONFIG=.dart_tool/package_config.json" 14 | -------------------------------------------------------------------------------- /ios/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment this line to define a global platform for your project 2 | # platform :ios, '9.0' 3 | 4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency. 5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true' 6 | 7 | project 'Runner', { 8 | 'Debug' => :debug, 9 | 'Profile' => :release, 10 | 'Release' => :release, 11 | } 12 | 13 | def parse_KV_file(file, separator='=') 14 | file_abs_path = File.expand_path(file) 15 | if !File.exists? file_abs_path 16 | return []; 17 | end 18 | pods_ary = [] 19 | skip_line_start_symbols = ["#", "/"] 20 | File.foreach(file_abs_path) { |line| 21 | next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } 22 | plugin = line.split(pattern=separator) 23 | if plugin.length == 2 24 | podname = plugin[0].strip() 25 | path = plugin[1].strip() 26 | podpath = File.expand_path("#{path}", file_abs_path) 27 | pods_ary.push({:name => podname, :path => podpath}); 28 | else 29 | puts "Invalid plugin specification: #{line}" 30 | end 31 | } 32 | return pods_ary 33 | end 34 | 35 | target 'Runner' do 36 | # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock 37 | # referring to absolute paths on developers' machines. 38 | system('rm -rf .symlinks') 39 | system('mkdir -p .symlinks/plugins') 40 | 41 | # Flutter Pods 42 | generated_xcode_build_settings = parse_KV_file('./Flutter/Generated.xcconfig') 43 | if generated_xcode_build_settings.empty? 44 | puts "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter packages get is executed first." 45 | end 46 | generated_xcode_build_settings.map { |p| 47 | if p[:name] == 'FLUTTER_FRAMEWORK_DIR' 48 | symlink = File.join('.symlinks', 'flutter') 49 | File.symlink(File.dirname(p[:path]), symlink) 50 | pod 'Flutter', :path => File.join(symlink, File.basename(p[:path])) 51 | end 52 | } 53 | 54 | # Plugin Pods 55 | plugin_pods = parse_KV_file('../.flutter-plugins') 56 | plugin_pods.map { |p| 57 | symlink = File.join('.symlinks', 'plugins', p[:name]) 58 | File.symlink(p[:path], symlink) 59 | pod p[:name], :path => File.join(symlink, 'ios') 60 | } 61 | end 62 | 63 | post_install do |installer| 64 | installer.pods_project.targets.each do |target| 65 | target.build_configurations.each do |config| 66 | config.build_settings['ENABLE_BITCODE'] = 'NO' 67 | end 68 | end 69 | end 70 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 31 | 32 | 33 | 34 | 40 | 41 | 42 | 43 | 44 | 45 | 56 | 58 | 64 | 65 | 66 | 67 | 68 | 69 | 75 | 77 | 83 | 84 | 85 | 86 | 88 | 89 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildSystemType 6 | Original 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #include "AppDelegate.h" 2 | #include "GeneratedPluginRegistrant.h" 3 | @import GooglePlaces; 4 | @import GoogleMaps; 5 | 6 | @implementation AppDelegate 7 | 8 | - (BOOL)application:(UIApplication *)application 9 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 10 | [GeneratedPluginRegistrant registerWithRegistry:self]; 11 | // Replace YOUR_API_KEY with your Google Place API Key 12 | [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"]; 13 | [GMSServices provideAPIKey:@"YOUR_API_KEY"]; 14 | // Override point for customization after application launch. 15 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 16 | } 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterOpen/flutter-ui-nice/b8654a0d7d184fcd8acca0821cb4acc75c2c23b1/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | NSPhotoLibraryUsageDescription 8 | Select Profile Photo 9 | NSCameraUsageDescription 10 | Select Profile Photo 11 | NSMicrophoneUsageDescription 12 | Its required because we are accessing the camera, but we will never use the microphone 13 | CFBundleExecutable 14 | $(EXECUTABLE_NAME) 15 | CFBundleIdentifier 16 | $(PRODUCT_BUNDLE_IDENTIFIER) 17 | CFBundleInfoDictionaryVersion 18 | 6.0 19 | CFBundleName 20 | flutter_ui_shopping 21 | CFBundlePackageType 22 | APPL 23 | CFBundleShortVersionString 24 | $(FLUTTER_BUILD_NAME) 25 | CFBundleSignature 26 | ???? 27 | CFBundleVersion 28 | $(FLUTTER_BUILD_NUMBER) 29 | LSRequiresIPhoneOS 30 | 31 | UILaunchStoryboardName 32 | LaunchScreen 33 | UIMainStoryboardFile 34 | Main 35 | UISupportedInterfaceOrientations 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationLandscapeLeft 39 | UIInterfaceOrientationLandscapeRight 40 | 41 | UISupportedInterfaceOrientations~ipad 42 | 43 | UIInterfaceOrientationPortrait 44 | UIInterfaceOrientationPortraitUpsideDown 45 | UIInterfaceOrientationLandscapeLeft 46 | UIInterfaceOrientationLandscapeRight 47 | 48 | UIViewControllerBasedStatusBarAppearance 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/const/_const.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 2019/1/28 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | export "color_const.dart"; 7 | export "gradient_const.dart"; 8 | export "icons.dart"; 9 | export "images_const.dart"; 10 | export "page_str_const.dart"; 11 | export "shadow_const.dart"; 12 | export "size_const.dart"; 13 | export "string_const.dart"; 14 | export "styles.dart"; -------------------------------------------------------------------------------- /lib/const/color_const.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 18-12-14 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | import "package:flutter/material.dart"; 7 | 8 | const MAIN_COLOR = Color(0xFF303030); 9 | const DARK_COLOR = Color(0xFFBDBDBD); 10 | const BOTTOM_COLORS = [MAIN_COLOR, DARK_COLOR]; 11 | const YELLOW = Color(0xfffbed96); 12 | const BLUE = Color(0xffabecd6); 13 | const BLUE_DEEP = Color(0xffA8CBFD); 14 | const BLUE_LIGHT = Color(0xffAED3EA); 15 | const PURPLE = Color(0xffccc3fc); 16 | const SIGNUP_LIGHT_RED = Color(0xffffc2a1); 17 | const SIGNUP_RED = Color(0xffffb1bb); 18 | const RED = Color(0xffF2A7B3); 19 | const GREEN = Color(0xffc7e5b4); 20 | const RED_LIGHT = Color(0xffFFC3A0); 21 | const TEXT_BLACK = Color(0xFF353535); 22 | const TEXT_BLACK_LIGHT = Color(0xFF34323D); 23 | -------------------------------------------------------------------------------- /lib/const/gradient_const.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'color_const.dart'; 3 | 4 | const LinearGradient SIGNUP_BACKGROUND = LinearGradient( 5 | begin: FractionalOffset(0.0, 0.4), end: FractionalOffset(0.9, 0.7), 6 | // Add one stop for each color. Stops should increase from 0 to 1 7 | stops: [0.1, 0.9], colors: [YELLOW, BLUE], 8 | ); 9 | 10 | const LinearGradient SIGNUP_CARD_BACKGROUND = LinearGradient( 11 | tileMode: TileMode.clamp, 12 | begin: FractionalOffset.centerLeft, 13 | end: FractionalOffset.centerRight, 14 | stops: [0.1, 1.0], 15 | colors: [SIGNUP_LIGHT_RED, SIGNUP_RED], 16 | ); 17 | 18 | const LinearGradient SIGNUP_CIRCLE_BUTTON_BACKGROUND = LinearGradient( 19 | tileMode: TileMode.clamp, 20 | begin: FractionalOffset.centerLeft, 21 | end: FractionalOffset.centerRight, 22 | // Add one stop for each color. Stops should increase from 0 to 1 23 | stops: [0.4, 1], 24 | colors: [Colors.black, Colors.black54], 25 | ); 26 | -------------------------------------------------------------------------------- /lib/const/icons.dart: -------------------------------------------------------------------------------- 1 | 2 | 3 | const arrow_left = 0xe900; 4 | const arrow_right = 0xe901; 5 | const check = 0xe902; 6 | const plus = 0xe903; 7 | const camera = 0xe904; -------------------------------------------------------------------------------- /lib/const/images_const.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 18-12-15 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | 7 | class ImagePath { 8 | //images 9 | static const String imageDir = "assets/images"; 10 | static const String pkImage = "$imageDir/pk.jpg"; 11 | static const String profileImage = "$imageDir/ui.profile.jpg"; 12 | static const String blankImage = "$imageDir/blank.jpg"; 13 | static const String dashboardImage = "$imageDir/dashboard.jpg"; 14 | static const String loginImage = "$imageDir/login.jpg"; 15 | static const String paymentImage = "$imageDir/payment.jpg"; 16 | static const String settingsImage = "$imageDir/setting.jpeg"; 17 | static const String shoppingImage = "$imageDir/ui.shopping.jpeg"; 18 | static const String timelineImage = "$imageDir/timeline.jpeg"; 19 | static const String verifyImage = "$imageDir/verification.jpg"; 20 | static const String nbImage = "$imageDir/nb.jpeg"; 21 | } 22 | 23 | class MainImagePath { 24 | static const String image_path = "assets/images/main"; 25 | static const String image_app = "assets/images/media/ic_launcher.png"; 26 | static const String image_header = "$image_path/pic04.png"; 27 | static const String image_sign_up = "$image_path/pic03.png"; 28 | static const String image_walk_through = "$image_path/pic01.png"; 29 | static const String image_navigation = "$image_path/pic05.png"; 30 | static const String image_profile = "$image_path/pic06.png"; 31 | static const String image_feed = "$image_path/pic02.png"; 32 | static const String image_chat = "$image_path/pic08.png"; 33 | static const String image_shopping = "$image_path/pic09.png"; 34 | static const String image_statistic = "$image_path/pic10.png"; 35 | static const String image_media = "$image_path/pic11.png"; 36 | static const String image_camera = "$image_path/pic01.png"; 37 | } 38 | 39 | class SignUpImagePath { 40 | static const String image_path = "assets/images/signup"; 41 | static const String SignUpLogo = "$image_path/logo_signup.png"; 42 | static const String SignUpPage_11_Bg = "$image_path/signup_page_11_bg.png"; 43 | static const String SignUpPage_6_Bg = "$image_path/signup_page_6_bg.png"; 44 | static const String SignUpPage_8_Bg = "$image_path/signup_page_8_bg.png"; 45 | } 46 | -------------------------------------------------------------------------------- /lib/const/page_str_const.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 2018/12/24 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | /// 7 | const SIGN_UP_PAGES = [ 8 | "Sign up page 01", 9 | "Sign up page 02", 10 | "Sign up page 03", 11 | "Sign up page 04", 12 | "Sign up page 05", 13 | "Sign up page 06", 14 | "Sign up page 07", 15 | "Sign up page 08", 16 | "Sign up page 09", 17 | "Sign up page 10", 18 | "Sign up page 11", 19 | 20 | /// fixme you could add by your group one name fit one page. 21 | ]; 22 | const WALK_THROUGH_PAGES = [ 23 | "Walk through page 01", 24 | "Walk through page 02", 25 | "Walk through page 03", 26 | "Walk through page 04", 27 | "Walk through page 05", 28 | "Walk through page 06", 29 | 30 | /// fixme you could add by your group one name fit one page. 31 | ]; 32 | const NAVIGATION_PAGES = [ 33 | "Navigation page 01", 34 | "Navigation page 02", 35 | "Navigation page 03", 36 | "Navigation page 04", 37 | "Navigation page 05", 38 | 39 | /// fixme you could add by your group one name fit one page. 40 | ]; 41 | const PROFILE_PAGES = [ 42 | "Profile page 01", 43 | "Profile page 02", 44 | "Profile page 03", 45 | 46 | /// fixme you could add by your group one name fit one page. 47 | ]; 48 | const FEED_PAGES = [ 49 | "Feed page 01", 50 | "Feed page 02", 51 | "Feed page 03", 52 | "Feed page 04", 53 | "Feed page 05", 54 | "Feed page 06", 55 | "Feed page 07", 56 | "Feed page 08", 57 | "Feed page 09", 58 | "Feed page 10", 59 | "Feed page 11", 60 | "Feed page 12", 61 | "Feed page 13", 62 | 63 | /// fixme you could add by your group one name fit one page. 64 | ]; 65 | const CHAT_PAGES = [ 66 | "Chat page 01", 67 | "Chat page 02", 68 | "Chat page 03", 69 | 70 | /// fixme you could add by your group one name fit one page. 71 | ]; 72 | const SHOPPING_PAGES = [ 73 | "Shopping page 01", 74 | "Shopping page 02", 75 | "Shopping page 03", 76 | "Shopping page 04", 77 | "Shopping page 05", 78 | "Shopping page 06", 79 | "Shopping page 07", 80 | "Shopping page 08", 81 | "Shopping page 09", 82 | "Shopping page 10", 83 | "Shopping page 11", 84 | "Shopping page 12", 85 | "Shopping page 13", 86 | "Shopping page 14", 87 | "Shopping page 15", 88 | "Shopping page 16", 89 | "Shopping page 17", 90 | "Shopping page 18", 91 | "Shopping page 19", 92 | 93 | /// fixme you could add by your group one name fit one page. 94 | ]; 95 | const STATISTIC_PAGES = [ 96 | "Statistic page 01", 97 | "Statistic page 02", 98 | "Statistic page 03", 99 | 100 | /// fixme you could add by your group one name fit one page. 101 | ]; 102 | const MEDIA_PAGES = [ 103 | "Media page 01", 104 | "Media page 02", 105 | "Media page 03", 106 | 107 | /// fixme you could add by your group one name fit one page. 108 | ]; 109 | 110 | const CAMERA_PAGES = [ 111 | "Camera page 01", 112 | 113 | /// fixme you could add by your group one name fit one page. 114 | ]; 115 | -------------------------------------------------------------------------------- /lib/const/shadow_const.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | const SHADOW = [ 4 | BoxShadow( 5 | color: Colors.black12, 6 | blurRadius: 20.0, 7 | spreadRadius: 5.0, 8 | offset: Offset( 9 | 10.0, // horizontal, move right 10 10 | 10.0, // vertical, move down 10 11 | ), 12 | ) 13 | ]; 14 | -------------------------------------------------------------------------------- /lib/const/size_const.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 18-12-14 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | const TEXT_LARGE_SIZE = 22.0; 7 | const TEXT_NORMAL_SIZE = 14.0; 8 | const TEXT_SMALL_SIZE = 10.0; 9 | -------------------------------------------------------------------------------- /lib/const/string_const.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 18-12-14 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | /// 7 | 8 | class StringConst { 9 | //strings 10 | static const String APP_NAME = "flutter-ui-nice"; 11 | static const String CREATE_BY = "Created By Volunteer"; 12 | static const String DEVELOPER = "Volunteer"; 13 | static const String PROFESSION = "Flutter Developer"; 14 | static const String DEV_EMAIL = "niebin312@gmail.com"; 15 | static const String SIGN_UP = "Sing Up"; 16 | static const String SIGN_UP_TEXT = "Don't have an account?"; 17 | } 18 | -------------------------------------------------------------------------------- /lib/const/styles.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | TextStyle hintAndValueStyle = TextStyle( 4 | color: Color(0xff353535), 5 | fontWeight: FontWeight.bold, 6 | fontSize: 14.0, 7 | fontFamily: 'Montserrat' 8 | ); -------------------------------------------------------------------------------- /lib/item/Menu.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 18-12-15 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | import 'package:flutter/material.dart'; 7 | 8 | class Menu { 9 | String title; 10 | IconData icon; 11 | String image; 12 | List items; 13 | BuildContext context; 14 | Color menuColor; 15 | 16 | Menu( 17 | {this.title, 18 | this.icon, 19 | this.image, 20 | this.items, 21 | this.context, 22 | this.menuColor}); 23 | } 24 | -------------------------------------------------------------------------------- /lib/item/menu_stream.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 18-12-15 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | import 'dart:async'; 7 | import 'package:flutter/material.dart'; 8 | import 'package:flutter_ui_nice/item/Menu.dart'; 9 | import 'package:flutter_ui_nice/const/images_const.dart'; 10 | import 'package:flutter_ui_nice/const/page_str_const.dart'; 11 | 12 | const _MENU_STRINGS = [ 13 | {'title': "Sign Up", 'items': SIGN_UP_PAGES}, 14 | {'title': "Walk Through", 'items': WALK_THROUGH_PAGES}, 15 | {'title': "Navigation", 'items': NAVIGATION_PAGES}, 16 | {'title': "Profile", 'items': PROFILE_PAGES}, 17 | {'title': "Feed", 'items': FEED_PAGES}, 18 | {'title': "Chat", 'items': CHAT_PAGES}, 19 | {'title': "Shoppig", 'items': SHOPPING_PAGES}, 20 | {'title': "Statistics", 'items': STATISTIC_PAGES}, 21 | {'title': "Media", 'items': MEDIA_PAGES}, 22 | {'title': "Camera", 'items': CAMERA_PAGES}, 23 | ]; 24 | const _MENU_COLORS = [ 25 | 0xff050505, 26 | 0xffc8c4bd, 27 | 0xffc7d8f4, 28 | 0xff7f5741, 29 | 0xff261d33, 30 | 0xff2a8ccf, 31 | 0xffe19b6b, 32 | 0xffe19b6b, 33 | 0xffddcec2, 34 | 0xff261d33, 35 | ]; 36 | const _MENU_ICONS = [ 37 | Icons.airplanemode_active, 38 | Icons.live_help, 39 | Icons.location_on, 40 | Icons.account_box, 41 | Icons.feedback, 42 | Icons.chat, 43 | Icons.shopping_cart, 44 | Icons.all_inclusive, 45 | Icons.play_circle_outline, 46 | Icons.linked_camera, 47 | ]; 48 | const _IMAGE_PATHS = [ 49 | MainImagePath.image_sign_up, 50 | MainImagePath.image_walk_through, 51 | MainImagePath.image_navigation, 52 | MainImagePath.image_profile, 53 | MainImagePath.image_feed, 54 | MainImagePath.image_chat, 55 | MainImagePath.image_shopping, 56 | MainImagePath.image_statistic, 57 | MainImagePath.image_media, 58 | MainImagePath.image_camera, 59 | ]; 60 | 61 | class MenuController { 62 | final controller = StreamController>(); 63 | 64 | Stream> get menuItems => controller.stream; 65 | 66 | MenuController({List menus}) { 67 | controller.add(menus ?? _defaultMenus()); 68 | } 69 | 70 | static String _title(index) { 71 | return _MENU_STRINGS[index % _MENU_STRINGS.length]['title']; 72 | } 73 | 74 | static List _items(index) { 75 | return _MENU_STRINGS[index % _MENU_STRINGS.length]['items']; 76 | } 77 | 78 | List _defaultMenus() { 79 | var list = List(); 80 | for (int i = 0; i < _MENU_STRINGS.length; i++) { 81 | list.add(Menu( 82 | title: _title(i), 83 | icon: _MENU_ICONS[i], 84 | menuColor: Color(_MENU_COLORS[i]), 85 | image: _IMAGE_PATHS[i], 86 | items: _items(i))); 87 | } 88 | return list; 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_ui_nice/page/navigation/navigation1/coordinator.dart'; 3 | import 'package:flutter_ui_nice/page/page_const.dart'; 4 | 5 | import 'const/string_const.dart'; 6 | import 'const/color_const.dart'; 7 | import 'const/page_str_const.dart'; 8 | import "page/page_const.dart"; 9 | import 'package:flutter/services.dart'; 10 | 11 | void main() => runApp(MyApp()); 12 | 13 | class MyApp extends StatelessWidget { 14 | // This widget is the root of your application. 15 | @override 16 | Widget build(BuildContext context) { 17 | SystemChrome.setEnabledSystemUIOverlays([]); 18 | return MaterialApp( 19 | title: StringConst.APP_NAME, 20 | debugShowCheckedModeBanner: false, 21 | theme: ThemeData( 22 | primaryColor: BLUE_DEEP, 23 | accentColor: YELLOW, 24 | fontFamily: "Montserrat", 25 | ), 26 | home: HomePage(), 27 | routes: { 28 | //PROFILE pages 29 | PROFILE_PAGES[0]: (context) => ProfilePageOne(), 30 | PROFILE_PAGES[1]: (context) => ProfilePageTwo(), 31 | 32 | SIGN_UP_PAGES[0]: (context) => SignPageOne(), 33 | SIGN_UP_PAGES[1]: (context) => SignPageTwo(), 34 | SIGN_UP_PAGES[2]: (context) => SignPageThree(), 35 | SIGN_UP_PAGES[3]: (context) => SignPageFour(), 36 | SIGN_UP_PAGES[4]: (context) => SignPageFive(), 37 | SIGN_UP_PAGES[5]: (context) => SignPageSix(), 38 | SIGN_UP_PAGES[6]: (context) => SignPageSeven(), 39 | SIGN_UP_PAGES[7]: (context) => SignPageEight(), 40 | SIGN_UP_PAGES[8]: (context) => SignPageNine(), 41 | SIGN_UP_PAGES[9]: (context) => SignPageTeen(), 42 | SIGN_UP_PAGES[10]: (context) => SignPageEleven(), 43 | 44 | ///FEED group page 45 | FEED_PAGES[0]: (context) => FeedPageOne(), 46 | FEED_PAGES[1]: (context) => FeedPageTwo(), 47 | FEED_PAGES[2]: (context) => FeedThreePage(), 48 | FEED_PAGES[3]: (context) => FeedPageFour(), 49 | FEED_PAGES[4]: (context) => FeedFivePage(), 50 | FEED_PAGES[9]: (context) => FeedPageTen(), 51 | FEED_PAGES[10]: (context) => FeedPageEleven(), 52 | FEED_PAGES[11]: (context) => FeedPageTwelve(), 53 | FEED_PAGES[12]: (context) => FeedPageThirteen(), 54 | 55 | SHOPPING_PAGES[17]: (context) => ShopPageEighteen(), 56 | SHOPPING_PAGES[18]: (context) => ShopPageNineteen(), 57 | 58 | NAVIGATION_PAGES[0]: (context) => NavigationOneCoordinator(), 59 | //FIXME there are other pages to jump with 'page_str_const.dart',there should be make by manager 60 | }, 61 | onUnknownRoute: (setting) => 62 | MaterialPageRoute(builder: (context) => EmptyPage()), 63 | ); 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /lib/page/camera/CameraPageOne.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 2018/12/25 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | import "package:flutter/material.dart"; 7 | 8 | class CameraPageOne extends StatefulWidget { 9 | @override 10 | _CameraState createState() => _CameraState(); 11 | } 12 | 13 | class _CameraState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text("Camera one"), 19 | ), 20 | body: Text("Camera page one"), 21 | ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/page/chat/ChatPageOne.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 2018/12/25 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | import "package:flutter/material.dart"; 7 | 8 | class ChatPageOne extends StatefulWidget { 9 | @override 10 | _ChatState createState() => _ChatState(); 11 | } 12 | 13 | class _ChatState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text("Chat one"), 19 | ), 20 | body: Text("Chat page one"), 21 | ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/page/empty_page.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 18-12-24 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | import "package:flutter/material.dart"; 7 | 8 | class EmptyPage extends StatefulWidget { 9 | @override 10 | _EmptyState createState() => _EmptyState(); 11 | } 12 | 13 | class _EmptyState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text("Empty page"), 19 | ), 20 | body: Text("Empty"), 21 | ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/page/feed/FeedPageTen.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 2018/12/26 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | import "package:flutter/material.dart"; 7 | import 'top_title.dart'; 8 | import 'package:flutter_ui_nice/const/color_const.dart'; 9 | import 'package:flutter_ui_nice/util/SizeUtil.dart'; 10 | import 'feed_const.dart'; 11 | 12 | class FeedPageTen extends StatefulWidget { 13 | @override 14 | _FeedState createState() => _FeedState(); 15 | } 16 | 17 | class _FeedState extends State { 18 | Widget _redBackground() => Container( 19 | alignment: AlignmentDirectional.topStart, 20 | constraints: BoxConstraints.expand( 21 | height: SizeUtil.getAxisY(1043.0), width: SizeUtil.getAxisX(630.0)), 22 | margin: EdgeInsets.only( 23 | top: SizeUtil.getAxisY(82.0), 24 | ), 25 | decoration: BoxDecoration( 26 | gradient: LinearGradient(colors: [RED_LIGHT, RED]), 27 | borderRadius: BorderRadius.only( 28 | topRight: Radius.circular(SizeUtil.getAxisBoth(22.0)), 29 | bottomLeft: Radius.circular(SizeUtil.getAxisBoth(22.0)), 30 | bottomRight: Radius.circular(SizeUtil.getAxisBoth(22.0)), 31 | ), 32 | ), 33 | ); 34 | 35 | Widget _imageGroup() => Container( 36 | constraints: BoxConstraints.expand( 37 | height: SizeUtil.getAxisY(495.0), width: SizeUtil.getAxisX(685.0)), 38 | margin: EdgeInsets.only(top: SizeUtil.getAxisY(43.0)), 39 | child: Row( 40 | children: [ 41 | Container( 42 | constraints: 43 | BoxConstraints.expand(width: SizeUtil.getAxisX(442.0)), 44 | child: Image.asset( 45 | FeedImage.shop_river, 46 | fit: BoxFit.fill, 47 | ), 48 | ), 49 | Expanded( 50 | child: Column( 51 | crossAxisAlignment: CrossAxisAlignment.start, 52 | children: [ 53 | Expanded( 54 | flex: 1, 55 | child: Image.asset( 56 | FeedImage.white_back, 57 | fit: BoxFit.cover, 58 | ), 59 | ), 60 | Expanded( 61 | flex: 1, 62 | child: Image.asset( 63 | FeedImage.city, 64 | fit: BoxFit.cover, 65 | ), 66 | ), 67 | ], 68 | ), 69 | ) 70 | ], 71 | ), 72 | ); 73 | 74 | Widget _header() => Padding( 75 | padding: EdgeInsets.only(left: SizeUtil.getAxisX(26.0)), 76 | child: Container( 77 | width: SizeUtil.getAxisBoth(CIRCLE_BUTTON_HEIGHT), 78 | height: SizeUtil.getAxisBoth(CIRCLE_BUTTON_HEIGHT), 79 | decoration: BoxDecoration( 80 | image: DecorationImage(image: AssetImage(FeedImage.white_back)), 81 | borderRadius: BorderRadius.circular( 82 | SizeUtil.getAxisBoth(22.0), 83 | ), 84 | ), 85 | ), 86 | ); 87 | 88 | Widget _postDesc() => Container( 89 | padding: EdgeInsets.only( 90 | left: SizeUtil.getAxisX(60.0), 91 | right: SizeUtil.getAxisX(152.0), 92 | top: SizeUtil.getAxisY(51.0)), 93 | child: RichText( 94 | text: TextSpan( 95 | children: [ 96 | TextSpan( 97 | text: "Hristo ", 98 | style: TextStyle(fontWeight: FontWeight.w700)), 99 | TextSpan( 100 | text: 101 | "added 127 new photos to the Lorem Ipsum dolr sit amet.") 102 | ], 103 | style: TextStyle( 104 | color: TEXT_BLACK_LIGHT, 105 | fontSize: SizeUtil.getAxisBoth(TEXT_NORMAL_SIZE), 106 | ), 107 | ), 108 | ), 109 | ); 110 | 111 | Widget _timeDesc() => Container( 112 | padding: EdgeInsets.only(right: SizeUtil.getAxisX(159.0)), 113 | alignment: AlignmentDirectional.centerEnd, 114 | child: Text( 115 | "1 MINUTE", 116 | style: TextStyle( 117 | color: TEXT_BLACK_LIGHT, 118 | fontSize: SizeUtil.getAxisBoth(TEXT_SMALL_SIZE)), 119 | ), 120 | ); 121 | 122 | Widget _contentView() => Container( 123 | padding: EdgeInsets.only(top: SizeUtil.getAxisY(41.0)), 124 | child: Column( 125 | crossAxisAlignment: CrossAxisAlignment.start, 126 | mainAxisAlignment: MainAxisAlignment.start, 127 | children: [ 128 | _header(), 129 | _timeDesc(), 130 | _postDesc(), 131 | _imageGroup(), 132 | Container( 133 | alignment: AlignmentDirectional.topStart, 134 | margin: EdgeInsets.only( 135 | top: SizeUtil.getAxisY(81.0), 136 | left: SizeUtil.getAxisX(60.0), 137 | right: SizeUtil.getAxisX(200.0)), 138 | child: Text( 139 | "LOREM IPSUM", 140 | style: TextStyle( 141 | color: TEXT_BLACK_LIGHT, 142 | fontSize: SizeUtil.getAxisBoth(TEXT_LARGE_SIZE), 143 | fontWeight: FontWeight.w700), 144 | ), 145 | ), 146 | Container( 147 | alignment: AlignmentDirectional.topStart, 148 | margin: EdgeInsets.only( 149 | top: SizeUtil.getAxisY(29.0), 150 | left: SizeUtil.getAxisX(60.0), 151 | right: SizeUtil.getAxisX(200.0)), 152 | child: Text( 153 | "Cras quis nulla com, aliquam lectus sed, blandit augue. Duis tincidunt urna non pretium", 154 | style: TextStyle( 155 | color: TEXT_BLACK_LIGHT, 156 | fontSize: SizeUtil.getAxisBoth(TEXT_NORMAL_SIZE), 157 | ), 158 | ), 159 | ) 160 | ], 161 | ), 162 | ); 163 | 164 | Widget _body() => Stack( 165 | children: [ 166 | _redBackground(), 167 | _contentView(), 168 | ], 169 | ); 170 | 171 | @override 172 | Widget build(BuildContext context) { 173 | return Scaffold( 174 | body: Container( 175 | constraints: BoxConstraints.expand(), 176 | decoration: BoxDecoration( 177 | gradient: LinearGradient(colors: [YELLOW, GREEN]), 178 | ), 179 | child: Column( 180 | mainAxisAlignment: MainAxisAlignment.start, 181 | crossAxisAlignment: CrossAxisAlignment.start, 182 | children: [ 183 | TopTitleBar(), 184 | _body(), 185 | ], 186 | ), 187 | ), 188 | ); 189 | } 190 | } 191 | -------------------------------------------------------------------------------- /lib/page/feed/FeedPageTwelve.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 2018/12/26 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | import "package:flutter/material.dart"; 7 | import 'feed_const.dart'; 8 | import 'top_title.dart'; 9 | import 'package:flutter_ui_nice/util/SizeUtil.dart'; 10 | import 'package:flutter_ui_nice/const/color_const.dart'; 11 | 12 | class FeedPageTwelve extends StatefulWidget { 13 | @override 14 | _FeedState createState() => _FeedState(); 15 | } 16 | 17 | class _FeedState extends State { 18 | Widget _textBack(content, 19 | {color = TEXT_BLACK_LIGHT, 20 | size = TEXT_SMALL_2_SIZE, 21 | isBold = false}) => 22 | Text( 23 | content, 24 | style: TextStyle( 25 | color: color, 26 | fontSize: SizeUtil.getAxisBoth(size), 27 | fontWeight: isBold ? FontWeight.w700 : null), 28 | ); 29 | 30 | Widget _listItemName() => Container( 31 | alignment: AlignmentDirectional.bottomStart, 32 | child: Column( 33 | mainAxisAlignment: MainAxisAlignment.end, 34 | crossAxisAlignment: CrossAxisAlignment.start, 35 | children: [ 36 | _textBack("Hristo Hristov", size: TEXT_SMALL_3_SIZE, isBold: true), 37 | SizedBox(height: SizeUtil.getAxisY(13.0)), 38 | _textBack("4 hours ago", size: TEXT_NORMAL_SIZE), 39 | ], 40 | ), 41 | ); 42 | 43 | Widget _action(icon, value) => Column( 44 | mainAxisAlignment: MainAxisAlignment.start, 45 | crossAxisAlignment: CrossAxisAlignment.center, 46 | children: [ 47 | Icon( 48 | icon, 49 | size: SizeUtil.getAxisBoth(30.0), 50 | color: TEXT_BLACK_LIGHT, 51 | ), 52 | SizedBox(height: SizeUtil.getAxisY(26.0)), 53 | _textBack(value) 54 | ], 55 | ); 56 | 57 | Widget _listItemAction() => Container( 58 | child: Column( 59 | mainAxisAlignment: MainAxisAlignment.start, 60 | crossAxisAlignment: CrossAxisAlignment.center, 61 | children: [ 62 | _action(Icons.favorite_border, "233"), 63 | SizedBox(height: SizeUtil.getAxisY(56.0)), 64 | _action(Icons.chat, "35"), 65 | SizedBox(height: SizeUtil.getAxisY(56.0)), 66 | _action(Icons.share, "12"), 67 | SizedBox(height: SizeUtil.getAxisY(56.0)), 68 | _action(Icons.more_vert, ""), 69 | ]), 70 | ); 71 | 72 | Widget _listItem(index) => Container( 73 | height: SizeUtil.getAxisY(740.0), 74 | decoration: BoxDecoration( 75 | gradient: index % 2 == 1 76 | ? LinearGradient( 77 | colors: [Color(0x55FFFFFF), Colors.transparent]) 78 | : null), 79 | padding: EdgeInsets.only( 80 | top: SizeUtil.getAxisY(40.0), bottom: SizeUtil.getAxisY(20.0)), 81 | child: Container( 82 | child: Stack( 83 | children: [ 84 | Container( 85 | height: SizeUtil.getAxisY(550.0), 86 | width: SizeUtil.getAxisX(613.0), 87 | child: Image.asset( 88 | index % 2 == 0 ? FeedImage.feed12_pic1 : FeedImage.feed12_pic2, 89 | fit: BoxFit.cover, 90 | height: SizeUtil.getAxisY(550.0), 91 | width: SizeUtil.getAxisX(613.0), 92 | ), 93 | ), 94 | Positioned( 95 | width: SizeUtil.getAxisBoth(CIRCLE_BUTTON_HEIGHT), 96 | height: SizeUtil.getAxisBoth(CIRCLE_BUTTON_HEIGHT), 97 | left: SizeUtil.getAxisX(24.0), 98 | bottom: SizeUtil.getAxisY(89.0), 99 | child: Image.asset( 100 | FeedImage.feed12_header, 101 | fit: BoxFit.cover, 102 | ), 103 | ), 104 | Positioned( 105 | left: SizeUtil.getAxisX(160.0), 106 | bottom: SizeUtil.getAxisY(10.0), 107 | child: _listItemName(), 108 | ), 109 | Positioned( 110 | right: SizeUtil.getAxisX(40.0), 111 | top: SizeUtil.getAxisY(40.0), 112 | child: _listItemAction(), 113 | ) 114 | ], 115 | )), 116 | ); 117 | 118 | Widget _body() => ListView.builder( 119 | itemBuilder: (context, index) { 120 | return _listItem(index); 121 | }, 122 | itemCount: 4, 123 | padding: EdgeInsets.only(top: 0.1), 124 | ); 125 | 126 | @override 127 | Widget build(BuildContext context) { 128 | return Scaffold( 129 | body: Container( 130 | decoration: BoxDecoration( 131 | gradient: LinearGradient( 132 | colors: [YELLOW, GREEN], 133 | begin: Alignment.topLeft, 134 | end: Alignment.centerLeft)), 135 | child: Column( 136 | mainAxisAlignment: MainAxisAlignment.start, 137 | crossAxisAlignment: CrossAxisAlignment.start, 138 | children: [ 139 | TopTitleBar(), 140 | Expanded( 141 | child: Stack( 142 | children: [ 143 | _body(), 144 | Positioned( 145 | width: SizeUtil.width, 146 | bottom: SizeUtil.getAxisY(41.0), 147 | child: Row( 148 | mainAxisAlignment: MainAxisAlignment.center, 149 | crossAxisAlignment: CrossAxisAlignment.center, 150 | children: [ 151 | FloatingActionButton( 152 | onPressed: () { 153 | print("you have pressed the button"); 154 | }, 155 | child: Image.asset(FeedImage.feed12_plus), 156 | ) 157 | ], 158 | ), 159 | ) 160 | ], 161 | ), 162 | ), 163 | ], 164 | ), 165 | )); 166 | } 167 | } 168 | -------------------------------------------------------------------------------- /lib/page/feed/FeedPageTwo.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 2018/12/25 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// Modified by Srikanth on 2019/01/03 6 | /// 7 | import "package:flutter/material.dart"; 8 | import 'package:flutter_ui_nice/const/color_const.dart'; 9 | import 'package:flutter_ui_nice/page/feed/feed_const.dart'; 10 | import 'package:flutter_ui_nice/page/feed/top_title.dart'; 11 | import 'package:flutter_ui_nice/util/SizeUtil.dart'; 12 | import 'package:flutter_ui_nice/util/GradientUtil.dart'; 13 | 14 | class FeedPageTwo extends StatefulWidget { 15 | @override 16 | _FeedState createState() => _FeedState(); 17 | } 18 | 19 | class _FeedState extends State { 20 | Widget _textBack(content, 21 | {color = TEXT_BLACK_LIGHT, 22 | size = TEXT_SMALL_2_SIZE, 23 | isBold = false, 24 | softWrap: true}) => 25 | Text( 26 | content, 27 | style: TextStyle( 28 | color: color, 29 | fontSize: SizeUtil.getAxisBoth(size), 30 | fontWeight: isBold ? FontWeight.w700 : FontWeight.w300), 31 | ); 32 | 33 | Widget _listItemName() => Container( 34 | alignment: AlignmentDirectional.topStart, 35 | child: Column( 36 | mainAxisAlignment: MainAxisAlignment.end, 37 | crossAxisAlignment: CrossAxisAlignment.start, 38 | children: [ 39 | _textBack("Excepteur occacupidat non proident anim.", 40 | size: TEXT_NORMAL_2_SIZE, isBold: true), 41 | _textBack("1 MINUTE", size: TEXT_NORMAL_SIZE, isBold: false) 42 | ], 43 | ), 44 | ); 45 | 46 | Widget _listItem(index) => Container( 47 | child: Container( 48 | child: Stack( 49 | children: [ 50 | Container( 51 | height: SizeUtil.getAxisY(550.0), 52 | width: SizeUtil.getAxisX(663.0), 53 | ), 54 | Positioned( 55 | left: SizeUtil.getAxisX(64.0), 56 | right: SizeUtil.getAxisX(124.0), 57 | top: SizeUtil.getAxisY(120.0), 58 | child: _listItemName(), 59 | ), 60 | Positioned( 61 | left: SizeUtil.getAxisX(3.0), 62 | right: SizeUtil.getAxisX(5.0), 63 | top: SizeUtil.getAxisY(70.0), 64 | child: Image.asset( 65 | index % 2 == 0 66 | ? FeedImage.feed2_image1 67 | : FeedImage.feed2_image2, 68 | fit: BoxFit.cover, 69 | width: SizeUtil.getAxisX(600.0), 70 | ), 71 | ), 72 | Positioned( 73 | width: SizeUtil.getAxisBoth(SQUARE_BUTTON_HEIGHT), 74 | height: SizeUtil.getAxisBoth(SQUARE_BUTTON_HEIGHT), 75 | left: SizeUtil.getAxisX(5.0), 76 | top: SizeUtil.getAxisY(100.0), 77 | child: Image.asset( 78 | index % 2 == 0 79 | ? FeedImage.feed1_avatar1 80 | : FeedImage.feed1_avatar2, 81 | fit: BoxFit.cover, 82 | ), 83 | ), 84 | Positioned( 85 | bottom: SizeUtil.getAxisY(70.0), 86 | child: Column( 87 | children: [ 88 | Container( 89 | constraints: BoxConstraints.expand( 90 | height: SizeUtil.getAxisY(110.0), 91 | width: SizeUtil.getAxisX(603.0)), 92 | decoration: BoxDecoration( 93 | borderRadius: BorderRadius.circular(10.0), 94 | gradient: GradientUtil.red()), 95 | child: Center( 96 | child: Row( 97 | mainAxisAlignment: MainAxisAlignment.spaceAround, 98 | crossAxisAlignment: CrossAxisAlignment.start, 99 | children: [ 100 | Container( 101 | padding: EdgeInsets.all(10.0), 102 | width: 200.0, 103 | child: _textBack( 104 | "Excepteur occacupidat non proident anim.", 105 | size: TEXT_SMALL_SIZE, 106 | isBold: true), 107 | ), 108 | Container( 109 | padding: EdgeInsets.all(10.0), 110 | width: 70.0, 111 | child: _textBack("127 LIKES", 112 | size: TEXT_SMALL_SIZE, isBold: false), 113 | ), 114 | ], 115 | ), 116 | ), 117 | ), 118 | ], 119 | ), 120 | ), 121 | Positioned( 122 | bottom: SizeUtil.getAxisY(70.0), 123 | right: SizeUtil.getAxisX(0.0), 124 | child: Image.asset(FeedImage.heart, 125 | width: SizeUtil.getAxisY(CIRCLE_BUTTON_HEIGHT), 126 | height: SizeUtil.getAxisY(CIRCLE_BUTTON_HEIGHT))), 127 | ], 128 | ), 129 | )); 130 | 131 | Widget _body() => ListView.builder( 132 | itemBuilder: (context, index) { 133 | return Column( 134 | children: [_listItem(index)], 135 | ); 136 | }, 137 | itemCount: 4, 138 | padding: EdgeInsets.only(top: 0.1), 139 | ); 140 | 141 | @override 142 | Widget build(BuildContext context) { 143 | return Scaffold( 144 | body: Container( 145 | decoration: BoxDecoration( 146 | gradient: LinearGradient( 147 | colors: [YELLOW, GREEN], 148 | begin: Alignment.topLeft, 149 | end: Alignment.centerLeft)), 150 | child: Column( 151 | children: [ 152 | TopTitleBar(), 153 | Expanded( 154 | child: Container( 155 | padding: const EdgeInsets.symmetric( 156 | horizontal: 30.0, vertical: 10.0), 157 | child: Stack( 158 | children: [ 159 | // Padding( 160 | // padding: const EdgeInsets.symmetric( 161 | // horizontal: 20.0, vertical: 10.0), 162 | // child: Container( 163 | // decoration: BoxDecoration( 164 | // boxShadow: [BoxShadow(color: Colors.grey)], 165 | // borderRadius: BorderRadius.circular(10.0), 166 | // gradient: LinearGradient( 167 | // colors: [YELLOW, GREEN], 168 | // begin: Alignment.topRight, 169 | // end: Alignment.centerLeft)), 170 | // ), 171 | // ), 172 | _body(), 173 | ], 174 | ), 175 | ), 176 | ), 177 | ], 178 | ), 179 | ), 180 | ); 181 | } 182 | } 183 | -------------------------------------------------------------------------------- /lib/page/feed/feed_const.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 2018/12/26 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | import "package:flutter/material.dart"; 6 | 7 | class FeedStringConst { 8 | static const FEED_NAME = "FEED"; 9 | } 10 | 11 | const CIRCLE_BUTTON_HEIGHT = 87.0; 12 | const SQUARE_BUTTON_HEIGHT = 117.0; 13 | const TOP_BAR_HEIGHT = 152.0; 14 | const TOP_BAR_GRADIENT_HEIGHT = 133.0; 15 | 16 | const TEXT_LARGE_SIZE = 40.0; 17 | const TEXT_NORMAL_2_SIZE = 28.0; 18 | const TEXT_NORMAL_SIZE = 26.0; 19 | const TEXT_SMALL_SIZE = 20.0; 20 | const TEXT_SMALL_2_SIZE = 22.0; 21 | const TEXT_SMALL_3_SIZE = 24.0; 22 | 23 | class FeedImage { 24 | static const IMAGE_PATH = "assets/images/feed"; 25 | static const more_circle = "$IMAGE_PATH/feed_more.png"; 26 | static const search_circle = "$IMAGE_PATH/feed_search.png"; 27 | static const white_back = "$IMAGE_PATH/white_background.png"; 28 | static const feed_add = "$IMAGE_PATH/feed_add.png"; 29 | static const city = "$IMAGE_PATH/city.png"; 30 | static const shop_river = "$IMAGE_PATH/shop_river.png"; 31 | static const feed11_city1 = "$IMAGE_PATH/feed11-city1.png"; 32 | static const feed11_city2 = "$IMAGE_PATH/feed11-city2.png"; 33 | static const feed11_header = "$IMAGE_PATH/feed11-header.png"; 34 | static const feed12_pic1 = "$IMAGE_PATH/feed12_pic1.png"; 35 | static const feed12_pic2 = "$IMAGE_PATH/feed12_pic2.png"; 36 | static const feed12_header = "$IMAGE_PATH/feed12_header.png"; 37 | static const feed12_plus = "$IMAGE_PATH/feed12_plus.png"; 38 | 39 | //Images for Feed1 40 | static const feed1_avatar1 = "$IMAGE_PATH/feed1_avatar1.png"; 41 | static const feed1_avatar2 = "$IMAGE_PATH/feed1_avatar2.png"; 42 | static const landscape = "$IMAGE_PATH/landscape.png"; 43 | static const menonglass = "$IMAGE_PATH/menonglass.png"; 44 | static const night = "$IMAGE_PATH/night.png"; 45 | 46 | //Images for Feed2 47 | static const feed2_image1 = "$IMAGE_PATH/feed2_image1.png"; 48 | static const feed2_image2 = "$IMAGE_PATH/feed2_image2.png"; 49 | static const heart = "$IMAGE_PATH/heart.png"; 50 | 51 | //feed 3 52 | static const FEED_3_PIC_01 = "$IMAGE_PATH/feed_pic3_01.jpg"; 53 | static const FEED_3_PIC_02 = "$IMAGE_PATH/feed_pic3_02.jpg"; 54 | static const FEED_3_PIC_03 = "$IMAGE_PATH/feed_pic3_03.jpg"; 55 | static const FEED_3_PIC_HEADER_01 = "$IMAGE_PATH/feed_pic3_header_01.jpg"; 56 | static const FEED_3_PIC_HEADER_02 = "$IMAGE_PATH/feed_pic3_header_02.jpg"; 57 | static const FEED_3_PIC_HEADER_03 = "$IMAGE_PATH/feed_pic3_header_03.jpg"; 58 | static const FEED_3_PIC_LEFT = "$IMAGE_PATH/feed_pic3_left.jpg"; 59 | 60 | //Image for feed 5; 61 | static const feed5_pic_01 = "$IMAGE_PATH/feed_pic5_01.jpg"; 62 | 63 | //feed 13 64 | static const feed13_header1 = "$IMAGE_PATH/feed13_header1.png"; 65 | static const feed13_header2 = "$IMAGE_PATH/feed13_header2.png"; 66 | static const feed13_header3 = "$IMAGE_PATH/feed13_header3.png"; 67 | 68 | static const feed13_pic1 = "$IMAGE_PATH/feed13_pic1.png"; 69 | static const feed13_pic2 = "$IMAGE_PATH/feed13_pic2.png"; 70 | static const feed13_pic3 = "$IMAGE_PATH/feed13_pic3.png"; 71 | static const feed13_pic4 = "$IMAGE_PATH/feed13_pic4.png"; 72 | } 73 | -------------------------------------------------------------------------------- /lib/page/feed/feed_five_page.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 18-12-24 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | import "package:flutter/material.dart"; 7 | import 'top_title.dart'; 8 | import 'feed_const.dart'; 9 | import 'package:flutter_ui_nice/util/SizeUtil.dart'; 10 | import 'package:flutter_ui_nice/util/GradientUtil.dart'; 11 | import 'package:flutter_ui_nice/const/_const.dart' hide TEXT_NORMAL_SIZE; 12 | 13 | class FeedFivePage extends StatefulWidget { 14 | @override 15 | _FeedFiveState createState() => _FeedFiveState(); 16 | } 17 | 18 | class _FeedFiveState extends State { 19 | var _value = ""; 20 | 21 | Widget _bottomImg() => Container( 22 | constraints: BoxConstraints.expand(), 23 | child: Container( 24 | constraints: BoxConstraints.expand(height: SizeUtil.getAxisY(620)), 25 | alignment: Alignment.bottomCenter, 26 | child: Image.asset( 27 | FeedImage.feed5_pic_01, 28 | fit: BoxFit.cover, 29 | ), 30 | )); 31 | 32 | Widget _content1() => Row( 33 | mainAxisAlignment: MainAxisAlignment.start, 34 | crossAxisAlignment: CrossAxisAlignment.center, 35 | children: [ 36 | Container( 37 | height: SizeUtil.getAxisBoth(72), 38 | width: SizeUtil.getAxisBoth(72), 39 | decoration: BoxDecoration( 40 | image: DecorationImage( 41 | image: AssetImage(FeedImage.feed12_header), 42 | ), 43 | ), 44 | ), 45 | Expanded( 46 | child: Container( 47 | padding: EdgeInsets.symmetric(horizontal: 10), 48 | child: TextField( 49 | style: TextStyle( 50 | fontSize: SizeUtil.getAxisBoth(TEXT_NORMAL_SIZE), 51 | color: TEXT_BLACK), 52 | decoration: InputDecoration( 53 | hintText: "Write something ...", 54 | border: UnderlineInputBorder( 55 | borderSide: BorderSide(style: BorderStyle.none, width: 0), 56 | borderRadius: BorderRadius.circular(10)), 57 | ), 58 | cursorColor: YELLOW, 59 | ), 60 | ), 61 | ), 62 | Text( 63 | _value, 64 | style: TextStyle( 65 | color: TEXT_BLACK, 66 | fontSize: SizeUtil.getAxisBoth(TEXT_NORMAL_SIZE), 67 | ), 68 | ), 69 | PopupMenuButton( 70 | itemBuilder: (context) => [ 71 | PopupMenuItem( 72 | child: Text("Common"), 73 | value: 1, 74 | ), 75 | PopupMenuItem( 76 | child: Text("VIP"), 77 | value: 2, 78 | ), 79 | ], 80 | icon: Icon( 81 | Icons.arrow_drop_down, 82 | size: 20, 83 | ), 84 | onSelected: (value) { 85 | setState(() { 86 | _value = value == 1 ? "Common" : "VIP"; 87 | }); 88 | }, 89 | ) 90 | ], 91 | ); 92 | 93 | Widget _content2() => Container( 94 | margin: EdgeInsets.symmetric( 95 | vertical: SizeUtil.getAxisY(50), 96 | ), 97 | child: Row( 98 | children: [ 99 | SizedBox(width: SizeUtil.getAxisX(22)), 100 | Icon( 101 | Icons.camera_alt, 102 | size: SizeUtil.getAxisBoth(28), 103 | ), 104 | SizedBox(width: SizeUtil.getAxisX(64)), 105 | Text("Photo", style: TextStyle(color: TEXT_BLACK)), 106 | Expanded( 107 | child: Container( 108 | constraints: BoxConstraints.expand( 109 | height: SizeUtil.getAxisBoth(78), 110 | ), 111 | alignment: Alignment.centerRight, 112 | child: Container( 113 | height: SizeUtil.getAxisBoth(78), 114 | width: SizeUtil.getAxisBoth(78), 115 | decoration: BoxDecoration( 116 | image: DecorationImage( 117 | image: AssetImage( 118 | FeedImage.city, 119 | ), 120 | fit: BoxFit.fill), 121 | borderRadius: BorderRadius.circular(4)), 122 | ), 123 | )) 124 | ], 125 | ), 126 | ); 127 | 128 | Widget _content3() => Container( 129 | margin: EdgeInsets.symmetric( 130 | vertical: SizeUtil.getAxisY(50), 131 | ), 132 | child: Row( 133 | children: [ 134 | SizedBox(width: SizeUtil.getAxisX(22)), 135 | Icon( 136 | Icons.edit, 137 | size: SizeUtil.getAxisBoth(28), 138 | ), 139 | SizedBox(width: SizeUtil.getAxisX(64)), 140 | Text( 141 | "Status", 142 | style: TextStyle(color: TEXT_BLACK), 143 | ), 144 | ], 145 | ), 146 | ); 147 | 148 | Widget _content4() => Container( 149 | margin: EdgeInsets.symmetric( 150 | vertical: SizeUtil.getAxisY(50), 151 | ), 152 | child: Row( 153 | children: [ 154 | SizedBox(width: SizeUtil.getAxisX(22)), 155 | Icon( 156 | Icons.location_on, 157 | size: SizeUtil.getAxisBoth(28), 158 | ), 159 | SizedBox(width: SizeUtil.getAxisX(64)), 160 | Text( 161 | "Location", 162 | style: TextStyle(color: TEXT_BLACK), 163 | ), 164 | ], 165 | ), 166 | ); 167 | 168 | Widget _line() => Container( 169 | color: TEXT_BLACK, 170 | constraints: BoxConstraints.expand(height: 1), 171 | ); 172 | 173 | Widget _upContent() => Container( 174 | constraints: BoxConstraints.expand(height: SizeUtil.getAxisY(640)), 175 | margin: EdgeInsets.symmetric( 176 | vertical: SizeUtil.getAxisY(48), 177 | horizontal: SizeUtil.getAxisX(44), 178 | ), 179 | padding: EdgeInsets.symmetric( 180 | horizontal: SizeUtil.getAxisX(38), 181 | vertical: SizeUtil.getAxisY(50), 182 | ), 183 | child: SingleChildScrollView( 184 | child: Column( 185 | children: [ 186 | _content1(), 187 | _content2(), 188 | _line(), 189 | _content3(), 190 | _line(), 191 | _content4() 192 | ], 193 | ), 194 | ), 195 | decoration: BoxDecoration( 196 | borderRadius: BorderRadius.circular(10), 197 | gradient: GradientUtil.red()), 198 | ); 199 | 200 | @override 201 | Widget build(BuildContext context) { 202 | return Scaffold( 203 | body: Container( 204 | child: Column( 205 | children: [ 206 | TopTitleBar(), 207 | Expanded( 208 | child: Stack( 209 | children: [ 210 | _bottomImg(), 211 | _upContent(), 212 | ], 213 | ), 214 | ) 215 | ], 216 | ), 217 | decoration: BoxDecoration(gradient: GradientUtil.yellowGreen()), 218 | ), 219 | ); 220 | } 221 | } 222 | -------------------------------------------------------------------------------- /lib/page/feed/top_title.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 2018/12/26 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | import "package:flutter/material.dart"; 7 | import 'feed_const.dart'; 8 | import 'package:flutter_ui_nice/const/color_const.dart'; 9 | import 'package:flutter_ui_nice/util/SizeUtil.dart'; 10 | 11 | class TopTitleBar extends StatelessWidget { 12 | TopTitleBar( 13 | {this.leftImage = FeedImage.more_circle, 14 | this.rightImage = FeedImage.search_circle}); 15 | 16 | final String leftImage; 17 | final String rightImage; 18 | 19 | @override 20 | Widget build(BuildContext context) { 21 | return Container( 22 | constraints: 23 | BoxConstraints.expand(height: SizeUtil.getAxisY(TOP_BAR_HEIGHT)), 24 | child: Stack( 25 | children: [ 26 | Container( 27 | constraints: BoxConstraints.expand( 28 | height: SizeUtil.getAxisY(TOP_BAR_GRADIENT_HEIGHT)), 29 | decoration: 30 | BoxDecoration(gradient: LinearGradient(colors: [YELLOW, BLUE])), 31 | ), 32 | Center( 33 | child: Padding( 34 | padding: EdgeInsets.only(top: SizeUtil.getAxisY(30.0)), 35 | child: Text( 36 | FeedStringConst.FEED_NAME, 37 | style: TextStyle( 38 | color: TEXT_BLACK, 39 | fontSize: SizeUtil.getAxisBoth(TEXT_NORMAL_2_SIZE), 40 | fontWeight: FontWeight.w700), 41 | ), 42 | ), 43 | ), 44 | Container( 45 | padding: EdgeInsets.symmetric(horizontal: SizeUtil.getAxisX(24.0)), 46 | alignment: AlignmentDirectional.bottomStart, 47 | child: Row( 48 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 49 | children: [ 50 | Image.asset(leftImage, 51 | width: SizeUtil.getAxisY(CIRCLE_BUTTON_HEIGHT), 52 | height: SizeUtil.getAxisY(CIRCLE_BUTTON_HEIGHT)), 53 | Image.asset(rightImage, 54 | width: SizeUtil.getAxisY(CIRCLE_BUTTON_HEIGHT), 55 | height: SizeUtil.getAxisY(CIRCLE_BUTTON_HEIGHT)) 56 | ]), 57 | ) 58 | ], 59 | ), 60 | ); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /lib/page/media/MediaPageOne.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 2018/12/25 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | import "package:flutter/material.dart"; 7 | 8 | class MediaPageOne extends StatefulWidget { 9 | @override 10 | _MediaState createState() => _MediaState(); 11 | } 12 | 13 | class _MediaState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text("Media one"), 19 | ), 20 | body: Text("Media page one"), 21 | ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/page/navigation/common/pages/home_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_ui_nice/const/color_const.dart'; 3 | 4 | class HomePage extends StatelessWidget { 5 | HomePage(this.onMenuPressed); 6 | final VoidCallback onMenuPressed; 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return Container( 11 | decoration: BoxDecoration( 12 | borderRadius: BorderRadius.circular(10.0), 13 | gradient: LinearGradient( 14 | begin: Alignment.topLeft, 15 | end: Alignment.bottomRight, 16 | colors: [YELLOW, GREEN, BLUE], 17 | ), 18 | boxShadow: [ 19 | BoxShadow( 20 | color: Colors.black26, 21 | offset: Offset(2.0, 1.0), 22 | blurRadius: 10.0, 23 | ) 24 | ], 25 | ), 26 | child: Center( 27 | child: ElevatedButton( 28 | onPressed: onMenuPressed, 29 | child: Text("Open Menu"), 30 | ), 31 | ), 32 | ); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /lib/page/navigation/common/widgets/background_common.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_ui_nice/const/color_const.dart'; 3 | 4 | class BackgroundCommon extends StatelessWidget { 5 | 6 | BackgroundCommon({this.child, Key key}) : super(key: key); 7 | final Widget child; 8 | 9 | @override 10 | Widget build(BuildContext context) => Container( 11 | decoration: BoxDecoration( 12 | gradient: LinearGradient( 13 | begin: Alignment.topLeft, 14 | end: Alignment.bottomRight, 15 | colors: [YELLOW, GREEN, BLUE], 16 | ) 17 | ), 18 | child: child 19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /lib/page/navigation/navigation1/animations/home_page_animator.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/widgets.dart'; 2 | 3 | class HomePageAnimator { 4 | HomePageAnimator(this.controller) : 5 | translateLeft = Tween(begin: 0.0, end: -200.0).animate(controller), 6 | scaleDown = Tween(begin: 1.0, end: 0.8).animate(controller); 7 | 8 | final AnimationController controller; 9 | final Animation translateLeft; 10 | final Animation scaleDown; 11 | } -------------------------------------------------------------------------------- /lib/page/navigation/navigation1/coordinator.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_ui_nice/page/navigation/navigation1/animations/home_page_animator.dart'; 3 | import 'package:flutter_ui_nice/page/navigation/navigation1/widgets/menu_buttons.dart'; 4 | import 'package:flutter_ui_nice/page/navigation/common/widgets/background_common.dart'; 5 | import 'package:flutter_ui_nice/page/navigation/common/pages/home_page.dart'; 6 | 7 | class NavigationOneCoordinator extends StatefulWidget { 8 | @override 9 | _Coordinator createState() => _Coordinator(); 10 | } 11 | 12 | class _Coordinator extends State with TickerProviderStateMixin { 13 | AnimationController _controller; 14 | HomePageAnimator _animator; 15 | 16 | @override 17 | void initState() { 18 | super.initState(); 19 | _controller = AnimationController(vsync: this, duration: Duration(milliseconds: 700)); 20 | _animator = HomePageAnimator(_controller); 21 | } 22 | 23 | _onHomePressed() => _showHome(); 24 | 25 | _onChatPressed() { 26 | debugPrint("Chat Pressed"); 27 | } 28 | 29 | _onFeedPressed() { 30 | debugPrint("Feed Pressed"); 31 | } 32 | 33 | _onProfilePressed() { 34 | debugPrint("Profile Pressed"); 35 | } 36 | 37 | _onSettingsPressed() { 38 | debugPrint("settings Pressed"); 39 | } 40 | 41 | @override 42 | Widget build(BuildContext context) => Material( 43 | child: BackgroundCommon( 44 | child: Stack( 45 | children: [ 46 | Positioned( 47 | bottom: 100.0, 48 | right: 50.0, 49 | child: MenuButtons( 50 | onChatPressed: _onChatPressed, 51 | onFeedPressed: _onFeedPressed, 52 | onHomePressed: _onHomePressed, 53 | onProfilePressed: _onProfilePressed, 54 | onSettingsPressed: _onSettingsPressed, 55 | ), 56 | ), 57 | 58 | AnimatedBuilder( 59 | animation: _controller, 60 | builder: (context, widget) => Transform( 61 | alignment: Alignment.centerLeft, 62 | transform: Matrix4 63 | .translationValues(_animator.translateLeft.value, 0.0, 0.0) 64 | ..scale(_animator.scaleDown.value), 65 | child: HomePage(() => _openMenu()), 66 | ), 67 | ), 68 | ], 69 | ), 70 | ), 71 | ); 72 | 73 | Future _openMenu() async { 74 | try { 75 | await _controller.forward().orCancel; 76 | } on TickerCanceled { 77 | print("Animation Failed"); 78 | } 79 | } 80 | 81 | Future _showHome() async { 82 | try { 83 | await _controller.reverse().orCancel; 84 | } on TickerCanceled { 85 | print("Animation Failed"); 86 | } 87 | } 88 | 89 | @override 90 | void dispose() { 91 | super.dispose(); 92 | _controller.dispose(); 93 | } 94 | } -------------------------------------------------------------------------------- /lib/page/navigation/navigation1/widgets/button.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_ui_nice/const/color_const.dart'; 3 | 4 | class Button { 5 | static Widget home(VoidCallback onPressed) => 6 | _buildButton(onPressed, "HOME", Icons.home); 7 | 8 | static Widget chat(VoidCallback onPressed, {int notification}) => 9 | _buildButton(onPressed, "CHAT", Icons.chat, notification: notification); 10 | 11 | static Widget feed(VoidCallback onPressed) => 12 | _buildButton(onPressed, "FEED", Icons.rss_feed); 13 | 14 | static Widget profile(VoidCallback onPressed) => 15 | _buildButton(onPressed, "PROFILE", Icons.person); 16 | 17 | static Widget settings(VoidCallback onPressed) => 18 | _buildButton(onPressed, "SETTINGS", Icons.settings); 19 | 20 | static Widget _buildButton( 21 | VoidCallback onPressed, String title, IconData icon, 22 | {int notification}) { 23 | if (notification != null) { 24 | return Container( 25 | child: Stack( 26 | children: [ 27 | _button(onPressed, title, icon), 28 | Positioned( 29 | top: 0.0, 30 | right: 0.0, 31 | child: Container( 32 | decoration: BoxDecoration( 33 | shape: BoxShape.circle, color: Colors.redAccent), 34 | child: Padding( 35 | padding: const EdgeInsets.all(6.0), 36 | child: Text( 37 | "$notification", 38 | style: TextStyle(color: Colors.white), 39 | ), 40 | ), 41 | ), 42 | ), 43 | ], 44 | ), 45 | ); 46 | } else { 47 | return _button(onPressed, title, icon); 48 | } 49 | } 50 | 51 | static Widget _button(VoidCallback onPressed, String title, IconData icon) => 52 | ElevatedButton( 53 | style: ElevatedButton.styleFrom( 54 | backgroundColor: GREEN, 55 | shape: 56 | RoundedRectangleBorder(borderRadius: BorderRadius.circular(20.0)), 57 | ), 58 | onPressed: onPressed, 59 | child: Padding( 60 | padding: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 10.0), 61 | child: Row( 62 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 63 | children: [ 64 | Text( 65 | title, 66 | style: TextStyle( 67 | fontSize: 18.0, 68 | color: TEXT_BLACK, 69 | ), 70 | ), 71 | SizedBox( 72 | width: 5.0, 73 | ), 74 | Icon(icon) 75 | ], 76 | ), 77 | ), 78 | ); 79 | } 80 | -------------------------------------------------------------------------------- /lib/page/navigation/navigation1/widgets/menu_buttons.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_ui_nice/page/navigation/navigation1/widgets/button.dart'; 3 | 4 | class MenuButtons extends StatelessWidget { 5 | MenuButtons({this.onHomePressed, this.onChatPressed, this.onFeedPressed, this.onProfilePressed, this 6 | .onSettingsPressed}); 7 | final VoidCallback onHomePressed; 8 | final VoidCallback onChatPressed; 9 | final VoidCallback onFeedPressed; 10 | final VoidCallback onProfilePressed; 11 | final VoidCallback onSettingsPressed; 12 | 13 | List _allButtons({int notifications}) => [ 14 | Padding( 15 | padding: const EdgeInsets.only(left: 10.0, right: 30.0, bottom: 20.0), 16 | child: Button.home(onHomePressed), 17 | ), 18 | Padding( 19 | padding: const EdgeInsets.only(left: 50.0, bottom: 20.0), 20 | child: Button.chat(onChatPressed, notification: notifications), 21 | ), 22 | Padding( 23 | padding: const EdgeInsets.only(left: 8.0, bottom: 20.0), 24 | child: Button.feed(onFeedPressed), 25 | ), 26 | Padding( 27 | padding: const EdgeInsets.only(left: 50.0, bottom: 20.0), 28 | child: Button.profile(onProfilePressed), 29 | ), 30 | Button.settings(onSettingsPressed) 31 | ]; 32 | 33 | @override 34 | Widget build(BuildContext context) { 35 | return Container( 36 | child: Column( 37 | children: _allButtons(notifications: 5), 38 | ), 39 | ); 40 | } 41 | } -------------------------------------------------------------------------------- /lib/page/page_const.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 2018/12/24 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | export "home_page.dart"; 7 | export "empty_page.dart"; 8 | export 'signup/SignPageOne.dart'; 9 | export 'signup/SignPageTwo.dart'; 10 | export 'signup/SignPageFour.dart'; 11 | export 'signup/SignPageEleven.dart'; 12 | export 'signup/SignPageEight.dart'; 13 | export 'signup/SignPageFive.dart'; 14 | export 'signup/SignPageFour.dart'; 15 | export 'signup/SignPageThree.dart'; 16 | export 'signup/SignPageEleven.dart'; 17 | export 'signup/SignPageSeven.dart'; 18 | export 'signup/SignPageSix.dart'; 19 | export 'signup/SignPageNine.dart'; 20 | export 'signup/SingPageTen.dart'; 21 | 22 | //PROFILE pages 23 | export 'profile/ProfilePageOne.dart'; 24 | export 'profile/ProfilePageTwo.dart'; 25 | 26 | export 'feed/FeedPageOne.dart'; 27 | export 'feed/FeedPageTwo.dart'; 28 | export 'feed/FeedPageFour.dart'; 29 | export 'feed/feed_five_page.dart'; 30 | export 'feed/FeedPageTen.dart'; 31 | export 'feed/FeedPageEleven.dart'; 32 | export 'feed/FeedPageTwelve.dart'; 33 | export 'feed/FeedPageThirteen.dart'; 34 | export 'feed/feed_three_page.dart'; 35 | 36 | export 'shopping/ShopPageEighteen.dart'; 37 | export 'shopping/ShopPageNineteen.dart'; 38 | 39 | export 'signup/SignPageFour.dart'; 40 | export 'signup/SignPageEleven.dart'; 41 | 42 | -------------------------------------------------------------------------------- /lib/page/profile/profile_const.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by Terrance Duong on 2019/01/03 3 | /// Github: https://github.com/dndoanh 4 | /// Email: dndoanh@gmail.com 5 | /// 6 | import "package:flutter/material.dart"; 7 | class ProfileStrings { 8 | static const STRING_PROFILE = "PROFILE"; 9 | static const STRING_FOLLOW = "FOLLOW"; 10 | static const STRING_PHOTOS = "photos"; 11 | } 12 | 13 | class ProfileColors { 14 | static const COLOR_BLACK = Color(0xFF010101); 15 | static const COLOR_GREY = Color(0xFF424242); 16 | static const COLOR_WHITE = Color(0xFFF7FFE3); 17 | static const COLOR_DARK = Color(0xFF34323D); 18 | static const COLOR_YELLOW = Color(0xFFF1EA94); 19 | static const COLOR_LIGHT_ORANGE = Color(0xFFFFC3A0); 20 | static const COLOR_LIGHT_RED = Color(0xFFFFAFBD); 21 | } 22 | 23 | const CIRCLE_BUTTON_HEIGHT = 87.0; 24 | const SQUARE_BUTTON_HEIGHT = 127.0; 25 | const PHOTO_BUTTON_HEIGHT = 200.0; 26 | const REC_BUTTON_WIDTH = 255.0; 27 | const REC_BUTTON_HEIGHT = 96.0; 28 | const TOP_BAR_HEIGHT = 152.0; 29 | const TOP_BAR_GRADIENT_HEIGHT = 133.0; 30 | const BOTTOM_BAR_HEIGHT = 200.0; 31 | const ICON_BUTTON_WIDTH = 32.0; 32 | const ICON_BUTTON_HEIGHT = 32.0; 33 | 34 | const TEXT_SIZE_XXL = 50.0; 35 | const TEXT_SIZE_XL = 40.0; 36 | const TEXT_SIZE_L = 28.0; 37 | const TEXT_SIZE_M = 26.0; 38 | const TEXT_SIZE_S = 24.0; 39 | 40 | class ProfileImages { 41 | static const IMAGE_PATH = "assets/images/profile"; 42 | static const add = "$IMAGE_PATH/profile_add.png"; 43 | static const arrow_left = "$IMAGE_PATH/profile_arrow_left.png"; 44 | static const avatar = "$IMAGE_PATH/profile_avatar.png"; 45 | static const follow = "$IMAGE_PATH/profile_follow.png"; 46 | static const profile_landscape = "$IMAGE_PATH/profile_landscape.png"; 47 | static const icons_home = "$IMAGE_PATH/icon_home.png"; 48 | static const icons_stats = "$IMAGE_PATH/icon_stats.png"; 49 | static const icons_heart = "$IMAGE_PATH/icon_heart.png"; 50 | static const photos_01 = "$IMAGE_PATH/profile_photos_01.png"; 51 | static const photos_02 = "$IMAGE_PATH/profile_photos_02.png"; 52 | static const photos_03 = "$IMAGE_PATH/profile_photos_03.png"; 53 | static const photos_04 = "$IMAGE_PATH/profile_photos_04.png"; 54 | static const photos_05 = "$IMAGE_PATH/profile_photos_05.png"; 55 | static const photos_06 = "$IMAGE_PATH/profile_photos_06.png"; 56 | static const photos_07 = "$IMAGE_PATH/profile_photos_07.png"; 57 | static const photos_08 = "$IMAGE_PATH/profile_photos_08.png"; 58 | } 59 | -------------------------------------------------------------------------------- /lib/page/profile/top_bar.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by Terrance Duong on 2019/01/03 3 | /// Github: https://github.com/dndoanh 4 | /// Email: dndoanh@gmail.com 5 | /// 6 | import "package:flutter/material.dart"; 7 | import 'profile_const.dart'; 8 | import 'package:flutter_ui_nice/const/color_const.dart'; 9 | import 'package:flutter_ui_nice/util/SizeUtil.dart'; 10 | 11 | class TopBar extends StatelessWidget { 12 | TopBar( 13 | {this.leftIcon, 14 | this.rightIcon, 15 | this.title, 16 | this.onLeftIconPressed, 17 | this.onRightIconPressed}); 18 | 19 | final String leftIcon; 20 | final String rightIcon; 21 | final String title; 22 | final Function() onLeftIconPressed; 23 | final Function() onRightIconPressed; 24 | 25 | @override 26 | Widget build(BuildContext context) { 27 | final icons = []; 28 | if (leftIcon != null) { 29 | icons.add(InkWell( 30 | onTap: onLeftIconPressed, 31 | child: Image.asset(leftIcon, 32 | width: SizeUtil.getAxisY(CIRCLE_BUTTON_HEIGHT), 33 | height: SizeUtil.getAxisY(CIRCLE_BUTTON_HEIGHT)), 34 | )); 35 | } 36 | if (rightIcon != null) { 37 | icons.add(InkWell( 38 | onTap: onRightIconPressed, 39 | child: Image.asset(rightIcon, 40 | width: SizeUtil.getAxisY(CIRCLE_BUTTON_HEIGHT), 41 | height: SizeUtil.getAxisY(CIRCLE_BUTTON_HEIGHT)), 42 | )); 43 | } 44 | 45 | return Container( 46 | constraints: 47 | BoxConstraints.expand(height: SizeUtil.getAxisY(TOP_BAR_HEIGHT)), 48 | child: Stack( 49 | children: [ 50 | Container( 51 | constraints: BoxConstraints.expand( 52 | height: SizeUtil.getAxisY(TOP_BAR_GRADIENT_HEIGHT)), 53 | decoration: 54 | BoxDecoration(gradient: LinearGradient(colors: [YELLOW, BLUE])), 55 | ), 56 | Center( 57 | child: Padding( 58 | padding: EdgeInsets.only(top: SizeUtil.getAxisY(30.0)), 59 | child: Text( 60 | this.title.toUpperCase(), 61 | style: TextStyle( 62 | color: TEXT_BLACK, 63 | fontSize: SizeUtil.getAxisBoth(TEXT_SIZE_L), 64 | fontWeight: FontWeight.w700), 65 | ), 66 | ), 67 | ), 68 | Container( 69 | padding: EdgeInsets.symmetric(horizontal: SizeUtil.getAxisX(24.0)), 70 | alignment: AlignmentDirectional.bottomStart, 71 | child: Row( 72 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 73 | children: icons), 74 | ) 75 | ], 76 | ), 77 | ); 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /lib/page/shopping/ShopPageOne.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 2018/12/25 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | import "package:flutter/material.dart"; 7 | 8 | class ShopPageOne extends StatefulWidget { 9 | @override 10 | _ShopState createState() => _ShopState(); 11 | } 12 | 13 | class _ShopState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text("Shopping one"), 19 | ), 20 | body: Text("Shopping page one"), 21 | ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/page/signup/SignPageFour.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by Yasinilhan on 18-12-24 3 | /// Email: yasinilhan61@gmail.com 4 | /// 5 | import 'package:flutter/material.dart'; 6 | import 'package:flutter_ui_nice/const/color_const.dart'; 7 | import 'package:flutter_ui_nice/const/gradient_const.dart'; 8 | import 'package:flutter_ui_nice/const/images_const.dart'; 9 | import 'package:flutter_ui_nice/const/size_const.dart'; 10 | import 'package:flutter_ui_nice/const/string_const.dart'; 11 | import 'package:flutter_ui_nice/page/signup/widgets/signup_arrow_button.dart'; 12 | 13 | class SignPageFour extends StatefulWidget { 14 | @override 15 | _SignPageFourState createState() => _SignPageFourState(); 16 | } 17 | 18 | class _SignPageFourState extends State { 19 | TextEditingController _username = TextEditingController(); 20 | TextEditingController _password = TextEditingController(); 21 | 22 | @override 23 | Widget build(BuildContext context) { 24 | final _media = MediaQuery.of(context).size; 25 | 26 | return Scaffold( 27 | body: Container( 28 | height: double.infinity, 29 | width: double.infinity, 30 | decoration: BoxDecoration( 31 | gradient: SIGNUP_BACKGROUND, 32 | ), 33 | child: SingleChildScrollView( 34 | physics: BouncingScrollPhysics(), 35 | child: Stack( 36 | children: [ 37 | Column( 38 | children: [ 39 | Padding( 40 | padding: const EdgeInsets.symmetric( 41 | vertical: 60.0, horizontal: 40), 42 | child: Column( 43 | crossAxisAlignment: CrossAxisAlignment.start, 44 | children: [ 45 | Center( 46 | child: Image.asset( 47 | SignUpImagePath.SignUpLogo, 48 | height: _media.height / 7, 49 | ), 50 | ), 51 | SizedBox( 52 | height: 30, 53 | ), 54 | Text( 55 | "WELCOME BACK!", 56 | style: TextStyle( 57 | letterSpacing: 4, 58 | fontFamily: "Montserrat", 59 | fontWeight: FontWeight.bold, 60 | fontSize: TEXT_LARGE_SIZE, 61 | ), 62 | ), 63 | SizedBox(height: 30), 64 | Text( 65 | 'Log in', 66 | style: TextStyle( 67 | fontFamily: "Montserrat", 68 | fontWeight: FontWeight.w200, 69 | fontSize: 40), 70 | ), 71 | Text( 72 | 'to continue.', 73 | style: TextStyle( 74 | fontFamily: "Montserrat", 75 | fontWeight: FontWeight.w200, 76 | fontSize: 40), 77 | ), 78 | SizedBox( 79 | height: 50, 80 | ), 81 | Container( 82 | height: _media.height / 3.8, 83 | decoration: BoxDecoration( 84 | gradient: SIGNUP_CARD_BACKGROUND, 85 | borderRadius: BorderRadius.circular(15), 86 | boxShadow: [ 87 | BoxShadow( 88 | color: Colors.black12, 89 | blurRadius: 15, 90 | spreadRadius: 8, 91 | ), 92 | ], 93 | ), 94 | child: Padding( 95 | padding: const EdgeInsets.all(30.0), 96 | child: Column( 97 | children: [ 98 | Expanded( 99 | child: inputText("USERNAME", 100 | 'hristov123@gmail.com', _username, false), 101 | ), 102 | Divider( 103 | height: 5, 104 | color: Colors.black, 105 | ), 106 | Expanded( 107 | child: inputText( 108 | "PASSWORD", '******', _password, true)), 109 | ], 110 | ), 111 | ), 112 | ), 113 | ], 114 | ), 115 | ), 116 | Row( 117 | mainAxisAlignment: MainAxisAlignment.center, 118 | crossAxisAlignment: CrossAxisAlignment.center, 119 | children: [ 120 | Text( 121 | StringConst.SIGN_UP_TEXT, 122 | style: TextStyle(color: MAIN_COLOR), 123 | ), 124 | SizedBox( 125 | width: 5, 126 | ), 127 | GestureDetector( 128 | onTap: () => print("Sign Up Tapped"), 129 | child: Text(StringConst.SIGN_UP), 130 | ), 131 | ], 132 | ), 133 | SizedBox( 134 | height: 50, 135 | ) 136 | ], 137 | ), 138 | Positioned( 139 | bottom: _media.height / 6.3, 140 | right: 15, 141 | child: SignUpArrowButton( 142 | icon: IconData(0xe901, fontFamily: 'Icons'), 143 | iconSize: 9, 144 | onTap: () => print("Signup Tapped"), 145 | ), 146 | ), 147 | ], 148 | ), 149 | ), 150 | ), 151 | ); 152 | } 153 | 154 | Widget inputText( 155 | String fieldName, 156 | String hintText, 157 | TextEditingController controller, 158 | bool obSecure, 159 | ) { 160 | return TextField( 161 | style: TextStyle(height: 1.3), 162 | controller: controller, 163 | decoration: InputDecoration( 164 | hintText: hintText, 165 | labelText: fieldName, 166 | labelStyle: TextStyle( 167 | fontSize: TEXT_NORMAL_SIZE, 168 | fontFamily: "Montserrat", 169 | fontWeight: FontWeight.w400, 170 | letterSpacing: 1, 171 | height: 0, 172 | ), 173 | border: InputBorder.none, 174 | ), 175 | obscureText: obSecure, 176 | ); 177 | } 178 | } 179 | -------------------------------------------------------------------------------- /lib/page/signup/SignPageNine.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_ui_nice/page/signup/widgets/signup_apbar.dart'; 3 | import '../../const/gradient_const.dart'; 4 | import '../../const/styles.dart'; 5 | import 'widgets/signup_profile_image_picker.dart'; 6 | import 'widgets/signup_button.dart'; 7 | 8 | class SignPageNine extends StatelessWidget { 9 | @override 10 | Widget build(BuildContext context) { 11 | final double statusbarHeight = MediaQuery.of(context).padding.top; 12 | 13 | // TODO: implement build 14 | return Scaffold( 15 | appBar: SignupApbar( 16 | title: "Sign Up", 17 | ), 18 | body: SingleChildScrollView( 19 | physics: BouncingScrollPhysics(), 20 | child: Container( 21 | height: MediaQuery.of(context).size.height - 22 | kToolbarHeight - 23 | statusbarHeight, 24 | decoration: BoxDecoration(gradient: SIGNUP_BACKGROUND), 25 | child: Align( 26 | alignment: Alignment.topCenter, 27 | child: Stack( 28 | children: [ 29 | Container( 30 | margin: EdgeInsets.only( 31 | top: 80.0, left: 48.0, right: 48.0, bottom: 48.0), 32 | decoration: BoxDecoration( 33 | boxShadow: [ 34 | BoxShadow( 35 | color: Colors.black12, 36 | blurRadius: 15, 37 | spreadRadius: 0, 38 | offset: Offset(0.0, 32.0)), 39 | ], 40 | borderRadius: BorderRadius.circular(16.0), 41 | gradient: LinearGradient( 42 | begin: FractionalOffset(0.0, 0.4), 43 | end: FractionalOffset(0.9, 0.7), 44 | // Add one stop for each color. Stops should increase from 0 to 1 45 | stops: [ 46 | 0.2, 47 | 0.9 48 | ], 49 | colors: [ 50 | Color(0xffFFC3A0), 51 | Color(0xffFFAFBD), 52 | ])), 53 | child: Container( 54 | margin: EdgeInsets.only( 55 | top: 180.0, left: 24.0, right: 24.0, bottom: 16.0), 56 | child: ListView( 57 | shrinkWrap: true, 58 | children: [ 59 | textField('NAME', false), 60 | textField('MAIL', false), 61 | textField('PASSWORD', true), 62 | Padding( 63 | padding: const EdgeInsets.only(top: 36.0), 64 | child: Text('1/2', 65 | style: TextStyle( 66 | letterSpacing: 8.0, 67 | fontWeight: FontWeight.bold)), 68 | ) 69 | ], 70 | ), 71 | ), 72 | ), 73 | ProfileImagePicker( 74 | margin: 75 | EdgeInsets.only(left: 32.0, right: 72.0, top: 56.0)), 76 | Positioned( 77 | bottom: 16.0, 78 | right: 18.9, 79 | child: signupButton('NEXT'), 80 | ), 81 | ], 82 | ), 83 | ), 84 | ), 85 | ), 86 | ); 87 | } 88 | } 89 | 90 | TextField textField(String labelText, bool obscureText) { 91 | return TextField( 92 | style: hintAndValueStyle, 93 | obscureText: obscureText, 94 | decoration: new InputDecoration( 95 | labelText: labelText, 96 | labelStyle: TextStyle( 97 | color: Color(0xff353535), 98 | fontWeight: FontWeight.normal, 99 | fontSize: 18.0)), 100 | ); 101 | } 102 | -------------------------------------------------------------------------------- /lib/page/signup/SignPageOne.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 2018/12/25 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | import "package:flutter/material.dart"; 7 | import '../../const/gradient_const.dart'; 8 | import '../../const/styles.dart'; 9 | 10 | class SignPageOne extends StatelessWidget { 11 | @override 12 | Widget build(BuildContext context) { 13 | return Scaffold( 14 | body: Container( 15 | padding: EdgeInsets.only(top: 64.0), 16 | decoration: BoxDecoration(gradient: SIGNUP_BACKGROUND), 17 | child: ListView( 18 | physics: BouncingScrollPhysics(), 19 | children: [ 20 | Center( 21 | child: Image.asset( 22 | 'assets/images/signup/logo_signup.png', 23 | width: 100.0, 24 | height: 100.0, 25 | fit: BoxFit.cover, 26 | ), 27 | ), 28 | headlinesWidget(), 29 | emailTextFieldWidget(), 30 | passwordTextFieldWidget(), 31 | loginButtonWidget(), 32 | signupWidget() 33 | ], 34 | ), 35 | ), 36 | ); 37 | } 38 | } 39 | 40 | Widget signupWidget() { 41 | return Container( 42 | margin: EdgeInsets.only(left: 48.0, top: 32.0), 43 | child: Row( 44 | children: [ 45 | Text( 46 | 'Don\'t have an account?', 47 | style: TextStyle(fontFamily: 'Montserrat'), 48 | ), 49 | TextButton( 50 | onPressed: () { 51 | print('Sign Up button pressed'); 52 | }, 53 | child: Text( 54 | 'Sign Up', 55 | style: TextStyle( 56 | color: Color(0xff353535), 57 | decoration: TextDecoration.underline, 58 | fontWeight: FontWeight.bold, 59 | fontFamily: 'Montserrat'), 60 | ), 61 | ) 62 | ], 63 | ), 64 | ); 65 | } 66 | 67 | Widget passwordTextFieldWidget() { 68 | return Container( 69 | margin: EdgeInsets.only(left: 32.0, right: 16.0), 70 | child: TextField( 71 | style: hintAndValueStyle, 72 | obscureText: true, 73 | decoration: new InputDecoration( 74 | fillColor: Color(0x3305756D), 75 | filled: true, 76 | contentPadding: new EdgeInsets.fromLTRB(40.0, 30.0, 10.0, 10.0), 77 | border: OutlineInputBorder( 78 | borderRadius: new BorderRadius.circular(12.0), 79 | borderSide: BorderSide.none), 80 | hintText: 'Password', 81 | hintStyle: hintAndValueStyle), 82 | ), 83 | ); 84 | } 85 | 86 | Widget emailTextFieldWidget() { 87 | return Container( 88 | margin: EdgeInsets.only(left: 16.0, right: 32.0, top: 32.0), 89 | decoration: BoxDecoration( 90 | boxShadow: [ 91 | BoxShadow( 92 | color: Colors.black12, 93 | blurRadius: 15, 94 | spreadRadius: 0, 95 | offset: Offset(0.0, 16.0)), 96 | ], 97 | borderRadius: new BorderRadius.circular(12.0), 98 | gradient: LinearGradient( 99 | begin: FractionalOffset(0.0, 0.4), 100 | end: FractionalOffset(0.9, 0.7), 101 | // Add one stop for each color. Stops should increase from 0 to 1 102 | stops: [ 103 | 0.2, 104 | 0.9 105 | ], 106 | colors: [ 107 | Color(0xffFFC3A0), 108 | Color(0xffFFAFBD), 109 | ])), 110 | child: TextField( 111 | style: hintAndValueStyle, 112 | decoration: new InputDecoration( 113 | suffixIcon: Icon(IconData(0xe902, fontFamily: 'Icons'), 114 | color: Color(0xff35AA90), size: 10.0), 115 | contentPadding: new EdgeInsets.fromLTRB(40.0, 30.0, 10.0, 10.0), 116 | border: OutlineInputBorder( 117 | borderRadius: new BorderRadius.circular(12.0), 118 | borderSide: BorderSide.none), 119 | hintText: 'Email', 120 | hintStyle: hintAndValueStyle), 121 | ), 122 | ); 123 | } 124 | 125 | Widget headlinesWidget() { 126 | return Container( 127 | margin: EdgeInsets.only(left: 48.0, top: 32.0), 128 | child: Column( 129 | crossAxisAlignment: CrossAxisAlignment.start, 130 | children: [ 131 | Text( 132 | 'WELCOME BACK!', 133 | textAlign: TextAlign.left, 134 | style: TextStyle( 135 | letterSpacing: 3, 136 | fontSize: 20.0, 137 | fontFamily: 'Montserrat', 138 | fontWeight: FontWeight.bold), 139 | ), 140 | Container( 141 | margin: EdgeInsets.only(top: 48.0), 142 | child: Text( 143 | 'Log in \nto continue.', 144 | textAlign: TextAlign.left, 145 | style: TextStyle( 146 | letterSpacing: 3, 147 | fontSize: 32.0, 148 | fontFamily: 'Montserrat', 149 | ), 150 | ), 151 | ) 152 | ], 153 | ), 154 | ); 155 | } 156 | 157 | Widget loginButtonWidget() { 158 | return Container( 159 | margin: EdgeInsets.only(left: 32.0, top: 32.0), 160 | child: Row( 161 | children: [ 162 | InkWell( 163 | onTap: () {}, 164 | child: Container( 165 | padding: EdgeInsets.symmetric(horizontal: 36.0, vertical: 16.0), 166 | decoration: BoxDecoration( 167 | boxShadow: [ 168 | BoxShadow( 169 | color: Colors.black12, 170 | blurRadius: 15, 171 | spreadRadius: 0, 172 | offset: Offset(0.0, 32.0)), 173 | ], 174 | borderRadius: new BorderRadius.circular(36.0), 175 | gradient: LinearGradient(begin: FractionalOffset.centerLeft, 176 | // Add one stop for each color. Stops should increase from 0 to 1 177 | stops: [ 178 | 0.2, 179 | 1 180 | ], colors: [ 181 | Color(0xff000000), 182 | Color(0xff434343), 183 | ])), 184 | child: Text( 185 | 'LOGIN', 186 | style: TextStyle( 187 | color: Color(0xffF1EA94), 188 | fontWeight: FontWeight.bold, 189 | fontFamily: 'Montserrat'), 190 | ), 191 | ), 192 | ), 193 | ], 194 | ), 195 | ); 196 | } 197 | -------------------------------------------------------------------------------- /lib/page/signup/SignPageTwo.dart: -------------------------------------------------------------------------------- 1 | import "package:flutter/material.dart"; 2 | 3 | import '../../const/gradient_const.dart'; 4 | import 'widgets/date_picker.dart'; 5 | import 'widgets/gender_picker.dart'; 6 | import 'widgets/location_picker.dart'; 7 | import 'widgets/signup_apbar.dart'; 8 | import 'widgets/signup_profile_image_picker.dart'; 9 | import 'widgets/signup_button.dart'; 10 | 11 | class SignPageTwo extends StatelessWidget { 12 | @override 13 | Widget build(BuildContext context) { 14 | return Scaffold( 15 | appBar: SignupApbar( 16 | title: 'CREATE ACCOUNT', 17 | ), 18 | body: Container( 19 | padding: EdgeInsets.only(top: 64.0), 20 | decoration: BoxDecoration(gradient: SIGNUP_BACKGROUND), 21 | child: ListView( 22 | physics: BouncingScrollPhysics(), 23 | children: [ 24 | Center( 25 | child: ProfileImagePicker( 26 | margin: EdgeInsets.only(top: 32.0, left: 32.0, right: 32.0), 27 | ), 28 | ), 29 | DatePicker(), 30 | GenderPicker(), 31 | LocationPicker(), 32 | Container( 33 | margin: EdgeInsets.only(top: 32.0), 34 | child: Center(child: signupButton('NEXT'))) 35 | ], 36 | ), 37 | ), 38 | ); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /lib/page/signup/widgets/date_picker.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'dart:async'; 3 | import 'package:intl/intl.dart'; 4 | 5 | class DatePicker extends StatefulWidget { 6 | @override 7 | _DatePickerState createState() => _DatePickerState(); 8 | } 9 | 10 | class _DatePickerState extends State { 11 | DateTime date = DateTime.now(); 12 | 13 | Future _selectDate(BuildContext context) async { 14 | DateTime picker = await showDatePicker( 15 | context: context, 16 | initialDate: date, 17 | firstDate: new DateTime(1900), 18 | lastDate: new DateTime.now()); 19 | 20 | if (picker != null) { 21 | setState(() { 22 | date = picker; 23 | }); 24 | } 25 | } 26 | 27 | @override 28 | Widget build(BuildContext context) { 29 | return InkWell( 30 | onTap: () => _selectDate(context), 31 | child: Container( 32 | margin: EdgeInsets.only(left: 32.0, right: 16.0), 33 | padding: EdgeInsets.symmetric(horizontal: 32.0, vertical: 24.0), 34 | decoration: BoxDecoration( 35 | color: Color(0x3305756D), 36 | borderRadius: BorderRadius.circular(12.0)), 37 | child: Row( 38 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 39 | children: [ 40 | Text( 41 | 'BIRTHDAY', 42 | style: TextStyle(letterSpacing: 2.0, fontFamily: 'Montserrat'), 43 | ), 44 | Text( 45 | new DateFormat('d MMM y').format(date), 46 | style: TextStyle( 47 | letterSpacing: 2.0, 48 | color: Color(0xff353535), 49 | fontWeight: FontWeight.bold, 50 | fontFamily: 'Montserrat'), 51 | ) 52 | ], 53 | ), 54 | ), 55 | ); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /lib/page/signup/widgets/gender_picker.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class GenderPicker extends StatefulWidget { 4 | @override 5 | _GenderPickerState createState() => _GenderPickerState(); 6 | } 7 | 8 | class _GenderPickerState extends State { 9 | bool _isFemale = false; 10 | 11 | _selectGender(bool isFemale) { 12 | setState(() { 13 | _isFemale = isFemale; 14 | }); 15 | } 16 | 17 | @override 18 | Widget build(BuildContext context) { 19 | return Container( 20 | margin: EdgeInsets.only(left: 16.0, right: 32.0), 21 | padding: EdgeInsets.symmetric(horizontal: 32.0, vertical: 24.0), 22 | decoration: BoxDecoration( 23 | boxShadow: [ 24 | BoxShadow( 25 | color: Colors.black12, 26 | blurRadius: 15, 27 | spreadRadius: 0, 28 | offset: Offset(0.0, 16.0)), 29 | ], 30 | borderRadius: new BorderRadius.circular(12.0), 31 | gradient: LinearGradient( 32 | begin: FractionalOffset(0.0, 0.4), 33 | end: FractionalOffset(0.9, 0.7), 34 | // Add one stop for each color. Stops should increase from 0 to 1 35 | stops: [ 36 | 0.2, 37 | 0.9 38 | ], 39 | colors: [ 40 | Color(0xffFFC3A0), 41 | Color(0xffFFAFBD), 42 | ])), 43 | child: Row( 44 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 45 | children: [ 46 | Text( 47 | 'GENDER', 48 | style: TextStyle(letterSpacing: 2.0, fontFamily: 'Montserrat'), 49 | ), 50 | Row( 51 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 52 | children: [ 53 | Padding( 54 | padding: const EdgeInsets.only(right: 16.0), 55 | child: InkWell( 56 | onTap: () => _selectGender(false), 57 | child: Opacity( 58 | opacity: _isFemale ? 0.5 : 1, 59 | child: Text( 60 | 'Male', 61 | style: TextStyle( 62 | letterSpacing: 3.0, 63 | color: Color(0xff353535), 64 | fontWeight: FontWeight.bold, 65 | fontFamily: 'Montserrat'), 66 | ), 67 | ), 68 | ), 69 | ), 70 | InkWell( 71 | onTap: () => _selectGender(true), 72 | child: Opacity( 73 | opacity: _isFemale ? 1 : 0.5, 74 | child: Text( 75 | 'Female', 76 | style: TextStyle( 77 | letterSpacing: 3.0, 78 | color: Color(0xff353535), 79 | fontWeight: FontWeight.bold, 80 | fontFamily: 'Montserrat'), 81 | ), 82 | ), 83 | ) 84 | ], 85 | ) 86 | ], 87 | ), 88 | ); 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /lib/page/signup/widgets/location_picker.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'dart:async'; 3 | import 'package:google_places_picker/google_places_picker.dart'; 4 | 5 | class LocationPicker extends StatefulWidget { 6 | @override 7 | _LocationPickerState createState() => _LocationPickerState(); 8 | } 9 | 10 | class _LocationPickerState extends State { 11 | Place _place; 12 | 13 | Future _selectPlace(BuildContext context) async { 14 | try { 15 | Place _picker = await PluginGooglePlacePicker.showAutocomplete(); 16 | setState(() { 17 | _place = _picker; 18 | }); 19 | } catch (e) {} 20 | } 21 | 22 | @override 23 | Widget build(BuildContext context) { 24 | return InkWell( 25 | onTap: () => _selectPlace(context), 26 | child: Container( 27 | margin: EdgeInsets.only(left: 32.0, right: 16.0), 28 | padding: EdgeInsets.symmetric(horizontal: 32.0, vertical: 24.0), 29 | decoration: BoxDecoration( 30 | color: Color(0x3305756D), 31 | borderRadius: BorderRadius.circular(12.0)), 32 | child: Row( 33 | mainAxisSize: MainAxisSize.min, 34 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 35 | children: [ 36 | Text( 37 | 'LOCATION', 38 | style: TextStyle(letterSpacing: 2.0, fontFamily: 'Montserrat'), 39 | ), 40 | Flexible( 41 | child: Padding( 42 | padding: const EdgeInsets.only(left: 32.0), 43 | child: Text( 44 | _place != null ? _place.name : 'Frankfurt', 45 | style: TextStyle( 46 | letterSpacing: 2.0, 47 | color: Color(0xff353535), 48 | fontSize: 12.0, 49 | fontWeight: FontWeight.bold, 50 | fontFamily: 'Montserrat'), 51 | overflow: TextOverflow.fade, 52 | ), 53 | ), 54 | ) 55 | ], 56 | ), 57 | ), 58 | ); 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /lib/page/signup/widgets/signup_6_box.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class SignupSixBox extends StatefulWidget { 4 | final double boxHeight; 5 | final double boxWidth; 6 | final double boxPadding; 7 | final LinearGradient boxGradient; 8 | final Widget child; 9 | 10 | SignupSixBox( 11 | {Key key, 12 | this.boxHeight, 13 | this.boxWidth, 14 | this.boxPadding, 15 | this.boxGradient, 16 | this.child}) 17 | : super(key: key); 18 | @override 19 | _SignupSixBoxState createState() => _SignupSixBoxState(); 20 | } 21 | 22 | class _SignupSixBoxState extends State { 23 | @override 24 | Widget build(BuildContext context) { 25 | final _media = MediaQuery.of(context).size; 26 | return Padding( 27 | padding: EdgeInsets.only(right: widget.boxPadding), 28 | child: AnimatedContainer( 29 | duration: Duration(milliseconds: 400), 30 | alignment: Alignment.bottomLeft, 31 | height: (_media.height / 2) + widget.boxHeight, 32 | width: _media.width, 33 | decoration: BoxDecoration( 34 | gradient: widget.boxGradient, 35 | borderRadius: BorderRadius.only( 36 | bottomRight: Radius.circular(15), 37 | ), 38 | boxShadow: [ 39 | BoxShadow( 40 | color: Colors.black26, 41 | blurRadius: 20, 42 | spreadRadius: 0, 43 | offset: Offset(0, 10), 44 | ), 45 | ], 46 | ), 47 | child: widget.child, 48 | ), 49 | ); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /lib/page/signup/widgets/signup_apbar.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_ui_nice/const/color_const.dart'; 3 | import 'package:flutter_ui_nice/const/icons.dart'; 4 | import 'package:flutter_ui_nice/page/signup/widgets/signup_arrow_button.dart'; 5 | 6 | class SignupApbar extends StatelessWidget implements PreferredSizeWidget { 7 | final String title; 8 | SignupApbar({this.title}); 9 | @override 10 | Widget build(BuildContext context) { 11 | final double statusbarHeight = MediaQuery.of(context).padding.top; 12 | 13 | return Container( 14 | padding: EdgeInsets.only(top: statusbarHeight), 15 | decoration: BoxDecoration( 16 | gradient: LinearGradient( 17 | begin: FractionalOffset(0.5, 0.0), end: FractionalOffset(0.6, 0.8), 18 | // Add one stop for each color. Stops should increase from 0 to 1 19 | stops: [0.0, 0.9], colors: [YELLOW, BLUE], 20 | )), 21 | child: NavigationToolbar( 22 | leading: Align( 23 | alignment: Alignment(-0.5, 4), 24 | child: SignUpArrowButton( 25 | onTap: () => Navigator.maybePop(context), 26 | icon: IconData( 27 | arrow_left, 28 | fontFamily: "Icons", 29 | ), 30 | iconSize: 9, 31 | height: 48, 32 | width: 48, 33 | ), 34 | ), 35 | centerMiddle: true, 36 | middle: Text( 37 | title, 38 | style: TextStyle(fontWeight: FontWeight.bold), 39 | ), 40 | ), 41 | ); 42 | } 43 | 44 | @override 45 | Size get preferredSize => Size.fromHeight(kToolbarHeight); 46 | } 47 | -------------------------------------------------------------------------------- /lib/page/signup/widgets/signup_arrow_button.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class SignUpArrowButton extends StatelessWidget { 4 | final IconData icon; 5 | final Function onTap; 6 | final double iconSize; 7 | final double height; 8 | final double width; 9 | final Color iconColor; 10 | 11 | SignUpArrowButton({ 12 | this.icon, 13 | this.iconSize, 14 | this.onTap, 15 | this.height = 50.0, 16 | this.width = 50.0, 17 | this.iconColor = const Color(0xFFdbedb0), 18 | }); 19 | 20 | @override 21 | Widget build(BuildContext context) { 22 | return InkWell( 23 | onTap: onTap, 24 | child: Container( 25 | height: height, 26 | width: width, 27 | decoration: BoxDecoration( 28 | shape: BoxShape.circle, 29 | boxShadow: [ 30 | BoxShadow( 31 | color: Colors.black12, 32 | blurRadius: 15, 33 | spreadRadius: 0, 34 | offset: Offset(0.0, 16.0)), 35 | ], 36 | gradient: LinearGradient(begin: FractionalOffset.centerLeft, 37 | // Add one stop for each color. Stops should increase from 0 to 1 38 | stops: [ 39 | 0.2, 40 | 1 41 | ], colors: [ 42 | Color(0xff000000), 43 | Color(0xff434343), 44 | ]), 45 | ), 46 | child: Icon( 47 | icon, 48 | size: iconSize, 49 | color: iconColor, 50 | ), 51 | ), 52 | ); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /lib/page/signup/widgets/signup_button.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | Widget signupButton(title) { 4 | return InkWell( 5 | onTap: () {}, 6 | child: Container( 7 | padding: EdgeInsets.symmetric(horizontal: 48.0, vertical: 18.0), 8 | decoration: BoxDecoration( 9 | boxShadow: [ 10 | BoxShadow( 11 | color: Colors.black12, 12 | blurRadius: 15, 13 | spreadRadius: 0, 14 | offset: Offset(0.0, 32.0)), 15 | ], 16 | borderRadius: new BorderRadius.circular(36.0), 17 | gradient: LinearGradient(begin: FractionalOffset.centerLeft, 18 | // Add one stop for each color. Stops should increase from 0 to 1 19 | stops: [ 20 | 0.2, 21 | 1 22 | ], colors: [ 23 | Color(0xff000000), 24 | Color(0xff434343), 25 | ])), 26 | child: Text( 27 | title, 28 | style: TextStyle( 29 | color: Color(0xffF1EA94), 30 | fontWeight: FontWeight.bold, 31 | fontFamily: 'Montserrat'), 32 | ), 33 | ), 34 | ); 35 | } 36 | -------------------------------------------------------------------------------- /lib/page/signup/widgets/signup_const.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_ui_nice/const/color_const.dart'; 3 | 4 | const LinearGradient SIGNUP_SIX_GOOGLEP_BG = LinearGradient( 5 | begin: FractionalOffset.centerLeft, 6 | end: FractionalOffset.centerRight, 7 | stops: [0.2, 0.8], 8 | colors: [ 9 | SIGNUP_LIGHT_RED, 10 | Color(0xFFf194a2), 11 | ], 12 | ); 13 | 14 | const LinearGradient SIGNUP_SIX_TWITTER_BG = LinearGradient( 15 | begin: FractionalOffset.centerLeft, 16 | end: FractionalOffset.centerRight, 17 | // Add one stop for each color. Stops should increase from 0 to 1 18 | stops: [0.2, 0.6], 19 | colors: [ 20 | Color(0xFFc2e9fb), 21 | Color(0xFFa1c4fd), 22 | ], 23 | ); 24 | 25 | const LinearGradient SIGNUP_SIX_FACEBOOK_BG = LinearGradient( 26 | begin: FractionalOffset.bottomLeft, 27 | end: FractionalOffset.topRight, 28 | // Add one stop for each color. Stops should increase from 0 to 1 29 | stops: [0.1, 0.3], 30 | colors: [ 31 | Color(0xffe0c3fc), 32 | Color(0xff8ec5fc), 33 | ], 34 | ); 35 | const LinearGradient SIGNUP_SIX_SIGNUP_BG = LinearGradient( 36 | begin: FractionalOffset.centerLeft, 37 | end: FractionalOffset.centerRight, 38 | stops: [0.1, 0.8], 39 | colors: [YELLOW, BLUE], 40 | ); 41 | -------------------------------------------------------------------------------- /lib/page/signup/widgets/signup_profile_image_picker.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:image_picker/image_picker.dart'; 3 | import 'dart:io'; 4 | import 'dart:async'; 5 | import '../../../const/icons.dart'; 6 | 7 | class ProfileImagePicker extends StatefulWidget { 8 | final margin; 9 | 10 | ProfileImagePicker({this.margin, Key key}) : super(key: key); 11 | 12 | @override 13 | _ProfileImagePickerState createState() => _ProfileImagePickerState(); 14 | } 15 | 16 | class _ProfileImagePickerState extends State { 17 | File _image; 18 | 19 | Future getImage() async { 20 | try { 21 | File image = await ImagePicker.pickImage(source: ImageSource.camera); 22 | 23 | setState(() { 24 | _image = image; 25 | }); 26 | } catch (e) {} 27 | } 28 | 29 | @override 30 | Widget build(BuildContext context) { 31 | return Container( 32 | margin: widget.margin, 33 | child: Stack( 34 | alignment: Alignment.topRight, 35 | children: [ 36 | Container( 37 | width: 260.0, 38 | height: 200.0, 39 | decoration: BoxDecoration( 40 | boxShadow: [ 41 | BoxShadow( 42 | color: Colors.black12, 43 | blurRadius: 15, 44 | spreadRadius: 0, 45 | offset: Offset(0.0, 16.0)), 46 | ], 47 | ), 48 | child: ClipRRect( 49 | borderRadius: BorderRadius.circular(16.0), 50 | child: _image != null 51 | ? Image.file( 52 | _image, 53 | fit: BoxFit.contain, 54 | ) 55 | : Image.asset( 56 | 'assets/images/signup/signup_page_9_profile.png', 57 | fit: BoxFit.fill, 58 | ), 59 | ), 60 | ), 61 | IconButton( 62 | onPressed: () async { 63 | await getImage(); 64 | }, 65 | icon: Icon( 66 | IconData(camera, fontFamily: 'Icons'), 67 | color: Color(0xffDBEDAF), 68 | ), 69 | ) 70 | ], 71 | ), 72 | ); 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /lib/page/statistics/StatisticPageOne.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 2018/12/25 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | import "package:flutter/material.dart"; 7 | 8 | class StatisticPageOne extends StatefulWidget { 9 | @override 10 | _StatisticOneState createState() => _StatisticOneState(); 11 | } 12 | 13 | class _StatisticOneState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text("Sign up one"), 19 | ), 20 | body: Text("Sign up page one"), 21 | ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/page/walkthrough/WalkThPageOne.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 2018/12/25 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | import "package:flutter/material.dart"; 7 | 8 | class WalkThPageOne extends StatefulWidget { 9 | @override 10 | _WalkThState createState() => _WalkThState(); 11 | } 12 | 13 | class _WalkThState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text("Walk through one"), 19 | ), 20 | body: Text("Walk through page one"), 21 | ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/util/GradientUtil.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 2018/12/28 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | import "package:flutter/material.dart"; 7 | import 'package:flutter_ui_nice/const/color_const.dart'; 8 | 9 | class GradientUtil { 10 | static LinearGradient _getLinearGradient(Color left, Color right, 11 | {begin = AlignmentDirectional.centerStart, 12 | end = AlignmentDirectional.centerEnd, 13 | opacity = 1.0}) => 14 | LinearGradient( 15 | colors: [ 16 | left.withOpacity(opacity), 17 | right.withOpacity(opacity), 18 | ], 19 | begin: begin, 20 | end: end, 21 | ); 22 | 23 | static LinearGradient yellowGreen( 24 | {begin = AlignmentDirectional.centerStart, 25 | end = AlignmentDirectional.centerEnd, 26 | opacity = 1.0}) => 27 | _getLinearGradient(YELLOW, GREEN, 28 | begin: begin, end: end, opacity: opacity); 29 | 30 | static LinearGradient red( 31 | {begin = AlignmentDirectional.centerStart, 32 | end = AlignmentDirectional.centerEnd, 33 | opacity = 1.0}) => 34 | _getLinearGradient(RED_LIGHT, RED, 35 | begin: begin, end: end, opacity: opacity); 36 | 37 | static LinearGradient yellowBlue( 38 | {begin = AlignmentDirectional.centerStart, 39 | end = AlignmentDirectional.centerEnd, 40 | opacity = 1.0}) => 41 | _getLinearGradient(YELLOW, BLUE, 42 | begin: begin, end: end, opacity: opacity); 43 | 44 | static LinearGradient blue( 45 | {begin = AlignmentDirectional.centerStart, 46 | end = AlignmentDirectional.centerEnd, 47 | opacity = 1.0}) => 48 | _getLinearGradient(BLUE_LIGHT, BLUE_DEEP, 49 | begin: begin, end: end, opacity: opacity); 50 | 51 | static LinearGradient greenRed( 52 | {begin = AlignmentDirectional.centerStart, 53 | end = AlignmentDirectional.centerEnd, 54 | opacity = 1.0}) => 55 | _getLinearGradient(GREEN, RED, begin: begin, end: end, opacity: opacity); 56 | 57 | static LinearGradient greenPurple( 58 | {begin = AlignmentDirectional.centerStart, 59 | end = AlignmentDirectional.centerEnd, 60 | opacity = 1.0}) => 61 | _getLinearGradient(GREEN, PURPLE, 62 | begin: begin, end: end, opacity: opacity); 63 | } 64 | -------------------------------------------------------------------------------- /lib/util/SizeUtil.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 2018/12/26 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | import 'package:flutter/material.dart'; 7 | import 'dart:math'; 8 | 9 | class SizeUtil { 10 | static const _DESIGN_WIDTH = 750; 11 | static const _DESIGN_HEIGHT = 1334; 12 | 13 | //logic size in device 14 | static Size _logicSize; 15 | 16 | //device pixel radio. 17 | 18 | static get width { 19 | return _logicSize.width; 20 | } 21 | 22 | static get height { 23 | return _logicSize.height; 24 | } 25 | 26 | static set size(size) { 27 | _logicSize = size; 28 | } 29 | 30 | //@param w is the design w; 31 | static double getAxisX(double w) { 32 | return (w * width) / _DESIGN_WIDTH; 33 | } 34 | 35 | // the y direction 36 | static double getAxisY(double h) { 37 | return (h * height) / _DESIGN_HEIGHT; 38 | } 39 | 40 | // diagonal direction value with design size s. 41 | static double getAxisBoth(double s) { 42 | return s * 43 | sqrt((width * width + height * height) / 44 | (_DESIGN_WIDTH * _DESIGN_WIDTH + _DESIGN_HEIGHT * _DESIGN_HEIGHT)); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /lib/view/AboutMeTitle.dart: -------------------------------------------------------------------------------- 1 | /// 2 | /// Created by NieBin on 18-12-17 3 | /// Github: https://github.com/nb312 4 | /// Email: niebin312@gmail.com 5 | /// 6 | import "package:flutter/material.dart"; 7 | import 'package:flutter_ui_nice/const/string_const.dart'; 8 | import 'package:flutter_ui_nice/const/color_const.dart'; 9 | import 'package:flutter_ui_nice/const/images_const.dart'; 10 | 11 | class AboutMeTitle extends AboutListTile { 12 | AboutMeTitle() 13 | : super( 14 | icon: Image.asset( 15 | MainImagePath.image_app, 16 | width: 40.0, 17 | height: 40.0, 18 | ), 19 | applicationName: StringConst.APP_NAME, 20 | applicationVersion: "1.0", 21 | applicationLegalese: "MIT License 2.0", 22 | aboutBoxChildren: [ 23 | Padding( 24 | padding: EdgeInsets.symmetric(horizontal: 24.0, vertical: 4.0), 25 | child: Text( 26 | StringConst.CREATE_BY, 27 | style: TextStyle(color: TEXT_BLACK_LIGHT), 28 | ), 29 | ) 30 | ]); 31 | } 32 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: flutter_ui_nice 2 | description: A new Flutter application. 3 | 4 | # The following defines the version and build number for your application. 5 | # A version number is three numbers separated by dots, like 1.2.43 6 | # followed by an optional build number separated by a +. 7 | # Both the version and the builder number may be overridden in flutter 8 | # build by specifying --build-name and --build-number, respectively. 9 | # Read more about versioning at semver.org. 10 | version: 1.0.0+1 11 | 12 | environment: 13 | sdk: ">=2.0.0-dev.68.0 <3.0.0" 14 | 15 | dependencies: 16 | flutter: 17 | sdk: flutter 18 | 19 | # The following adds the Cupertino Icons font to your application. 20 | # Use with the CupertinoIcons class for iOS style icons. 21 | cupertino_icons: ^0.1.3 22 | image_picker: ^0.6.7+2 23 | intl: ^0.16.1 24 | google_places_picker: ^2.1.0+2 25 | 26 | dev_dependencies: 27 | flutter_test: 28 | sdk: flutter 29 | 30 | 31 | # For information on the generic Dart part of this file, see the 32 | # following page: https://www.dartlang.org/tools/pub/pubspec 33 | 34 | # The following section is specific to Flutter. 35 | flutter: 36 | 37 | # The following line ensures that the Material Icons font is 38 | # included with your application, so that you can use the icons in 39 | # the material Icons class. 40 | uses-material-design: true 41 | assets: 42 | - assets/images/camera/ 43 | - assets/images/chat/ 44 | - assets/images/feed/ 45 | - assets/images/media/ 46 | - assets/images/navigation/ 47 | - assets/images/profile/ 48 | - assets/images/shopping/ 49 | - assets/images/signup/ 50 | - assets/images/statistics/ 51 | - assets/images/walkthrough/ 52 | - assets/images/main/ 53 | fonts: 54 | - family: Montserrat 55 | fonts: 56 | - asset: assets/fonts/montserrat/Montserrat-Regular.ttf 57 | - asset: assets/fonts/montserrat/Montserrat-Medium.ttf 58 | weight : 400 59 | - asset: assets/fonts/montserrat/Montserrat-Italic.ttf 60 | style: italic 61 | - asset: assets/fonts/montserrat/Montserrat-Light.ttf 62 | weight: 200 63 | - asset: assets/fonts/montserrat/Montserrat-SemiBold.ttf 64 | weight: 500 65 | - asset: assets/fonts/montserrat/Montserrat-Bold.ttf 66 | weight: 700 67 | - family: Icons 68 | fonts: 69 | - asset: assets/fonts/icons.ttf 70 | 71 | 72 | 73 | # To add assets to your application, add an assets section, like this: 74 | # assets: 75 | # - images/a_dot_burr.jpeg 76 | # - images/a_dot_ham.jpeg 77 | 78 | # An image asset can refer to one or more resolution-specific "variants", see 79 | # https://flutter.io/assets-and-images/#resolution-aware. 80 | 81 | # For details regarding adding assets from package dependencies, see 82 | # https://flutter.io/assets-and-images/#from-packages 83 | 84 | # To add custom fonts to your application, add a fonts section here, 85 | # in this "flutter" section. Each entry in this list should have a 86 | # "family" key with the font family name, and a "fonts" key with a 87 | # list giving the asset and other descriptors for the font. For 88 | # example: 89 | # fonts: 90 | # - family: Schyler 91 | # fonts: 92 | # - asset: fonts/Schyler-Regular.ttf 93 | # - asset: fonts/Schyler-Italic.ttf 94 | # style: italic 95 | # - family: Trajan Pro 96 | # fonts: 97 | # - asset: fonts/TrajanPro.ttf 98 | # - asset: fonts/TrajanPro_Bold.ttf 99 | # weight: 700 100 | # 101 | # For details regarding fonts from package dependencies, 102 | # see https://flutter.io/custom-fonts/#from-packages 103 | -------------------------------------------------------------------------------- /test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:flutter_ui_nice/main.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(MyApp()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | --------------------------------------------------------------------------------