├── README.md ├── Screenshot ├── 1.Splash.png ├── 2.Login.png ├── 3.Social Account.png ├── 4.Password.png ├── 5.ForgetPassword.png ├── 6.Verify.png ├── 7.MainScreen.png ├── 8.Menu.png └── 9.My Trips.png ├── android ├── Flutter_Cab.jks ├── app │ ├── build.gradle │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── kotlin │ │ │ └── com │ │ │ │ └── flutter_cab │ │ │ │ └── MainActivity.kt │ │ └── res │ │ │ ├── drawable │ │ │ └── launch_background.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ └── styles.xml │ │ └── profile │ │ └── AndroidManifest.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties └── settings.gradle ├── fonts ├── Roboto-Black.ttf ├── Roboto-Bold.ttf ├── Roboto-Light.ttf ├── Roboto-Medium.ttf └── Roboto-Regular.ttf ├── images ├── car.png ├── car_marker.png ├── city.png ├── driver.jpg ├── driver_img.jpg ├── hatchback.png ├── ic_close.png ├── ic_facebook.png ├── ic_instagram.png ├── ic_logo.png ├── ic_twitter.png ├── map-marker.png ├── menu │ ├── book_later.png │ ├── emergency_contacts.png │ ├── help_support.png │ ├── my_trips.png │ ├── news_offers.png │ ├── payment.png │ ├── rate_card.png │ └── user.png ├── navigation.png ├── payments │ ├── card.png │ ├── cash.png │ └── points.png ├── stopwatch.png ├── tuk.png └── van.png ├── ios ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ └── Release.xcconfig ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ └── contents.xcworkspacedata └── Runner │ ├── AppDelegate.swift │ ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── Icon-App-1024x1024@1x.png │ │ ├── Icon-App-20x20@1x.png │ │ ├── Icon-App-20x20@2x.png │ │ ├── Icon-App-20x20@3x.png │ │ ├── Icon-App-29x29@1x.png │ │ ├── Icon-App-29x29@2x.png │ │ ├── Icon-App-29x29@3x.png │ │ ├── Icon-App-40x40@1x.png │ │ ├── Icon-App-40x40@2x.png │ │ ├── Icon-App-40x40@3x.png │ │ ├── Icon-App-60x60@2x.png │ │ ├── Icon-App-60x60@3x.png │ │ ├── Icon-App-76x76@1x.png │ │ ├── Icon-App-76x76@2x.png │ │ └── Icon-App-83.5x83.5@2x.png │ └── LaunchImage.imageset │ │ ├── Contents.json │ │ ├── LaunchImage.png │ │ ├── LaunchImage@2x.png │ │ ├── LaunchImage@3x.png │ │ └── README.md │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── Info.plist │ └── Runner-Bridging-Header.h ├── lib ├── add_card.dart ├── book_late_pick_date.dart ├── complaint.dart ├── connect_social_account.dart ├── emergency_contact.dart ├── fare_info.dart ├── forgot_password.dart ├── help_support.dart ├── home │ ├── book_cab_without_destination.dart │ ├── cancel_trip.dart │ ├── cancel_trip_feedback.dart │ ├── dialog │ │ ├── payment_dialog.dart │ │ └── promo_code_dialog.dart │ ├── driver_on_the_way.dart │ ├── drop_off_user.dart │ ├── home.dart │ ├── payment_menu.dart │ ├── pickup_user.dart │ ├── trip_end.dart │ ├── trip_info.dart │ └── trip_started.dart ├── login.dart ├── login_password.dart ├── main.dart ├── menu │ └── menu.dart ├── modal │ ├── CancelTrip.dart │ ├── favorite_place.dart │ └── menu_list_item.dart ├── my_trips.dart ├── news_offers.dart ├── profile.dart ├── rate_card.dart ├── splash.dart ├── utils │ ├── CustomColors.dart │ ├── CustomTabIndicator.dart │ ├── CustomTextStyle.dart │ ├── DottedLine.dart │ └── menu_title.dart ├── verify_code.dart └── write_complaint.dart ├── pubspec.lock ├── pubspec.yaml └── test └── widget_test.dart /README.md: -------------------------------------------------------------------------------- 1 | # Flutter Cab 2 | 3 | This repository provides design related to taxi cab in flutter. 4 | I have take referenced from below link and i have tried to make same copy of that image. 5 | 6 | https://www.uplabs.com/posts/taxi-booking-app-full-app 7 | 8 | I have create design like prototype no other networking or other functionality implemented yet. 9 | 10 | # What are the package used : 11 | 12 | 1) Google Maps : 13 | For google maps, I used https://pub.dev/packages/google_maps_flutter package for loading maps. 14 | 15 | 2) Rating Bar : 16 | Currently there is no widget available for rating you have to create your own or used package and i selected second option. 17 | So for implementing rating i used https://pub.dev/packages/flutter_rating_bar package. 18 | 19 | If you want to get more idea about above packages you should go through this link where you can find the description as well as installation steps. 20 | 21 | # Screenshot 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
33 | -------------------------------------------------------------------------------- /Screenshot/1.Splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/Screenshot/1.Splash.png -------------------------------------------------------------------------------- /Screenshot/2.Login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/Screenshot/2.Login.png -------------------------------------------------------------------------------- /Screenshot/3.Social Account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/Screenshot/3.Social Account.png -------------------------------------------------------------------------------- /Screenshot/4.Password.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/Screenshot/4.Password.png -------------------------------------------------------------------------------- /Screenshot/5.ForgetPassword.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/Screenshot/5.ForgetPassword.png -------------------------------------------------------------------------------- /Screenshot/6.Verify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/Screenshot/6.Verify.png -------------------------------------------------------------------------------- /Screenshot/7.MainScreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/Screenshot/7.MainScreen.png -------------------------------------------------------------------------------- /Screenshot/8.Menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/Screenshot/8.Menu.png -------------------------------------------------------------------------------- /Screenshot/9.My Trips.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/Screenshot/9.My Trips.png -------------------------------------------------------------------------------- /android/Flutter_Cab.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/android/Flutter_Cab.jks -------------------------------------------------------------------------------- /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 | 30 | 31 | compileSdkVersion 28 32 | sourceSets { 33 | main.java.srcDirs += 'src/main/kotlin' 34 | } 35 | 36 | lintOptions { 37 | disable 'InvalidPackage' 38 | } 39 | 40 | defaultConfig { 41 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 42 | applicationId "com.flutter_cab" 43 | minSdkVersion 16 44 | targetSdkVersion 28 45 | versionCode flutterVersionCode.toInteger() 46 | versionName flutterVersionName 47 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 48 | } 49 | 50 | signingConfigs{ 51 | release{ 52 | storeFile file('..\\Flutter_Cab.jks') 53 | storePassword "Flutter_Cab" 54 | keyAlias = "Flutter_Cab" 55 | keyPassword "Flutter_Cab" 56 | } 57 | } 58 | 59 | 60 | buildTypes { 61 | release { 62 | signingConfig signingConfigs.release 63 | minifyEnabled true 64 | useProguard true 65 | } 66 | } 67 | } 68 | 69 | flutter { 70 | source '../..' 71 | } 72 | 73 | dependencies { 74 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 75 | testImplementation 'junit:junit:4.12' 76 | androidTestImplementation 'androidx.test:runner:1.2.0' 77 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' 78 | } 79 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 10 | 17 | 21 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /android/app/src/main/kotlin/com/flutter_cab/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.flutter_cab 2 | 3 | import android.os.Bundle 4 | 5 | import io.flutter.app.FlutterActivity 6 | import io.flutter.plugins.GeneratedPluginRegistrant 7 | 8 | class MainActivity: FlutterActivity() { 9 | override fun onCreate(savedInstanceState: Bundle?) { 10 | super.onCreate(savedInstanceState) 11 | GeneratedPluginRegistrant.registerWith(this) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.3.41' 3 | repositories { 4 | google() 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:3.2.1' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | jcenter() 18 | } 19 | } 20 | 21 | rootProject.buildDir = '../build' 22 | subprojects { 23 | project.buildDir = "${rootProject.buildDir}/${project.name}" 24 | } 25 | subprojects { 26 | project.evaluationDependsOn(':app') 27 | } 28 | 29 | task clean(type: Delete) { 30 | delete rootProject.buildDir 31 | } 32 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | android.enableJetifier=true 2 | android.useAndroidX=true 3 | org.gradle.jvmargs=-Xmx1536M 4 | 5 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Jul 22 17:51:19 IST 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https://services.gradle.org/distributions/gradle-4.10.1-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 | -------------------------------------------------------------------------------- /fonts/Roboto-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/fonts/Roboto-Black.ttf -------------------------------------------------------------------------------- /fonts/Roboto-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/fonts/Roboto-Bold.ttf -------------------------------------------------------------------------------- /fonts/Roboto-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/fonts/Roboto-Light.ttf -------------------------------------------------------------------------------- /fonts/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/fonts/Roboto-Medium.ttf -------------------------------------------------------------------------------- /fonts/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/fonts/Roboto-Regular.ttf -------------------------------------------------------------------------------- /images/car.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/car.png -------------------------------------------------------------------------------- /images/car_marker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/car_marker.png -------------------------------------------------------------------------------- /images/city.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/city.png -------------------------------------------------------------------------------- /images/driver.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/driver.jpg -------------------------------------------------------------------------------- /images/driver_img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/driver_img.jpg -------------------------------------------------------------------------------- /images/hatchback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/hatchback.png -------------------------------------------------------------------------------- /images/ic_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/ic_close.png -------------------------------------------------------------------------------- /images/ic_facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/ic_facebook.png -------------------------------------------------------------------------------- /images/ic_instagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/ic_instagram.png -------------------------------------------------------------------------------- /images/ic_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/ic_logo.png -------------------------------------------------------------------------------- /images/ic_twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/ic_twitter.png -------------------------------------------------------------------------------- /images/map-marker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/map-marker.png -------------------------------------------------------------------------------- /images/menu/book_later.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/menu/book_later.png -------------------------------------------------------------------------------- /images/menu/emergency_contacts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/menu/emergency_contacts.png -------------------------------------------------------------------------------- /images/menu/help_support.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/menu/help_support.png -------------------------------------------------------------------------------- /images/menu/my_trips.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/menu/my_trips.png -------------------------------------------------------------------------------- /images/menu/news_offers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/menu/news_offers.png -------------------------------------------------------------------------------- /images/menu/payment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/menu/payment.png -------------------------------------------------------------------------------- /images/menu/rate_card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/menu/rate_card.png -------------------------------------------------------------------------------- /images/menu/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/menu/user.png -------------------------------------------------------------------------------- /images/navigation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/navigation.png -------------------------------------------------------------------------------- /images/payments/card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/payments/card.png -------------------------------------------------------------------------------- /images/payments/cash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/payments/cash.png -------------------------------------------------------------------------------- /images/payments/points.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/payments/points.png -------------------------------------------------------------------------------- /images/stopwatch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/stopwatch.png -------------------------------------------------------------------------------- /images/tuk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/tuk.png -------------------------------------------------------------------------------- /images/van.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/images/van.png -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/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/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/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/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/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/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/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/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/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/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/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/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/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/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/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/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/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/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/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/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/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/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/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/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/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/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/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/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/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/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sky-flutter/Flutter-Cab/92681de543e6810369de300c7d051ffa68e36739/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | flutter_cab 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | $(FLUTTER_BUILD_NAME) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | UIViewControllerBasedStatusBarAppearance 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" -------------------------------------------------------------------------------- /lib/book_late_pick_date.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:flutter_cab/utils/CustomTextStyle.dart'; 4 | 5 | class BookLaterDatePicker extends StatefulWidget { 6 | @override 7 | _BookLaterDatePickerState createState() => _BookLaterDatePickerState(); 8 | } 9 | 10 | class _BookLaterDatePickerState extends State { 11 | var selectedItem; 12 | TextEditingController _mobileNumberController = new TextEditingController(); 13 | 14 | bool isTextWritten = false; 15 | 16 | @override 17 | Widget build(BuildContext context) { 18 | return Scaffold( 19 | backgroundColor: Colors.white, 20 | body: SingleChildScrollView( 21 | child: Builder( 22 | builder: (context) { 23 | return Card( 24 | elevation: 4, 25 | borderOnForeground: true, 26 | shape: RoundedRectangleBorder( 27 | borderRadius: BorderRadius.only( 28 | bottomRight: Radius.circular(16), 29 | bottomLeft: Radius.circular(16))), 30 | margin: EdgeInsets.only(left: 0, right: 0, bottom: 4), 31 | child: Container( 32 | decoration: BoxDecoration( 33 | borderRadius: BorderRadius.only( 34 | bottomRight: Radius.circular(16), 35 | bottomLeft: Radius.circular(16)), 36 | shape: BoxShape.rectangle, 37 | color: Colors.white, 38 | boxShadow: [ 39 | BoxShadow(color: Colors.grey.shade50, blurRadius: 5), 40 | ]), 41 | width: double.infinity, 42 | padding: EdgeInsets.only(top: 8), 43 | child: Column( 44 | crossAxisAlignment: CrossAxisAlignment.start, 45 | children: [ 46 | Container( 47 | key: Key("ContainerHeader"), 48 | margin: EdgeInsets.only(left: 14, top: 8), 49 | child: Row( 50 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 51 | children: [ 52 | Container( 53 | alignment: Alignment.center, 54 | child: Text( 55 | "Book Later", 56 | style: CustomTextStyle.mediumTextStyle, 57 | ), 58 | ), 59 | IconButton( 60 | icon: Icon(Icons.close), 61 | onPressed: () { 62 | Navigator.of(context).pop(); 63 | }, 64 | color: Colors.black, 65 | ), 66 | ], 67 | ), 68 | ), 69 | Container( 70 | key: Key("ContainerDate"), 71 | margin: EdgeInsets.only(left: 16, right: 16), 72 | child: RichText( 73 | text: TextSpan(children: [ 74 | TextSpan( 75 | text: "Date : ", 76 | style: CustomTextStyle.mediumTextStyle 77 | .copyWith(color: Colors.black, fontSize: 14)), 78 | TextSpan( 79 | text: "Sunday October 7", 80 | style: CustomTextStyle.regularTextStyle 81 | .copyWith(color: Colors.black, fontSize: 14)) 82 | ]), 83 | ), 84 | ), 85 | Container( 86 | key: Key("ContainerTime"), 87 | margin: EdgeInsets.only(left: 16, right: 16, top: 8), 88 | child: RichText( 89 | text: TextSpan(children: [ 90 | TextSpan( 91 | text: "Time : ", 92 | style: CustomTextStyle.mediumTextStyle 93 | .copyWith(color: Colors.black, fontSize: 14)), 94 | TextSpan( 95 | text: "09:00 AM", 96 | style: CustomTextStyle.regularTextStyle 97 | .copyWith(color: Colors.black, fontSize: 14)) 98 | ]), 99 | ), 100 | ), 101 | Container( 102 | key: Key("ContainerLine"), 103 | margin: EdgeInsets.only(right: 16, left: 16, top: 12), 104 | width: double.infinity, 105 | height: 2, 106 | color: Colors.grey.shade400, 107 | ), 108 | SizedBox( 109 | height: 8, 110 | ), 111 | Container( 112 | width: double.infinity, 113 | height: 200, 114 | child: buildDatePicker(), 115 | ), 116 | Align( 117 | alignment: Alignment.topRight, 118 | child: Container( 119 | height: 50, 120 | width: 50, 121 | margin: EdgeInsets.only(top: 24, right: 16, bottom: 24), 122 | child: Icon( 123 | Icons.check, 124 | color: Colors.white, 125 | ), 126 | decoration: BoxDecoration( 127 | shape: BoxShape.circle, 128 | color: Colors.tealAccent.shade400), 129 | ), 130 | ) 131 | ], 132 | ), 133 | ), 134 | ); 135 | }, 136 | ), 137 | ), 138 | ); 139 | } 140 | 141 | DateTime date = DateTime.now(); 142 | 143 | buildDatePicker() { 144 | return CupertinoDatePicker( 145 | mode: CupertinoDatePickerMode.dateAndTime, 146 | initialDateTime: date, 147 | onDateTimeChanged: (DateTime newDateTime) { 148 | setState(() => date = newDateTime); 149 | }, 150 | ); 151 | } 152 | 153 | createClearText() { 154 | if (isTextWritten) { 155 | return Align( 156 | alignment: Alignment.topRight, 157 | child: GestureDetector( 158 | onTap: () { 159 | _mobileNumberController.clear(); 160 | setState(() { 161 | isTextWritten = false; 162 | }); 163 | }, 164 | child: Container( 165 | margin: EdgeInsets.only(right: 8), 166 | width: 16, 167 | height: 16, 168 | decoration: BoxDecoration( 169 | color: Colors.grey.shade400, shape: BoxShape.circle), 170 | child: Icon( 171 | Icons.close, 172 | size: 14, 173 | color: Colors.white, 174 | ), 175 | alignment: Alignment.center, 176 | ), 177 | ), 178 | ); 179 | } else { 180 | return Align( 181 | alignment: Alignment.topRight, 182 | child: Container(), 183 | ); 184 | } 185 | } 186 | 187 | var border = OutlineInputBorder( 188 | borderRadius: BorderRadius.all(Radius.circular(4)), 189 | borderSide: BorderSide(color: Colors.white, width: 1)); 190 | } 191 | -------------------------------------------------------------------------------- /lib/complaint.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_cab/utils/CustomTextStyle.dart'; 3 | 4 | import 'package:flutter_cab/modal/CancelTrip.dart'; 5 | import 'package:flutter_cab/write_complaint.dart'; 6 | 7 | class Complaint extends StatefulWidget { 8 | @override 9 | _ComplaintState createState() => _ComplaintState(); 10 | } 11 | 12 | class _ComplaintState extends State { 13 | List listCancelReason = new List(); 14 | 15 | int selectedPosition; 16 | 17 | @override 18 | void initState() { 19 | super.initState(); 20 | createComplaintReason(); 21 | } 22 | 23 | createComplaintReason() { 24 | listCancelReason.add(createComplain("I lost an item", false)); 25 | listCancelReason.add(createComplain("Bad driver behavior", false)); 26 | listCancelReason.add(createComplain("I would like a refund", false)); 27 | listCancelReason.add(createComplain("Different driver/vehicle", false)); 28 | listCancelReason.add(createComplain("Other", false)); 29 | } 30 | 31 | createComplain(String title, bool isSelected) { 32 | return new CancelTrip(title, isSelected); 33 | } 34 | 35 | @override 36 | Widget build(BuildContext context) { 37 | return Scaffold( 38 | backgroundColor: Colors.white, 39 | body: Container( 40 | key: Key("ContainerMain"), 41 | child: Column( 42 | key: Key("ColumnMain"), 43 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 44 | children: [ 45 | Card( 46 | key: Key("CardTop"), 47 | elevation: 4, 48 | margin: EdgeInsets.all(0), 49 | shape: RoundedRectangleBorder( 50 | borderRadius: BorderRadius.only( 51 | bottomRight: Radius.circular(16), 52 | bottomLeft: Radius.circular(16))), 53 | child: Container( 54 | key: Key("ContainerListItem"), 55 | decoration: BoxDecoration( 56 | borderRadius: BorderRadius.only( 57 | bottomRight: Radius.circular(16), 58 | bottomLeft: Radius.circular(16)), 59 | boxShadow: [ 60 | BoxShadow( 61 | color: Colors.grey.shade50, 62 | blurRadius: 10, 63 | offset: Offset(0, 1)), 64 | ]), 65 | child: Column( 66 | key: Key("ColumnList"), 67 | crossAxisAlignment: CrossAxisAlignment.start, 68 | children: [ 69 | SizedBox( 70 | key: Key("SizedBox_24"), 71 | height: 24, 72 | ), 73 | Stack( 74 | children: [ 75 | Container( 76 | key: Key("ContainerLogo"), 77 | height: 100, 78 | decoration: BoxDecoration( 79 | image: DecorationImage( 80 | image: AssetImage("images/ic_logo.png"), 81 | )), 82 | ), 83 | Align( 84 | key: Key("AlignBack"), 85 | alignment: Alignment.topLeft, 86 | child: Container( 87 | child: IconButton( 88 | icon: Icon(Icons.keyboard_backspace), 89 | onPressed: (){ 90 | Navigator.pop(context); 91 | }, 92 | color: Colors.black.withOpacity(0.8), 93 | ), 94 | ), 95 | ) 96 | ], 97 | ), 98 | SizedBox( 99 | key: Key("SizedBox_24_1"), 100 | height: 24, 101 | ), 102 | Container( 103 | key: Key("ContainerComplaintLabel"), 104 | child: Text( 105 | "Comaplint", 106 | key: Key("TextComplaintLabel"), 107 | style: CustomTextStyle.boldTextStyle 108 | .copyWith(fontSize: 16), 109 | ), 110 | margin: EdgeInsets.only(left: 20), 111 | ), 112 | SizedBox( 113 | key: Key("SizedBox_16"), 114 | height: 16, 115 | ), 116 | ListView.builder( 117 | key: Key("ListMenu"), 118 | shrinkWrap: true, 119 | primary: true, 120 | itemBuilder: (context, position) { 121 | return createMenuListItemWidget(position); 122 | }, 123 | itemCount: listCancelReason.length, 124 | ), 125 | SizedBox( 126 | height: 8, 127 | ), 128 | ], 129 | )), 130 | ), 131 | ], 132 | ), 133 | ), 134 | ); 135 | } 136 | 137 | createMenuListItemWidget(int position) { 138 | return GestureDetector( 139 | onTap: () { 140 | Navigator.of(context).push(new MaterialPageRoute(builder: (context)=>WriteComplaint())); 141 | }, 142 | child: Container( 143 | key: Key("ContainerListItem"), 144 | padding: EdgeInsets.only(top: 8, bottom: 8, left: 8, right: 8), 145 | child: Row( 146 | key: Key("RowListItem"), 147 | crossAxisAlignment: CrossAxisAlignment.center, 148 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 149 | children: [ 150 | Container( 151 | key: Key("ContainerListTitle"), 152 | child: Text(listCancelReason[position].title), 153 | margin: EdgeInsets.only(left: 12), 154 | ), 155 | Container( 156 | key: Key("ContainerNextIcon"), 157 | width: 20, 158 | height: 20, 159 | child: Icon( 160 | Icons.navigate_next, 161 | size: 16, 162 | color: Colors.grey, 163 | ), 164 | ) 165 | ], 166 | ), 167 | ), 168 | ); 169 | } 170 | } 171 | -------------------------------------------------------------------------------- /lib/connect_social_account.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_cab/utils/CustomColors.dart'; 3 | import 'package:flutter_cab/utils/CustomTextStyle.dart'; 4 | 5 | class CreateSocialAccount extends StatefulWidget { 6 | @override 7 | _CreateSocialAccountState createState() => _CreateSocialAccountState(); 8 | } 9 | 10 | class _CreateSocialAccountState extends State { 11 | bool isTextWritten = false; 12 | 13 | TextEditingController _mobileNumberController = new TextEditingController(); 14 | 15 | @override 16 | Widget build(BuildContext context) { 17 | return MaterialApp( 18 | home: Scaffold( 19 | backgroundColor: Colors.white, 20 | body: SingleChildScrollView( 21 | child: Card( 22 | elevation: 4, 23 | borderOnForeground: true, 24 | shape: RoundedRectangleBorder( 25 | borderRadius: BorderRadius.only( 26 | bottomRight: Radius.circular(16), 27 | bottomLeft: Radius.circular(16))), 28 | margin: EdgeInsets.only(left: 0, right: 0, bottom: 4), 29 | child: Container( 30 | decoration: BoxDecoration( 31 | borderRadius: BorderRadius.only( 32 | bottomRight: Radius.circular(16), 33 | bottomLeft: Radius.circular(16)), 34 | shape: BoxShape.rectangle, 35 | color: Colors.white, 36 | boxShadow: [ 37 | BoxShadow(color: Colors.grey.shade50, blurRadius: 5), 38 | ]), 39 | width: double.infinity, 40 | padding: EdgeInsets.only(top: 32), 41 | child: Column( 42 | crossAxisAlignment: CrossAxisAlignment.start, 43 | children: [ 44 | SizedBox(height: 14), 45 | Container( 46 | alignment: Alignment.center, 47 | child: Image( 48 | image: AssetImage("images/ic_logo.png"), 49 | width: 80, 50 | height: 80, 51 | ), 52 | ), 53 | SizedBox(height: 14), 54 | Container( 55 | margin: EdgeInsets.only(left: 16, top: 8), 56 | child: Text( 57 | "Social Account", 58 | style: CustomTextStyle.mediumTextStyle, 59 | ), 60 | ), 61 | Container( 62 | margin: EdgeInsets.only(left: 16, top: 4), 63 | child: Text( 64 | "Connect with social account", 65 | style: CustomTextStyle.regularTextStyle.copyWith( 66 | color: Colors.grey, 67 | fontSize: 12, 68 | fontWeight: FontWeight.w400), 69 | ), 70 | ), 71 | SizedBox(height: 14), 72 | Container( 73 | width: double.infinity, 74 | margin: EdgeInsets.only(right: 16, left: 16), 75 | child: RaisedButton( 76 | onPressed: () {}, 77 | child: Text( 78 | "Connect with Google Account", 79 | style: CustomTextStyle.mediumTextStyle 80 | .copyWith(color: Colors.white, fontSize: 14), 81 | ), 82 | textColor: Colors.white, 83 | shape: RoundedRectangleBorder( 84 | borderRadius: BorderRadius.all(Radius.circular(24))), 85 | color: CustomColors.COLOR_GOOGLE, 86 | ), 87 | ), 88 | Container( 89 | width: double.infinity, 90 | margin: EdgeInsets.only(right: 16, left: 16), 91 | child: RaisedButton( 92 | onPressed: () {}, 93 | child: Text( 94 | "Connect with Facebook Account", 95 | style: CustomTextStyle.mediumTextStyle 96 | .copyWith(color: Colors.white, fontSize: 14), 97 | ), 98 | textColor: Colors.white, 99 | shape: RoundedRectangleBorder( 100 | borderRadius: BorderRadius.all(Radius.circular(24))), 101 | color: CustomColors.COLOR_FACEBOOK, 102 | ), 103 | ), 104 | SizedBox(height: 14), 105 | ], 106 | ), 107 | ), 108 | ), 109 | ), 110 | ), 111 | ); 112 | } 113 | 114 | createClearText() { 115 | return Align( 116 | alignment: Alignment.topRight, 117 | child: GestureDetector( 118 | onTap: () { 119 | setState(() { 120 | isTextWritten = !isTextWritten; 121 | }); 122 | }, 123 | child: Container( 124 | margin: EdgeInsets.only(right: 8), 125 | width: 20, 126 | height: 20, 127 | child: Icon( 128 | isTextWritten ? Icons.visibility : Icons.visibility_off, 129 | size: 20, 130 | color: Colors.grey, 131 | ), 132 | alignment: Alignment.center, 133 | ), 134 | ), 135 | ); 136 | } 137 | 138 | var border = OutlineInputBorder( 139 | borderRadius: BorderRadius.all(Radius.circular(4)), 140 | borderSide: BorderSide(color: Colors.white, width: 1)); 141 | } 142 | -------------------------------------------------------------------------------- /lib/emergency_contact.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_cab/home/home.dart'; 3 | import 'package:flutter_cab/utils/CustomTextStyle.dart'; 4 | 5 | import 'forgot_password.dart'; 6 | 7 | class EmergencyContacts extends StatefulWidget { 8 | @override 9 | _EmergencyContactsState createState() => _EmergencyContactsState(); 10 | } 11 | 12 | class _EmergencyContactsState extends State { 13 | bool isTextWritten = false; 14 | 15 | TextEditingController _mobileNumberController = new TextEditingController(); 16 | 17 | @override 18 | Widget build(BuildContext context) { 19 | return Scaffold( 20 | backgroundColor: Colors.white, 21 | body: SingleChildScrollView( 22 | child: Card( 23 | elevation: 4, 24 | borderOnForeground: true, 25 | shape: RoundedRectangleBorder( 26 | borderRadius: BorderRadius.only( 27 | bottomRight: Radius.circular(16), 28 | bottomLeft: Radius.circular(16))), 29 | margin: EdgeInsets.only(left: 0, right: 0, bottom: 4), 30 | child: Container( 31 | decoration: BoxDecoration( 32 | borderRadius: BorderRadius.only( 33 | bottomRight: Radius.circular(16), 34 | bottomLeft: Radius.circular(16)), 35 | shape: BoxShape.rectangle, 36 | color: Colors.white, 37 | boxShadow: [ 38 | BoxShadow(color: Colors.grey.shade50, blurRadius: 5), 39 | ]), 40 | width: double.infinity, 41 | padding: EdgeInsets.only(top: 8), 42 | child: Column( 43 | crossAxisAlignment: CrossAxisAlignment.start, 44 | children: [ 45 | Container( 46 | key: Key("ContainerHeader"), 47 | margin: EdgeInsets.only(left: 16, top: 8), 48 | child: Row( 49 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 50 | children: [ 51 | Container( 52 | alignment: Alignment.center, 53 | child: Text( 54 | "Emergency Contacts", 55 | style: CustomTextStyle.mediumTextStyle, 56 | ), 57 | ), 58 | IconButton( 59 | icon: Icon(Icons.close), 60 | onPressed: () { 61 | Navigator.of(context).pop(); 62 | }, 63 | color: Colors.black, 64 | ), 65 | ], 66 | ), 67 | ), 68 | Container( 69 | margin: EdgeInsets.only(right: 14, left: 14), 70 | child: Row( 71 | children: [ 72 | Expanded( 73 | child: Container( 74 | child: Stack( 75 | alignment: Alignment.center, 76 | children: [ 77 | TextField( 78 | decoration: InputDecoration( 79 | border: border, 80 | enabledBorder: border, 81 | focusedBorder: border, 82 | contentPadding: EdgeInsets.only( 83 | left: 8, right: 32, top: 6, bottom: 6), 84 | hintText: "Add number", 85 | hasFloatingPlaceholder: false, 86 | hintStyle: CustomTextStyle.regularTextStyle 87 | .copyWith( 88 | color: Colors.grey, fontSize: 12), 89 | labelStyle: CustomTextStyle.regularTextStyle 90 | .copyWith( 91 | color: Colors.black, fontSize: 12), 92 | ), 93 | onChanged: (value) { 94 | if (value.trim().length > 0) { 95 | setState(() { 96 | this.isTextWritten = true; 97 | }); 98 | } else { 99 | this.isTextWritten = false; 100 | } 101 | }, 102 | controller: _mobileNumberController, 103 | keyboardType: TextInputType.phone, 104 | ), 105 | createClearText() 106 | ], 107 | ), 108 | ), 109 | flex: 100, 110 | ) 111 | ], 112 | ), 113 | ), 114 | SizedBox(height: 16), 115 | Align( 116 | child: GestureDetector( 117 | onTap: () { 118 | Navigator.of(context).push(new MaterialPageRoute( 119 | builder: (context) => Home())); 120 | }, 121 | child: Container( 122 | width: 40, 123 | margin: EdgeInsets.only(right: 10), 124 | height: 40, 125 | decoration: BoxDecoration( 126 | color: Colors.grey.shade500, shape: BoxShape.circle), 127 | child: Icon( 128 | Icons.check, 129 | color: Colors.white, 130 | ), 131 | ), 132 | ), 133 | alignment: Alignment.topRight, 134 | ), 135 | SizedBox(height: 24), 136 | ], 137 | ), 138 | ), 139 | ), 140 | ), 141 | ); 142 | } 143 | 144 | createClearText() { 145 | if (isTextWritten) { 146 | return Align( 147 | alignment: Alignment.topRight, 148 | child: GestureDetector( 149 | onTap: () { 150 | _mobileNumberController.clear(); 151 | setState(() { 152 | isTextWritten = false; 153 | }); 154 | }, 155 | child: Container( 156 | margin: EdgeInsets.only(right: 8), 157 | width: 16, 158 | height: 16, 159 | decoration: BoxDecoration( 160 | color: Colors.grey.shade400, shape: BoxShape.circle), 161 | child: Icon( 162 | Icons.close, 163 | size: 14, 164 | color: Colors.white, 165 | ), 166 | alignment: Alignment.center, 167 | ), 168 | ), 169 | ); 170 | } else { 171 | return Align( 172 | alignment: Alignment.topRight, 173 | child: Container(), 174 | ); 175 | } 176 | } 177 | 178 | 179 | var border = OutlineInputBorder( 180 | borderRadius: BorderRadius.all(Radius.circular(4)), 181 | borderSide: BorderSide(color: Colors.white, width: 1)); 182 | } 183 | -------------------------------------------------------------------------------- /lib/forgot_password.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_cab/utils/CustomTextStyle.dart'; 3 | import 'package:flutter_cab/verify_code.dart'; 4 | 5 | class ForgotPassword extends StatefulWidget { 6 | @override 7 | _ForgotPasswordState createState() => _ForgotPasswordState(); 8 | } 9 | 10 | class _ForgotPasswordState extends State { 11 | bool isTextWritten = false; 12 | 13 | TextEditingController _mobileNumberController = new TextEditingController(); 14 | 15 | @override 16 | Widget build(BuildContext context) { 17 | return MaterialApp( 18 | home: Scaffold( 19 | backgroundColor: Colors.white, 20 | body: SingleChildScrollView( 21 | child: Card( 22 | elevation: 4, 23 | borderOnForeground: true, 24 | shape: RoundedRectangleBorder( 25 | borderRadius: BorderRadius.only( 26 | bottomRight: Radius.circular(16), 27 | bottomLeft: Radius.circular(16))), 28 | margin: EdgeInsets.only(left: 0, right: 0, bottom: 4), 29 | child: Container( 30 | decoration: BoxDecoration( 31 | borderRadius: BorderRadius.only( 32 | bottomRight: Radius.circular(16), 33 | bottomLeft: Radius.circular(16)), 34 | shape: BoxShape.rectangle, 35 | color: Colors.white, 36 | boxShadow: [ 37 | BoxShadow(color: Colors.grey.shade50, blurRadius: 5), 38 | ]), 39 | width: double.infinity, 40 | padding: EdgeInsets.only(top: 32), 41 | child: Column( 42 | crossAxisAlignment: CrossAxisAlignment.start, 43 | children: [ 44 | SizedBox(height: 14), 45 | Container( 46 | alignment: Alignment.center, 47 | child: Image( 48 | image: AssetImage("images/ic_logo.png"), 49 | width: 80, 50 | height: 80, 51 | ), 52 | ), 53 | SizedBox(height: 14), 54 | Container( 55 | margin: EdgeInsets.only(left: 16, top: 8), 56 | child: Text( 57 | "Enter your email address", 58 | style: CustomTextStyle.regularTextStyle, 59 | ), 60 | ), 61 | Container( 62 | margin: EdgeInsets.only(left: 16, top: 4), 63 | child: Text( 64 | "Enter your email address to get the password reset code", 65 | style: CustomTextStyle.regularTextStyle.copyWith( 66 | color: Colors.grey, 67 | fontSize: 12, 68 | fontWeight: FontWeight.w400), 69 | ), 70 | ), 71 | SizedBox(height: 14), 72 | Container( 73 | margin: EdgeInsets.only(right: 14, left: 14), 74 | child: Row( 75 | children: [ 76 | Expanded( 77 | child: Container( 78 | child: Stack( 79 | alignment: Alignment.center, 80 | children: [ 81 | TextField( 82 | decoration: InputDecoration( 83 | border: border, 84 | enabledBorder: border, 85 | focusedBorder: border, 86 | contentPadding: EdgeInsets.only( 87 | left: 8, right: 32, top: 6, bottom: 6), 88 | hintText: "Enter your email address", 89 | hasFloatingPlaceholder: true, 90 | hintStyle: CustomTextStyle.regularTextStyle 91 | .copyWith( 92 | color: Colors.grey, fontSize: 12), 93 | labelStyle: CustomTextStyle.regularTextStyle 94 | .copyWith( 95 | color: Colors.black, fontSize: 12), 96 | ), 97 | keyboardType: TextInputType.emailAddress, 98 | ), 99 | 100 | ], 101 | ), 102 | decoration: BoxDecoration( 103 | borderRadius: 104 | BorderRadius.all(Radius.circular(4)), 105 | border: Border.all( 106 | width: 1, color: Colors.grey.shade400)), 107 | ), 108 | flex: 100, 109 | ) 110 | ], 111 | ), 112 | ), 113 | SizedBox(height: 16), 114 | Row( 115 | mainAxisAlignment: MainAxisAlignment.end, 116 | children: [ 117 | 118 | GestureDetector( 119 | onTap: (){ 120 | Navigator.push(context, new MaterialPageRoute(builder: (context)=>VerifyCode())); 121 | }, 122 | child: Container( 123 | width: 40, 124 | margin: EdgeInsets.only(right: 10), 125 | height: 40, 126 | decoration: BoxDecoration( 127 | color: Colors.grey, shape: BoxShape.circle), 128 | child: Icon( 129 | Icons.arrow_forward, 130 | color: Colors.white, 131 | ), 132 | ), 133 | ) 134 | ], 135 | ), 136 | SizedBox(height: 24), 137 | ], 138 | ), 139 | ), 140 | ), 141 | ), 142 | ), 143 | ); 144 | } 145 | 146 | 147 | 148 | var border = OutlineInputBorder( 149 | borderRadius: BorderRadius.all(Radius.circular(4)), 150 | borderSide: BorderSide(color: Colors.white, width: 1)); 151 | } 152 | -------------------------------------------------------------------------------- /lib/help_support.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_cab/utils/CustomTextStyle.dart'; 3 | 4 | class HelpSupport extends StatefulWidget { 5 | @override 6 | _HelpSupportState createState() => _HelpSupportState(); 7 | } 8 | 9 | class _HelpSupportState extends State { 10 | @override 11 | Widget build(BuildContext context) { 12 | return Scaffold( 13 | appBar: AppBar( 14 | backgroundColor: Colors.white, 15 | elevation: 0, 16 | title: Text( 17 | "Help and Support", 18 | style: CustomTextStyle.mediumTextStyle.copyWith(color: Colors.black), 19 | ), 20 | centerTitle: true, 21 | leading: IconButton( 22 | icon: Icon( 23 | Icons.keyboard_backspace, 24 | color: Colors.black, 25 | ), 26 | onPressed: () { 27 | Navigator.pop(context); 28 | }), 29 | ), 30 | body: Container( 31 | color: Colors.white, 32 | child: Column( 33 | children: [ 34 | Expanded( 35 | child: Container( 36 | padding: EdgeInsets.only(left: 18,right: 18), 37 | width: double.infinity, 38 | child: Column( 39 | mainAxisAlignment: MainAxisAlignment.start, 40 | crossAxisAlignment: CrossAxisAlignment.start, 41 | children: [ 42 | Text("About",style: CustomTextStyle.boldTextStyle.copyWith(fontSize: 12),), 43 | SizedBox(height: 4,), 44 | Text("Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.",style: CustomTextStyle.regularTextStyle.copyWith(fontSize: 12,color: Colors.grey.shade600),), 45 | SizedBox(height:24,), 46 | Text("Dear Passenger,",style: CustomTextStyle.boldTextStyle.copyWith(fontSize: 12),), 47 | SizedBox(height: 4,), 48 | Text("Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. \n\nIt has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.",style: CustomTextStyle.regularTextStyle.copyWith(fontSize: 12,color: Colors.grey.shade600),), 49 | SizedBox(height:24,), 50 | Text("Kangaroo Cabs HQ,",style: CustomTextStyle.boldTextStyle.copyWith(fontSize: 12),), 51 | SizedBox(height: 4,), 52 | Text("No. 485 7/A, Gunawardena Mawatha,Wijerama,\nNugegoda, Sri Lanka.",style: CustomTextStyle.regularTextStyle.copyWith(fontSize: 12,color: Colors.grey.shade600),), 53 | SizedBox(height:24,), 54 | Text("Terms And Conditions",style: CustomTextStyle.regularTextStyle.copyWith(fontSize: 12,color: Colors.black),), 55 | SizedBox(height:8,), 56 | Text("Version - 2.0",style: CustomTextStyle.regularTextStyle.copyWith(fontSize: 12,color: Colors.grey),), 57 | ], 58 | ), 59 | ), 60 | flex: 70, 61 | ), 62 | Expanded( 63 | child: Container( 64 | padding: EdgeInsets.only(right: 16,left: 16,top: 8,bottom: 8), 65 | child: Column( 66 | mainAxisAlignment: MainAxisAlignment.spaceEvenly, 67 | children: [ 68 | Row( 69 | mainAxisAlignment: MainAxisAlignment.center, 70 | children: [ 71 | Container( 72 | padding: EdgeInsets.all(6), 73 | child: Image( 74 | image: AssetImage("images/ic_facebook.png"), 75 | width: 24, 76 | height: 24), 77 | decoration: BoxDecoration( 78 | shape: BoxShape.circle, 79 | color: Colors.grey.shade600, 80 | ), 81 | ), 82 | SizedBox( 83 | width: 16, 84 | ), 85 | Container( 86 | padding: EdgeInsets.all(6), 87 | child: Image( 88 | image: AssetImage("images/ic_twitter.png"), 89 | width: 24, 90 | height: 24), 91 | decoration: BoxDecoration( 92 | shape: BoxShape.circle, 93 | color: Colors.grey.shade600, 94 | ), 95 | ), 96 | SizedBox( 97 | width: 16, 98 | ), 99 | Container( 100 | padding: EdgeInsets.all(6), 101 | child: Image( 102 | image: AssetImage("images/ic_instagram.png"), 103 | width: 24, 104 | height: 24), 105 | decoration: BoxDecoration( 106 | shape: BoxShape.circle, 107 | color: Colors.grey.shade600, 108 | ), 109 | ), 110 | ], 111 | ), 112 | Container( 113 | width: double.infinity, 114 | child: RaisedButton( 115 | onPressed: () {}, 116 | color: Colors.white, 117 | padding: EdgeInsets.only(top: 12,bottom: 12), 118 | shape: RoundedRectangleBorder( 119 | borderRadius: BorderRadius.circular(100), 120 | side: BorderSide(color: Colors.tealAccent.shade700,width: 1) 121 | ), 122 | child: Text("Call Customer Support",style: CustomTextStyle.mediumTextStyle.copyWith(color: Colors.tealAccent.shade700),), 123 | ), 124 | ), 125 | Container( 126 | width: double.infinity, 127 | child: RaisedButton( 128 | onPressed: () {}, 129 | color: Colors.white, 130 | padding: EdgeInsets.only(top: 12,bottom: 12), 131 | shape: RoundedRectangleBorder( 132 | borderRadius: BorderRadius.circular(100), 133 | side: BorderSide(color: Colors.yellowAccent.shade400,width: 1) 134 | ), 135 | child: Text("Email Us Your Ideas",style: CustomTextStyle.mediumTextStyle.copyWith(color: Colors.amberAccent.shade400),), 136 | ), 137 | ) 138 | ], 139 | ), 140 | ), 141 | flex: 30, 142 | ) 143 | ], 144 | ), 145 | ), 146 | ); 147 | } 148 | } 149 | -------------------------------------------------------------------------------- /lib/home/cancel_trip.dart: -------------------------------------------------------------------------------- 1 | import 'dart:ui'; 2 | 3 | import 'package:flutter/material.dart'; 4 | import 'package:flutter_cab/home/driver_on_the_way.dart'; 5 | import 'package:flutter_cab/utils/CustomTextStyle.dart'; 6 | import 'package:google_maps_flutter/google_maps_flutter.dart'; 7 | 8 | class CancelTrip extends StatefulWidget { 9 | @override 10 | _CancelTripState createState() => _CancelTripState(); 11 | } 12 | 13 | class _CancelTripState extends State { 14 | var _ahmedabad = LatLng(23.0225, 72.5714); 15 | var _ahmedabad1 = LatLng(23.038304, 72.511856); 16 | var _ahmedabad2 = LatLng(23.036769, 72.562601); 17 | var _ahmedabad3 = LatLng(22.996224, 72.602492); 18 | var _ahmedabad4 = LatLng(23.040403, 72.585802); 19 | Set markers = new Set(); 20 | 21 | GlobalKey _scaffoldKey = new GlobalKey(); 22 | GoogleMapController mapController; 23 | 24 | BitmapDescriptor bitmapDescriptor; 25 | 26 | @override 27 | void initState() { 28 | // TODO: implement initState 29 | super.initState(); 30 | addMarker(); 31 | } 32 | 33 | addMarker() { 34 | markers.add(createMarker("ahmedabad", _ahmedabad)); 35 | markers.add(createMarker("ahmedabad1", _ahmedabad1)); 36 | markers.add(createMarker("ahmedabad2", _ahmedabad2)); 37 | markers.add(createMarker("ahmedabad3", _ahmedabad3)); 38 | markers.add(createMarker("ahmedabad4", _ahmedabad4)); 39 | } 40 | 41 | createMarker(String id, LatLng latLng) { 42 | return Marker( 43 | markerId: MarkerId(id), 44 | position: latLng, 45 | ); 46 | } 47 | 48 | void _onMapCreated(GoogleMapController mapController) { 49 | this.mapController = mapController; 50 | } 51 | 52 | @override 53 | Widget build(BuildContext context) { 54 | return Scaffold( 55 | key: _scaffoldKey, 56 | body: Container( 57 | width: double.infinity, 58 | child: Stack( 59 | children: [ 60 | GoogleMap( 61 | onMapCreated: _onMapCreated, 62 | markers: markers, 63 | initialCameraPosition: 64 | CameraPosition(target: _ahmedabad, zoom: 14), 65 | ), 66 | Align( 67 | alignment: Alignment.bottomCenter, 68 | child: Container( 69 | width: double.infinity, 70 | height: 240, 71 | child: Stack( 72 | children: [ 73 | Container( 74 | width: double.infinity, 75 | decoration: BoxDecoration( 76 | borderRadius: BorderRadius.only( 77 | topRight: Radius.circular(16), 78 | topLeft: Radius.circular(16)), 79 | color: Colors.white, 80 | ), 81 | margin: EdgeInsets.only(top: 50), 82 | child: Column( 83 | mainAxisAlignment: MainAxisAlignment.center, 84 | crossAxisAlignment: CrossAxisAlignment.center, 85 | children: [ 86 | SizedBox( 87 | height: 70, 88 | ), 89 | Text( 90 | "Nihal Perera", 91 | style: CustomTextStyle.boldTextStyle, 92 | ), 93 | Container( 94 | margin: EdgeInsets.only(left: 4, right: 4, top: 2), 95 | child: Text( 96 | "Requesting your ride please wait...", 97 | style: CustomTextStyle.regularTextStyle 98 | .copyWith(color: Colors.grey, fontSize: 12), 99 | ), 100 | ), 101 | SizedBox( 102 | height: 8, 103 | ), 104 | Expanded( 105 | child: Container( 106 | width: double.infinity, 107 | margin: EdgeInsets.only(top: 16), 108 | child: RaisedButton( 109 | onPressed: () { 110 | Navigator.of(context).push( 111 | new MaterialPageRoute( 112 | builder: (context) => 113 | DriverOnTheWay())); 114 | }, 115 | color: Colors.grey.shade200, 116 | child: Text( 117 | "Cancel Trip", 118 | style: CustomTextStyle.mediumTextStyle, 119 | ), 120 | ), 121 | )) 122 | ], 123 | ), 124 | ), 125 | Align( 126 | alignment: Alignment.topCenter, 127 | child: Container( 128 | width: 100, 129 | height: 100, 130 | decoration: BoxDecoration( 131 | image: DecorationImage( 132 | image: AssetImage("images/driver.jpg")), 133 | borderRadius: 134 | BorderRadius.all(Radius.circular(10))), 135 | ), 136 | ), 137 | Align( 138 | alignment: Alignment.topCenter, 139 | child: Container( 140 | alignment: Alignment.topCenter, 141 | child: Container( 142 | width: 100, 143 | margin: EdgeInsets.only(top: 70), 144 | height: 30, 145 | decoration: BoxDecoration( 146 | borderRadius: BorderRadius.only( 147 | bottomLeft: Radius.circular(10), 148 | bottomRight: Radius.circular(10)), 149 | color: Colors.black.withOpacity(0.5)), 150 | child: Row( 151 | mainAxisAlignment: MainAxisAlignment.center, 152 | children: [ 153 | Text( 154 | "4.5", 155 | style: CustomTextStyle.boldTextStyle.copyWith( 156 | color: Colors.white, fontSize: 16), 157 | ), 158 | SizedBox( 159 | width: 4, 160 | ), 161 | Icon( 162 | Icons.star, 163 | color: Colors.yellowAccent.shade700, 164 | ) 165 | ], 166 | ), 167 | ), 168 | ), 169 | ) 170 | ], 171 | ), 172 | ), 173 | ) 174 | ], 175 | ), 176 | ), 177 | ); 178 | } 179 | } 180 | -------------------------------------------------------------------------------- /lib/home/cancel_trip_feedback.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_cab/utils/CustomTextStyle.dart'; 3 | 4 | import '../fare_info.dart'; 5 | import 'package:flutter_cab/modal/CancelTrip.dart'; 6 | 7 | class CancelTripFeedback extends StatefulWidget { 8 | @override 9 | _CancelTripFeedbackState createState() => _CancelTripFeedbackState(); 10 | } 11 | 12 | class _CancelTripFeedbackState extends State { 13 | List listCancelReason = new List(); 14 | 15 | int selectedPosition; 16 | 17 | @override 18 | void initState() { 19 | super.initState(); 20 | createListOfReason(); 21 | } 22 | 23 | createListOfReason() { 24 | listCancelReason.add(createCancelReason("Change my mind", false)); 25 | listCancelReason.add(createCancelReason("Driver is late", false)); 26 | listCancelReason.add(createCancelReason("I got lift", false)); 27 | listCancelReason.add(createCancelReason("Driver too far", false)); 28 | listCancelReason.add(createCancelReason("Driver ask to cancel", false)); 29 | listCancelReason.add(createCancelReason("Other", false)); 30 | } 31 | 32 | createCancelReason(String title, bool isSelected) { 33 | return new CancelTrip(title, isSelected); 34 | } 35 | 36 | @override 37 | Widget build(BuildContext context) { 38 | return MaterialApp( 39 | home: Scaffold( 40 | backgroundColor: Colors.white, 41 | body: Container( 42 | child: Column( 43 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 44 | children: [ 45 | Card( 46 | elevation: 4, 47 | margin: EdgeInsets.all(0), 48 | shape: RoundedRectangleBorder( 49 | borderRadius: BorderRadius.only( 50 | bottomRight: Radius.circular(16), 51 | bottomLeft: Radius.circular(16))), 52 | child: Container( 53 | decoration: BoxDecoration( 54 | borderRadius: BorderRadius.only( 55 | bottomRight: Radius.circular(16), 56 | bottomLeft: Radius.circular(16)), 57 | boxShadow: [ 58 | BoxShadow( 59 | color: Colors.grey.shade50, 60 | blurRadius: 10, 61 | offset: Offset(0, 1)), 62 | ]), 63 | child: Column( 64 | crossAxisAlignment: CrossAxisAlignment.start, 65 | children: [ 66 | SizedBox( 67 | height: 24, 68 | ), 69 | Container( 70 | height: 100, 71 | decoration: BoxDecoration( 72 | image: DecorationImage( 73 | image: AssetImage("images/ic_logo.png"), 74 | )), 75 | ), 76 | SizedBox( 77 | height: 24, 78 | ), 79 | Container( 80 | child: Text( 81 | "Cancel Request", 82 | style: CustomTextStyle.boldTextStyle 83 | .copyWith(fontSize: 16), 84 | ), 85 | margin: EdgeInsets.only(left: 20), 86 | ), 87 | SizedBox( 88 | height: 16, 89 | ), 90 | ListView.builder( 91 | key: Key("ListMenu"), 92 | shrinkWrap: true, 93 | primary: true, 94 | itemBuilder: (context, position) { 95 | return createMenuListItemWidget(position); 96 | }, 97 | itemCount: listCancelReason.length, 98 | ), 99 | SizedBox( 100 | height: 8, 101 | ), 102 | ], 103 | )), 104 | ), 105 | Container( 106 | alignment: Alignment.bottomCenter, 107 | child: Row( 108 | mainAxisAlignment: MainAxisAlignment.spaceAround, 109 | crossAxisAlignment: CrossAxisAlignment.start, 110 | children: [ 111 | Expanded( 112 | flex: 50, 113 | child: Container( 114 | margin: EdgeInsets.only(left: 16), 115 | child: RaisedButton( 116 | onPressed: () { 117 | Navigator.of(context).push(new MaterialPageRoute(builder: (context)=>FareInfo())); 118 | }, 119 | shape: RoundedRectangleBorder( 120 | borderRadius: 121 | BorderRadius.all(Radius.circular(100)), 122 | side: BorderSide( 123 | color: Colors.grey.shade400, width: 1)), 124 | color: Colors.white, 125 | child: Text( 126 | "Submit", 127 | style: CustomTextStyle.boldTextStyle 128 | .copyWith(color: Colors.black), 129 | ), 130 | ), 131 | ), 132 | ), 133 | Expanded( 134 | flex: 50, 135 | child: Container( 136 | margin: EdgeInsets.only(left: 4, right: 16), 137 | child: RaisedButton( 138 | onPressed: () {}, 139 | shape: RoundedRectangleBorder( 140 | borderRadius: 141 | BorderRadius.all(Radius.circular(100)), 142 | side: BorderSide( 143 | color: Colors.grey.shade400, width: 1)), 144 | color: Colors.white, 145 | child: Text( 146 | "Cancel", 147 | style: CustomTextStyle.boldTextStyle 148 | .copyWith(color: Colors.black), 149 | ), 150 | ), 151 | ), 152 | ), 153 | ], 154 | ), 155 | ) 156 | ], 157 | ), 158 | ), 159 | ), 160 | ); 161 | } 162 | 163 | createMenuListItemWidget(int position) { 164 | return GestureDetector( 165 | onTap: () { 166 | setState(() { 167 | selectedPosition = position; 168 | }); 169 | }, 170 | child: Container( 171 | padding: EdgeInsets.only(top: 8, bottom: 8, left: 8, right: 8), 172 | child: Row( 173 | crossAxisAlignment: CrossAxisAlignment.center, 174 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 175 | children: [ 176 | Container( 177 | child: Text(listCancelReason[position].title), 178 | margin: EdgeInsets.only(left: 12), 179 | ), 180 | Container( 181 | width: 20, 182 | height: 20, 183 | child: Icon( 184 | Icons.check, 185 | size: 16, 186 | color: Colors.white, 187 | ), 188 | decoration: BoxDecoration( 189 | color: selectedPosition == position 190 | ? Colors.tealAccent.shade400 191 | : Colors.transparent, 192 | shape: BoxShape.circle), 193 | ) 194 | ], 195 | ), 196 | ), 197 | ); 198 | } 199 | } 200 | -------------------------------------------------------------------------------- /lib/home/dialog/payment_dialog.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_cab/utils/CustomTextStyle.dart'; 3 | 4 | import '../../add_card.dart'; 5 | 6 | class PaymentDialog extends StatelessWidget { 7 | @override 8 | Widget build(BuildContext context) { 9 | return Container( 10 | color: Colors.black.withOpacity(0.2), 11 | alignment: Alignment.topCenter, 12 | child: Card( 13 | margin: EdgeInsets.all(0), 14 | shape: RoundedRectangleBorder( 15 | borderRadius: BorderRadius.only( 16 | bottomRight: Radius.circular(16), 17 | bottomLeft: Radius.circular(16))), 18 | elevation: 0, 19 | child: Container( 20 | decoration: BoxDecoration( 21 | borderRadius: BorderRadius.only( 22 | bottomRight: Radius.circular(16), 23 | bottomLeft: Radius.circular(16)), 24 | ), 25 | height: 200, 26 | child: Column( 27 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 28 | children: [ 29 | Stack( 30 | children: [ 31 | Align( 32 | alignment: Alignment.topLeft, 33 | child: IconButton( 34 | icon: Icon(Icons.keyboard_backspace), 35 | onPressed: () { 36 | Navigator.of(context).pop(); 37 | }, 38 | color: Colors.black, 39 | ), 40 | ), 41 | Align( 42 | alignment: Alignment.center, 43 | child: Container( 44 | margin: EdgeInsets.only(top: 16), 45 | alignment: Alignment.center, 46 | child: Text( 47 | "Payment", 48 | style: CustomTextStyle.mediumTextStyle, 49 | ), 50 | ), 51 | ) 52 | ], 53 | ), 54 | Expanded( 55 | child: Container( 56 | alignment: Alignment.bottomCenter, 57 | child: Row( 58 | children: [ 59 | Expanded( 60 | child: Column( 61 | mainAxisAlignment: MainAxisAlignment.center, 62 | crossAxisAlignment: CrossAxisAlignment.center, 63 | children: [ 64 | Image( 65 | image: AssetImage("images/payments/cash.png"), 66 | height: 40, 67 | width: 40, 68 | ), 69 | SizedBox( 70 | height: 4, 71 | ), 72 | Text("Cash", 73 | style: CustomTextStyle.regularTextStyle 74 | .copyWith(fontSize: 12)) 75 | ], 76 | ), 77 | flex: 32, 78 | ), 79 | Container( 80 | margin: EdgeInsets.only(bottom: 16), 81 | child: Container( 82 | width: 1, 83 | height: 30, 84 | color: Colors.grey, 85 | ), 86 | ), 87 | Expanded( 88 | child: GestureDetector( 89 | onTap: (){ 90 | Navigator.of(context).pushReplacement(new MaterialPageRoute(builder: (context)=>AddCard())); 91 | }, 92 | child: Container( 93 | child: Column( 94 | mainAxisAlignment: MainAxisAlignment.center, 95 | crossAxisAlignment: CrossAxisAlignment.center, 96 | children: [ 97 | Image( 98 | image: AssetImage("images/payments/card.png"), 99 | height: 40, 100 | width: 40, 101 | color: Colors.grey, 102 | ), 103 | SizedBox( 104 | height: 4, 105 | ), 106 | Text("Card", 107 | style: 108 | CustomTextStyle.regularTextStyle.copyWith( 109 | fontSize: 12, 110 | color: Colors.grey, 111 | )) 112 | ], 113 | ), 114 | ), 115 | ), 116 | flex: 32, 117 | ), 118 | Container( 119 | margin: EdgeInsets.only(bottom: 16), 120 | child: Container( 121 | width: 1, 122 | height: 30, 123 | color: Colors.grey, 124 | ), 125 | ), 126 | Expanded( 127 | child: Column( 128 | mainAxisAlignment: MainAxisAlignment.center, 129 | crossAxisAlignment: CrossAxisAlignment.center, 130 | children: [ 131 | Image( 132 | image: AssetImage("images/payments/points.png"), 133 | height: 40, 134 | width: 40, 135 | color: Colors.grey, 136 | ), 137 | SizedBox( 138 | height: 4, 139 | ), 140 | Text("Points", 141 | style: 142 | CustomTextStyle.regularTextStyle.copyWith( 143 | fontSize: 12, 144 | color: Colors.grey, 145 | )) 146 | ], 147 | ), 148 | flex: 32, 149 | ) 150 | ], 151 | ), 152 | ), 153 | flex: 100, 154 | ) 155 | ], 156 | ), 157 | ), 158 | ), 159 | ); 160 | } 161 | } 162 | -------------------------------------------------------------------------------- /lib/home/dialog/promo_code_dialog.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_cab/utils/CustomTextStyle.dart'; 3 | 4 | class PromoCodeDialog extends StatefulWidget { 5 | @override 6 | _PromoCodeDialogState createState() => _PromoCodeDialogState(); 7 | } 8 | 9 | class _PromoCodeDialogState extends State { 10 | 11 | TextEditingController _mobileNumberController = new TextEditingController(); 12 | 13 | bool isTextWritten = false; 14 | 15 | 16 | @override 17 | Widget build(BuildContext context) { 18 | return Container( 19 | alignment: Alignment.topCenter, 20 | child: Card( 21 | margin: EdgeInsets.all(0), 22 | shape: RoundedRectangleBorder( 23 | borderRadius: BorderRadius.only( 24 | bottomRight: Radius.circular(16), 25 | bottomLeft: Radius.circular(16))), 26 | elevation: 0, 27 | child: Container( 28 | decoration: BoxDecoration( 29 | borderRadius: BorderRadius.only( 30 | bottomRight: Radius.circular(16), 31 | bottomLeft: Radius.circular(16)), 32 | boxShadow: [ 33 | BoxShadow(color: Colors.grey.shade50, blurRadius: 1,offset: Offset(0, 1)), 34 | ] 35 | ), 36 | height: 200, 37 | child: Column( 38 | children: [ 39 | Container( 40 | margin: EdgeInsets.only(left: 14,top: 8), 41 | child: Row( 42 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 43 | children: [ 44 | Container( 45 | alignment: Alignment.center, 46 | child: Text( 47 | "Promo Code", 48 | style: CustomTextStyle.mediumTextStyle, 49 | ), 50 | ), 51 | IconButton( 52 | icon: Icon(Icons.close), 53 | onPressed: () { 54 | Navigator.of(context).pop(); 55 | }, 56 | color: Colors.black, 57 | ), 58 | ], 59 | ), 60 | ), 61 | Container( 62 | margin: EdgeInsets.only(left: 12,right: 12, top: 8), 63 | child: Stack( 64 | alignment: Alignment.center, 65 | children: [ 66 | TextField( 67 | decoration: InputDecoration( 68 | border: border, 69 | enabledBorder: border, 70 | focusedBorder: border, 71 | contentPadding: EdgeInsets.only( 72 | left: 8, 73 | right: 32, 74 | top: 10, 75 | bottom: 10), 76 | hintText: "Promo Code", 77 | hasFloatingPlaceholder: true, 78 | hintStyle: CustomTextStyle 79 | .regularTextStyle 80 | .copyWith( 81 | color: Colors.grey, fontSize: 12), 82 | labelStyle: CustomTextStyle 83 | .regularTextStyle 84 | .copyWith( 85 | color: Colors.black, 86 | fontSize: 12), 87 | ), 88 | onChanged: (value) { 89 | if (value.trim().length > 0) { 90 | setState(() { 91 | this.isTextWritten = true; 92 | }); 93 | } else { 94 | this.isTextWritten = false; 95 | } 96 | }, 97 | controller: _mobileNumberController, 98 | keyboardType: TextInputType.phone, 99 | ), 100 | createClearText() 101 | ], 102 | ), 103 | decoration: BoxDecoration( 104 | borderRadius: 105 | BorderRadius.all(Radius.circular(4)), 106 | border: Border.all( 107 | width: 1, color: Colors.grey.shade400)), 108 | ), 109 | Expanded(child: Container( 110 | margin: EdgeInsets.only(bottom: 16,left: 14,right: 12), 111 | alignment: Alignment.bottomCenter, 112 | child: Row( 113 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 114 | crossAxisAlignment: CrossAxisAlignment.center , 115 | children: [ 116 | Container( 117 | child: Text("Please enter your promo code\nand save it on your ride",softWrap: true,style: CustomTextStyle.regularTextStyle.copyWith(color: Colors.grey,fontSize: 12),), 118 | ), 119 | Container( 120 | height: 50, 121 | width: 50, 122 | child: Icon(Icons.check,color: Colors.white,), 123 | decoration: BoxDecoration( 124 | shape: BoxShape.circle, 125 | color: Colors.tealAccent.shade400 126 | ), 127 | ) 128 | ], 129 | ), 130 | ),flex: 100,) 131 | ], 132 | ),), 133 | ), 134 | ); 135 | } 136 | 137 | createClearText() { 138 | if (isTextWritten) { 139 | return Align( 140 | alignment: Alignment.topRight, 141 | child: GestureDetector( 142 | onTap: () { 143 | _mobileNumberController.clear(); 144 | setState(() { 145 | isTextWritten = false; 146 | }); 147 | }, 148 | child: Container( 149 | margin: EdgeInsets.only(right: 8), 150 | width: 16, 151 | height: 16, 152 | decoration: BoxDecoration( 153 | color: Colors.grey.shade400, shape: BoxShape.circle), 154 | child: Icon( 155 | Icons.close, 156 | size: 14, 157 | color: Colors.white, 158 | ), 159 | alignment: Alignment.center, 160 | ), 161 | ), 162 | ); 163 | } else { 164 | return Align( 165 | alignment: Alignment.topRight, 166 | child: Container(), 167 | ); 168 | } 169 | } 170 | 171 | var border = OutlineInputBorder( 172 | borderRadius: BorderRadius.all(Radius.circular(4)), 173 | borderSide: BorderSide(color: Colors.white, width: 1)); 174 | } 175 | -------------------------------------------------------------------------------- /lib/home/home.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_cab/home/pickup_user.dart'; 3 | import 'package:flutter_cab/menu/menu.dart'; 4 | import 'package:flutter_cab/utils/CustomTextStyle.dart'; 5 | import 'package:google_maps_flutter/google_maps_flutter.dart'; 6 | 7 | class Home extends StatefulWidget { 8 | @override 9 | _HomeState createState() => _HomeState(); 10 | } 11 | 12 | class _HomeState extends State { 13 | var _ahmedabad = LatLng(23.0225, 72.5714); 14 | Set markers = new Set(); 15 | 16 | GoogleMapController mapController; 17 | BitmapDescriptor bitmapDescriptor; 18 | 19 | @override 20 | void initState() { 21 | // TODO: implement initState 22 | super.initState(); 23 | BitmapDescriptor.fromAssetImage( 24 | ImageConfiguration(), "images/map-marker.png") 25 | .then((bitmap) { 26 | bitmapDescriptor = bitmap; 27 | }); 28 | markers.add(Marker( 29 | markerId: MarkerId("ahmedabad"), 30 | position: _ahmedabad, 31 | icon: bitmapDescriptor)); 32 | } 33 | 34 | void _onMapCreated(GoogleMapController mapController) { 35 | this.mapController = mapController; 36 | } 37 | 38 | @override 39 | Widget build(BuildContext context) { 40 | return MaterialApp( 41 | home: Scaffold( 42 | resizeToAvoidBottomPadding: false, 43 | body: Builder( 44 | builder: (context) { 45 | return Container( 46 | child: Stack( 47 | children: [ 48 | GoogleMap( 49 | initialCameraPosition: 50 | CameraPosition(target: _ahmedabad, zoom: 14), 51 | myLocationEnabled: true, 52 | myLocationButtonEnabled: true, 53 | markers: markers, 54 | onMapCreated: _onMapCreated, 55 | ), 56 | Column( 57 | children: [ 58 | SizedBox( 59 | height: 20, 60 | ), 61 | Align( 62 | alignment: Alignment.topRight, 63 | child: Container( 64 | child: IconButton( 65 | icon: Icon(Icons.menu), onPressed: () { 66 | showDialog(context: context,builder: (context){ 67 | return Menu(); 68 | }); 69 | }), 70 | ), 71 | ), 72 | Card( 73 | margin: 74 | EdgeInsets.symmetric(horizontal: 30, vertical: 12), 75 | child: Container( 76 | child: Row( 77 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 78 | children: [ 79 | Container( 80 | width: 10, 81 | margin: EdgeInsets.only(left: 16), 82 | decoration: BoxDecoration( 83 | shape: BoxShape.circle, 84 | color: Colors.green, 85 | ), 86 | height: 10, 87 | ), 88 | Expanded( 89 | child: Container( 90 | margin: EdgeInsets.only(left: 16), 91 | child: Text( 92 | "R.A Mel Mawatha", 93 | style: CustomTextStyle.regularTextStyle 94 | .copyWith(color: Colors.grey.shade800), 95 | ), 96 | ), 97 | flex: 100, 98 | ), 99 | IconButton( 100 | icon: Icon( 101 | Icons.favorite_border, 102 | color: Colors.grey, 103 | size: 18, 104 | ), 105 | onPressed: () {}) 106 | ], 107 | ), 108 | ), 109 | ), 110 | Expanded( 111 | child: Container( 112 | width: double.infinity, 113 | alignment: Alignment.centerRight, 114 | child: Column( 115 | mainAxisAlignment: MainAxisAlignment.center, 116 | crossAxisAlignment: CrossAxisAlignment.end, 117 | children: [ 118 | Container( 119 | decoration: BoxDecoration( 120 | borderRadius: BorderRadius.only(topLeft: Radius.circular(8),bottomLeft: Radius.circular(8)), 121 | boxShadow: [ 122 | BoxShadow(color: Colors.grey.shade400,blurRadius: 20,offset: Offset(-6, -10)), 123 | BoxShadow(color: Colors.grey.shade400,blurRadius: 20,offset: Offset(-6, 10)) 124 | ] 125 | ), 126 | child: Card( 127 | elevation: 1, 128 | margin: EdgeInsets.all(0), 129 | shape: RoundedRectangleBorder(borderRadius: BorderRadius.only(topLeft: Radius.circular(8),bottomLeft: Radius.circular(8))), 130 | child: Container( 131 | margin: EdgeInsets.all(24), 132 | child: Column( 133 | children: [ 134 | Text("Car",style: CustomTextStyle.mediumTextStyle,), 135 | SizedBox(height: 2,), 136 | Image(image: AssetImage("images/car.png"),), 137 | SizedBox(height: 12,), 138 | Text("Budget",style: CustomTextStyle.mediumTextStyle.copyWith(color: Colors.grey),), 139 | SizedBox(height: 2,), 140 | Image(image: AssetImage("images/hatchback.png"),), 141 | SizedBox(height: 12,), 142 | Text("City",style: CustomTextStyle.mediumTextStyle.copyWith(color: Colors.grey),), 143 | SizedBox(height: 2,), 144 | Image(image: AssetImage("images/city.png"),), 145 | SizedBox(height: 12,), 146 | Text("Tuk",style: CustomTextStyle.mediumTextStyle.copyWith(color: Colors.grey),), 147 | SizedBox(height: 2,), 148 | Image(image: AssetImage("images/tuk.png"),), 149 | SizedBox(height: 12,), 150 | Text("Van",style: CustomTextStyle.mediumTextStyle.copyWith(color: Colors.grey),), 151 | SizedBox(height: 2,), 152 | Image(image: AssetImage("images/van.png"),), 153 | ], 154 | ), 155 | ), 156 | ), 157 | ) 158 | ], 159 | ), 160 | ), 161 | flex: 100, 162 | ), 163 | Container( 164 | width: 36, 165 | height: 36, 166 | decoration: BoxDecoration( 167 | color: Colors.black.withOpacity(0.4), 168 | shape: BoxShape.circle, 169 | image: DecorationImage( 170 | image: AssetImage("images/navigation.png"), 171 | )), 172 | ), 173 | SizedBox( 174 | height: 20, 175 | ), 176 | RaisedButton( 177 | onPressed: () { 178 | Navigator.of(context).push(new MaterialPageRoute(builder: (context)=>PickupUser())); 179 | }, 180 | child: Text( 181 | "I'm Here!", 182 | style: CustomTextStyle.regularTextStyle 183 | .copyWith(color: Colors.brown.shade400), 184 | ), 185 | padding: 186 | EdgeInsets.symmetric(horizontal: 40, vertical: 4), 187 | color: Colors.amber, 188 | shape: RoundedRectangleBorder( 189 | borderRadius: BorderRadius.all(Radius.circular(24))), 190 | ), 191 | SizedBox( 192 | height: 20, 193 | ) 194 | ], 195 | ) 196 | ], 197 | ), 198 | ); 199 | }, 200 | ), 201 | ), 202 | ); 203 | } 204 | } 205 | -------------------------------------------------------------------------------- /lib/home/payment_menu.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:google_maps_flutter/google_maps_flutter.dart'; 3 | 4 | import 'dialog/payment_dialog.dart'; 5 | 6 | 7 | class PaymentMenu extends StatelessWidget { 8 | 9 | var _ahmedabad = LatLng(23.0225, 72.5714); 10 | Set markers = new Set(); 11 | GoogleMapController mapController; 12 | void _onMapCreated(GoogleMapController mapController) { 13 | this.mapController = mapController; 14 | } 15 | 16 | addMarker(){ 17 | markers.add(Marker( 18 | markerId: MarkerId("ahmedabad"), 19 | position: _ahmedabad, 20 | infoWindow: InfoWindow(title: "Title", snippet: "Content"),)); 21 | } 22 | @override 23 | Widget build(BuildContext context) { 24 | addMarker(); 25 | return Scaffold( 26 | body: Container( 27 | key: Key("ContainerPaymentMenu"), 28 | child: Stack( 29 | children: [ 30 | GoogleMap( 31 | key: Key("googleMap"), 32 | initialCameraPosition: 33 | CameraPosition(target: _ahmedabad, zoom: 14), 34 | myLocationEnabled: true, 35 | myLocationButtonEnabled: true, 36 | markers: markers, 37 | onMapCreated: _onMapCreated, 38 | ), 39 | PaymentDialog() 40 | ], 41 | ), 42 | ) 43 | ); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /lib/login_password.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_cab/home/home.dart'; 3 | import 'package:flutter_cab/utils/CustomTextStyle.dart'; 4 | 5 | import 'forgot_password.dart'; 6 | 7 | class LoginPassword extends StatefulWidget { 8 | @override 9 | _LoginPasswordState createState() => _LoginPasswordState(); 10 | } 11 | 12 | class _LoginPasswordState extends State { 13 | bool isTextWritten = false; 14 | 15 | TextEditingController _mobileNumberController = new TextEditingController(); 16 | 17 | @override 18 | Widget build(BuildContext context) { 19 | return MaterialApp( 20 | home: Scaffold( 21 | backgroundColor: Colors.white, 22 | body: SingleChildScrollView( 23 | child: Card( 24 | elevation: 4, 25 | borderOnForeground: true, 26 | shape: RoundedRectangleBorder( 27 | borderRadius: BorderRadius.only( 28 | bottomRight: Radius.circular(16), 29 | bottomLeft: Radius.circular(16))), 30 | margin: EdgeInsets.only(left: 0, right: 0, bottom: 4), 31 | child: Container( 32 | decoration: BoxDecoration( 33 | borderRadius: BorderRadius.only( 34 | bottomRight: Radius.circular(16), 35 | bottomLeft: Radius.circular(16)), 36 | shape: BoxShape.rectangle, 37 | color: Colors.white, 38 | boxShadow: [ 39 | BoxShadow(color: Colors.grey.shade50, blurRadius: 5), 40 | ]), 41 | width: double.infinity, 42 | padding: EdgeInsets.only(top: 32), 43 | child: Column( 44 | crossAxisAlignment: CrossAxisAlignment.start, 45 | children: [ 46 | SizedBox(height: 14), 47 | Container( 48 | alignment: Alignment.center, 49 | child: Image( 50 | image: AssetImage("images/ic_logo.png"), 51 | width: 80, 52 | height: 80, 53 | ), 54 | ), 55 | SizedBox(height: 14), 56 | Container( 57 | margin: EdgeInsets.only(left: 16, top: 8), 58 | child: Text( 59 | "Enter your password", 60 | style: CustomTextStyle.regularTextStyle, 61 | ), 62 | ), 63 | Container( 64 | margin: EdgeInsets.only(left: 16, top: 4), 65 | child: Text( 66 | "Enter your password ride with Kangaroo cabs", 67 | style: CustomTextStyle.regularTextStyle.copyWith( 68 | color: Colors.grey, 69 | fontSize: 12, 70 | fontWeight: FontWeight.w400), 71 | ), 72 | ), 73 | SizedBox(height: 14), 74 | Container( 75 | margin: EdgeInsets.only(right: 14, left: 14), 76 | child: Row( 77 | children: [ 78 | Expanded( 79 | child: Container( 80 | child: Stack( 81 | alignment: Alignment.center, 82 | children: [ 83 | TextField( 84 | decoration: InputDecoration( 85 | border: border, 86 | enabledBorder: border, 87 | focusedBorder: border, 88 | contentPadding: EdgeInsets.only( 89 | left: 8, right: 32, top: 6, bottom: 6), 90 | hintText: "Enter your password", 91 | hasFloatingPlaceholder: true, 92 | hintStyle: CustomTextStyle.regularTextStyle 93 | .copyWith( 94 | color: Colors.grey, fontSize: 12), 95 | labelStyle: CustomTextStyle.regularTextStyle 96 | .copyWith( 97 | color: Colors.black, fontSize: 12), 98 | ), 99 | controller: _mobileNumberController, 100 | keyboardType: TextInputType.text, 101 | obscureText: isTextWritten, 102 | ), 103 | createClearText() 104 | ], 105 | ), 106 | decoration: BoxDecoration( 107 | borderRadius: 108 | BorderRadius.all(Radius.circular(4)), 109 | border: Border.all( 110 | width: 1, color: Colors.grey.shade400)), 111 | ), 112 | flex: 100, 113 | ) 114 | ], 115 | ), 116 | ), 117 | SizedBox(height: 16), 118 | Row( 119 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 120 | children: [ 121 | GestureDetector( 122 | onTap: () { 123 | Navigator.of(context).push(new MaterialPageRoute( 124 | builder: (context) => ForgotPassword())); 125 | }, 126 | child: Container( 127 | child: Text( 128 | "I forgot my password", 129 | style: CustomTextStyle.mediumTextStyle.copyWith( 130 | color: Colors.grey.shade600, fontSize: 12), 131 | ), 132 | margin: EdgeInsets.only(left: 18), 133 | ), 134 | ), 135 | GestureDetector( 136 | onTap: (){ 137 | Navigator.of(context).pushReplacement(new MaterialPageRoute(builder: (context)=>Home())); 138 | }, 139 | child: Container( 140 | width: 40, 141 | margin: EdgeInsets.only(right: 10), 142 | height: 40, 143 | decoration: BoxDecoration( 144 | color: Colors.amber, shape: BoxShape.circle), 145 | child: Icon( 146 | Icons.arrow_forward, 147 | color: Colors.white, 148 | ), 149 | ), 150 | ) 151 | ], 152 | ), 153 | SizedBox(height: 24), 154 | ], 155 | ), 156 | ), 157 | ), 158 | ), 159 | ), 160 | ); 161 | } 162 | 163 | createClearText() { 164 | return Align( 165 | alignment: Alignment.topRight, 166 | child: GestureDetector( 167 | onTap: () { 168 | setState(() { 169 | isTextWritten = !isTextWritten; 170 | }); 171 | }, 172 | child: Container( 173 | margin: EdgeInsets.only(right: 8), 174 | width: 20, 175 | height: 20, 176 | child: Icon( 177 | isTextWritten ? Icons.visibility : Icons.visibility_off, 178 | size: 20, 179 | color: Colors.grey, 180 | ), 181 | alignment: Alignment.center, 182 | ), 183 | ), 184 | ); 185 | } 186 | 187 | var border = OutlineInputBorder( 188 | borderRadius: BorderRadius.all(Radius.circular(4)), 189 | borderSide: BorderSide(color: Colors.white, width: 1)); 190 | } 191 | -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_cab/splash.dart'; 3 | 4 | import 'login.dart'; 5 | 6 | /* 7 | * Start Date : 16-07-2019 8 | * Author : Aakash Kareliya 9 | * */ 10 | void main() => runApp(new MaterialApp( 11 | home: Splash(), 12 | routes: { 13 | "\login": (context) => Login(), 14 | }, 15 | )); 16 | 17 | class MyApp extends StatelessWidget { 18 | @override 19 | Widget build(BuildContext context) { 20 | return MaterialApp( 21 | debugShowCheckedModeBanner: false, 22 | home: Splash(), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/menu/menu.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_cab/home/payment_menu.dart'; 3 | import 'package:flutter_cab/modal/menu_list_item.dart'; 4 | import 'package:flutter_cab/utils/CustomTextStyle.dart'; 5 | import 'package:flutter_cab/utils/menu_title.dart'; 6 | 7 | import '../book_late_pick_date.dart'; 8 | import '../emergency_contact.dart'; 9 | import '../help_support.dart'; 10 | import '../my_trips.dart'; 11 | import '../news_offers.dart'; 12 | import '../profile.dart'; 13 | import '../rate_card.dart'; 14 | 15 | class Menu extends StatefulWidget { 16 | @override 17 | _MenuState createState() => _MenuState(); 18 | } 19 | 20 | class _MenuState extends State { 21 | List listMenuItem = new List(); 22 | 23 | @override 24 | void initState() { 25 | // TODO: implement initState 26 | super.initState(); 27 | listMenuItem 28 | .add(createMenuItem(MenuTitle.MENU_PROFILE, "images/menu/user.png")); 29 | listMenuItem 30 | .add(createMenuItem(MenuTitle.MENU_PAYMENT, "images/menu/payment.png")); 31 | listMenuItem.add(createMenuItem( 32 | MenuTitle.MENU_BOOK_LATER, "images/menu/book_later.png")); 33 | listMenuItem.add( 34 | createMenuItem(MenuTitle.MENU_MY_TRIPS, "images/menu/my_trips.png")); 35 | listMenuItem.add( 36 | createMenuItem(MenuTitle.MENU_RATE_CARD, "images/menu/rate_card.png")); 37 | listMenuItem.add(createMenuItem( 38 | MenuTitle.MENU_NEWS_OFFERS, "images/menu/news_offers.png")); 39 | listMenuItem.add(createMenuItem(MenuTitle.MENU_EMERGENCY_CONTACTS, 40 | "images/menu/emergency_contacts.png")); 41 | listMenuItem.add(createMenuItem( 42 | MenuTitle.MENU_HELP_SUPPORT, "images/menu/help_support.png")); 43 | } 44 | 45 | createMenuItem(String title, String imgIcon) { 46 | return MenuListItem(title, imgIcon); 47 | } 48 | 49 | @override 50 | Widget build(BuildContext context) { 51 | return ListView( 52 | children: [ 53 | Card( 54 | margin: EdgeInsets.all(0), 55 | shape: RoundedRectangleBorder( 56 | borderRadius: BorderRadius.only( 57 | bottomRight: Radius.circular(16), 58 | bottomLeft: Radius.circular(16))), 59 | elevation: 0, 60 | child: Container( 61 | decoration: BoxDecoration( 62 | borderRadius: BorderRadius.only( 63 | bottomRight: Radius.circular(16), 64 | bottomLeft: Radius.circular(16)), 65 | boxShadow: [ 66 | BoxShadow( 67 | color: Colors.grey.shade50, 68 | blurRadius: 1, 69 | offset: Offset(0, 1)), 70 | ]), 71 | child: Column( 72 | children: [ 73 | Container( 74 | margin: EdgeInsets.only(left: 12, top: 8, right: 0), 75 | child: Row( 76 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 77 | crossAxisAlignment: CrossAxisAlignment.center, 78 | children: [ 79 | Column( 80 | key: Key("UserNameMobile"), 81 | crossAxisAlignment: CrossAxisAlignment.start, 82 | children: [ 83 | SizedBox( 84 | height: 8, 85 | ), 86 | Text( 87 | "Ishan Madushka", 88 | style: CustomTextStyle.mediumTextStyle, 89 | ), 90 | SizedBox( 91 | height: 4, 92 | ), 93 | Text("+94 71 87 86 729", 94 | style: CustomTextStyle.mediumTextStyle 95 | .copyWith(color: Colors.grey, fontSize: 12)) 96 | ], 97 | ), 98 | IconButton( 99 | key: Key("CloseIcon"), 100 | icon: Icon(Icons.close), 101 | onPressed: () { 102 | Navigator.of(context).pop(); 103 | }) 104 | ], 105 | ), 106 | ), 107 | SizedBox( 108 | height: 8, 109 | ), 110 | ListView.builder( 111 | key: Key("ListMenu"), 112 | shrinkWrap: true, 113 | primary: true, 114 | itemBuilder: (context, position) { 115 | return createMenuListItemWidget(position); 116 | }, 117 | itemCount: listMenuItem.length, 118 | ), 119 | SizedBox( 120 | height: 8, 121 | ), 122 | ], 123 | )), 124 | ) 125 | ], 126 | ); 127 | } 128 | 129 | createMenuListItemWidget(int position) { 130 | return GestureDetector( 131 | onTap: () { 132 | if (listMenuItem[position].title == MenuTitle.MENU_PROFILE) { 133 | Navigator.of(context) 134 | .push(new MaterialPageRoute(builder: (context) => Profile())); 135 | } else if (listMenuItem[position].title == MenuTitle.MENU_PAYMENT) { 136 | Navigator.of(context) 137 | .push(new MaterialPageRoute(builder: (context) => PaymentMenu())); 138 | } else if (listMenuItem[position].title == MenuTitle.MENU_BOOK_LATER) { 139 | Navigator.of(context).push(new MaterialPageRoute( 140 | builder: (context) => BookLaterDatePicker())); 141 | } else if (listMenuItem[position].title == MenuTitle.MENU_MY_TRIPS) { 142 | Navigator.of(context) 143 | .push(new MaterialPageRoute(builder: (context) => MyTrips())); 144 | } else if (listMenuItem[position].title == MenuTitle.MENU_RATE_CARD) { 145 | Navigator.of(context) 146 | .push(new MaterialPageRoute(builder: (context) => RateCard())); 147 | } else if (listMenuItem[position].title == 148 | MenuTitle.MENU_EMERGENCY_CONTACTS) { 149 | Navigator.of(context).push( 150 | new MaterialPageRoute(builder: (context) => EmergencyContacts())); 151 | } else if (listMenuItem[position].title == 152 | MenuTitle.MENU_HELP_SUPPORT) { 153 | Navigator.of(context) 154 | .push(new MaterialPageRoute(builder: (context) => HelpSupport())); 155 | } else if (listMenuItem[position].title == MenuTitle.MENU_NEWS_OFFERS) { 156 | Navigator.of(context) 157 | .push(new MaterialPageRoute(builder: (context) => NewsOffers())); 158 | } 159 | }, 160 | child: Container( 161 | padding: EdgeInsets.only(top: 8, bottom: 8, left: 8, right: 8), 162 | child: Row( 163 | crossAxisAlignment: CrossAxisAlignment.center, 164 | mainAxisAlignment: MainAxisAlignment.start, 165 | children: [ 166 | SizedBox( 167 | width: 8, 168 | ), 169 | Image( 170 | image: AssetImage(listMenuItem[position].imgIcon), 171 | ), 172 | SizedBox( 173 | width: 14, 174 | ), 175 | Container( 176 | child: Text(listMenuItem[position].title), 177 | margin: EdgeInsets.only(left: 12), 178 | ) 179 | ], 180 | ), 181 | ), 182 | ); 183 | } 184 | } 185 | -------------------------------------------------------------------------------- /lib/modal/CancelTrip.dart: -------------------------------------------------------------------------------- 1 | class CancelTrip { 2 | String title; 3 | bool isChecked = false; 4 | 5 | CancelTrip(this.title, this.isChecked); 6 | 7 | 8 | } 9 | -------------------------------------------------------------------------------- /lib/modal/favorite_place.dart: -------------------------------------------------------------------------------- 1 | class FavoritePlace{ 2 | String title,subtitle; 3 | FavoritePlace(this.title,this.subtitle); 4 | 5 | } -------------------------------------------------------------------------------- /lib/modal/menu_list_item.dart: -------------------------------------------------------------------------------- 1 | class MenuListItem { 2 | String title; 3 | String imgIcon; 4 | 5 | MenuListItem(this.title, this.imgIcon); 6 | 7 | } -------------------------------------------------------------------------------- /lib/my_trips.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_cab/utils/CustomTextStyle.dart'; 3 | 4 | class MyTrips extends StatefulWidget { 5 | @override 6 | _MyTripsState createState() => _MyTripsState(); 7 | } 8 | 9 | class _MyTripsState extends State { 10 | int selectedTab = 0; 11 | 12 | @override 13 | Widget build(BuildContext context) { 14 | return Scaffold( 15 | backgroundColor: Colors.white, 16 | appBar: AppBar( 17 | backgroundColor: Colors.white, 18 | elevation: 0, 19 | title: Text( 20 | "My Trips", 21 | style: CustomTextStyle.mediumTextStyle.copyWith(color: Colors.black), 22 | ), 23 | centerTitle: true, 24 | leading: IconButton( 25 | icon: Icon( 26 | Icons.keyboard_backspace, 27 | color: Colors.black, 28 | ), 29 | onPressed: () { 30 | Navigator.pop(context); 31 | }), 32 | ), 33 | body: Container( 34 | child: ListView( 35 | children: [ 36 | Row( 37 | children: [ 38 | Expanded( 39 | flex: 33, 40 | child: GestureDetector( 41 | onTap: () { 42 | setState(() { 43 | selectedTab = 0; 44 | }); 45 | }, 46 | child: Container( 47 | alignment: Alignment.center, 48 | padding: EdgeInsets.only( 49 | top: 14, bottom: 14, left: 8, right: 8), 50 | child: Text( 51 | "Completed", 52 | style: CustomTextStyle.mediumTextStyle.copyWith( 53 | color: 54 | selectedTab == 0 ? Colors.black : Colors.grey), 55 | ), 56 | ), 57 | ), 58 | ), 59 | Container( 60 | width: 2, 61 | height: 24, 62 | color: Colors.grey.shade400, 63 | ), 64 | Expanded( 65 | flex: 33, 66 | child: GestureDetector( 67 | onTap: () { 68 | setState(() { 69 | selectedTab = 1; 70 | }); 71 | }, 72 | child: Container( 73 | alignment: Alignment.center, 74 | padding: EdgeInsets.only( 75 | top: 14, bottom: 14, left: 8, right: 8), 76 | child: Text( 77 | "Up Comming", 78 | style: CustomTextStyle.mediumTextStyle.copyWith( 79 | color: 80 | selectedTab == 1 ? Colors.black : Colors.grey), 81 | ), 82 | ), 83 | ), 84 | ), 85 | Container( 86 | width: 2, 87 | height: 24, 88 | color: Colors.grey.shade400, 89 | ), 90 | Expanded( 91 | flex: 33, 92 | child: GestureDetector( 93 | onTap: () { 94 | setState(() { 95 | selectedTab = 2; 96 | }); 97 | }, 98 | child: Container( 99 | alignment: Alignment.center, 100 | padding: EdgeInsets.only( 101 | top: 14, bottom: 14, left: 8, right: 8), 102 | child: Text( 103 | "Cancelled", 104 | style: CustomTextStyle.mediumTextStyle.copyWith( 105 | color: 106 | selectedTab == 2 ? Colors.black : Colors.grey), 107 | ), 108 | ), 109 | ), 110 | ) 111 | ], 112 | ), 113 | Container( 114 | height: 1, 115 | width: double.infinity, 116 | color: Colors.grey, 117 | ), 118 | ListView.builder( 119 | itemBuilder: (context, position) { 120 | if (position == 0 || position % 3 == 0) { 121 | return createDateHeader(); 122 | } else { 123 | return createTripListItem(position); 124 | } 125 | }, 126 | shrinkWrap: true, 127 | primary: false, 128 | itemCount:6) 129 | ], 130 | ), 131 | ), 132 | ); 133 | } 134 | 135 | createDateHeader() { 136 | return Container( 137 | margin: EdgeInsets.only(left: 16,top: 16), 138 | child: Text( 139 | "MON 8 OCT 2018", 140 | style: CustomTextStyle.mediumTextStyle.copyWith(color: Colors.grey), 141 | ), 142 | ); 143 | } 144 | 145 | createTripListItem(int position) { 146 | double bottomMargin = 0.0; 147 | if (position == 5) { 148 | bottomMargin = 16.0; 149 | } 150 | return Container( 151 | margin: EdgeInsets.only(top: 8, bottom: bottomMargin), 152 | child: Row( 153 | crossAxisAlignment: CrossAxisAlignment.start, 154 | children: [ 155 | Container( 156 | width: 40, 157 | height: 40, 158 | margin: EdgeInsets.only(top: 8, left: 16), 159 | decoration: BoxDecoration( 160 | shape: BoxShape.rectangle, 161 | image: DecorationImage(image: AssetImage("images/driver.jpg")), 162 | borderRadius: BorderRadius.circular(6), 163 | boxShadow: [ 164 | BoxShadow( 165 | color: Colors.grey, offset: Offset(0, 1), blurRadius: 10) 166 | ]), 167 | ), 168 | SizedBox( 169 | width: 16, 170 | ), 171 | Expanded( 172 | child: Container( 173 | margin: EdgeInsets.only(right: 16), 174 | decoration: BoxDecoration( 175 | boxShadow: [ 176 | BoxShadow( 177 | color: Colors.grey.shade300, 178 | offset: Offset(4,0), 179 | blurRadius: 10, 180 | ) 181 | ] 182 | ), 183 | child: Card( 184 | elevation: 2, 185 | shape: RoundedRectangleBorder( 186 | borderRadius: BorderRadius.circular(8)), 187 | child: Container( 188 | padding: EdgeInsets.all(12), 189 | child: Column( 190 | mainAxisAlignment: MainAxisAlignment.start, 191 | crossAxisAlignment: CrossAxisAlignment.start, 192 | children: [ 193 | Row( 194 | children: [ 195 | Container( 196 | child: Text( 197 | "Nihal Perera", 198 | style: CustomTextStyle.mediumTextStyle, 199 | ), 200 | ), 201 | Container( 202 | child: RichText( 203 | text: TextSpan(children: [ 204 | TextSpan( 205 | text: "USD", 206 | style: CustomTextStyle.regularTextStyle 207 | .copyWith( 208 | color: Colors.grey, fontSize: 12)), 209 | TextSpan( 210 | text: " 860.00", 211 | style: CustomTextStyle.mediumTextStyle.copyWith( 212 | color: Colors.black, fontSize: 14)) 213 | ])), 214 | ) 215 | ], 216 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 217 | ), 218 | addressRow(Colors.tealAccent.shade700, 219 | "R. A De Mel Mawatha", "07:35 PM"), 220 | addressRow(Colors.redAccent.shade700, 221 | "Piliyandala, Maharagama Road", "08:26 PM") 222 | ], 223 | ), 224 | ), 225 | ), 226 | ), 227 | flex: 100, 228 | ) 229 | ], 230 | ), 231 | ); 232 | } 233 | 234 | addressRow(Color color, String address, String strTime) { 235 | return Container( 236 | margin: EdgeInsets.only(top: 8), 237 | child: Row( 238 | mainAxisAlignment: MainAxisAlignment.start, 239 | crossAxisAlignment: CrossAxisAlignment.start, 240 | children: [ 241 | Container( 242 | height: 10, 243 | width: 10, 244 | margin: EdgeInsets.only(top: 3), 245 | decoration: BoxDecoration(color: color, shape: BoxShape.circle), 246 | ), 247 | SizedBox( 248 | width: 12, 249 | ), 250 | Column( 251 | crossAxisAlignment: CrossAxisAlignment.start, 252 | mainAxisAlignment: MainAxisAlignment.start, 253 | children: [ 254 | Container( 255 | margin: EdgeInsets.only(bottom: 4), 256 | child: Text( 257 | address, 258 | style: CustomTextStyle.boldTextStyle, 259 | ), 260 | ), 261 | Container( 262 | child: Text( 263 | strTime, 264 | style: CustomTextStyle.regularTextStyle 265 | .copyWith(color: Colors.grey, fontSize: 12), 266 | ), 267 | ) 268 | ], 269 | ) 270 | ], 271 | ), 272 | ); 273 | } 274 | } 275 | -------------------------------------------------------------------------------- /lib/news_offers.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_cab/utils/CustomTextStyle.dart'; 3 | 4 | class NewsOffers extends StatefulWidget { 5 | @override 6 | _NewsOffersState createState() => _NewsOffersState(); 7 | } 8 | 9 | class _NewsOffersState extends State { 10 | int selectedTab = 0; 11 | 12 | @override 13 | Widget build(BuildContext context) { 14 | return Scaffold( 15 | backgroundColor: Colors.white, 16 | appBar: AppBar( 17 | backgroundColor: Colors.white, 18 | elevation: 0, 19 | title: Text( 20 | "News and Offers", 21 | style: CustomTextStyle.mediumTextStyle.copyWith(color: Colors.black), 22 | ), 23 | centerTitle: true, 24 | leading: IconButton( 25 | icon: Icon( 26 | Icons.keyboard_backspace, 27 | color: Colors.black, 28 | ), 29 | onPressed: () { 30 | Navigator.pop(context); 31 | }), 32 | ), 33 | body: Container( 34 | child: ListView( 35 | children: [ 36 | Row( 37 | children: [ 38 | Expanded( 39 | flex: 33, 40 | child: GestureDetector( 41 | onTap: () { 42 | setState(() { 43 | selectedTab = 0; 44 | }); 45 | }, 46 | child: Container( 47 | alignment: Alignment.center, 48 | padding: EdgeInsets.only( 49 | top: 14, bottom: 14, left: 8, right: 8), 50 | child: Text( 51 | "News", 52 | style: CustomTextStyle.mediumTextStyle.copyWith( 53 | color: 54 | selectedTab == 0 ? Colors.black : Colors.grey), 55 | ), 56 | ), 57 | ), 58 | ), 59 | Container( 60 | width: 2, 61 | height: 24, 62 | color: Colors.grey.shade400, 63 | ), 64 | Expanded( 65 | flex: 33, 66 | child: GestureDetector( 67 | onTap: () { 68 | setState(() { 69 | selectedTab = 1; 70 | }); 71 | }, 72 | child: Container( 73 | alignment: Alignment.center, 74 | padding: EdgeInsets.only( 75 | top: 14, bottom: 14, left: 8, right: 8), 76 | child: Text( 77 | "Offers", 78 | style: CustomTextStyle.mediumTextStyle.copyWith( 79 | color: 80 | selectedTab == 1 ? Colors.black : Colors.grey), 81 | ), 82 | ), 83 | ), 84 | ), 85 | Container( 86 | width: 2, 87 | height: 24, 88 | color: Colors.grey.shade400, 89 | ), 90 | Expanded( 91 | flex: 33, 92 | child: GestureDetector( 93 | onTap: () { 94 | setState(() { 95 | selectedTab = 2; 96 | }); 97 | }, 98 | child: Container( 99 | alignment: Alignment.center, 100 | padding: EdgeInsets.only( 101 | top: 14, bottom: 14, left: 8, right: 8), 102 | child: Text( 103 | "Promotion", 104 | style: CustomTextStyle.mediumTextStyle.copyWith( 105 | color: 106 | selectedTab == 2 ? Colors.black : Colors.grey), 107 | ), 108 | ), 109 | ), 110 | ) 111 | ], 112 | ), 113 | Container( 114 | height: 1, 115 | width: double.infinity, 116 | color: Colors.grey, 117 | ), 118 | ListView.builder( 119 | itemBuilder: (context, position) { 120 | if (position == 0) { 121 | return createDateHeader(); 122 | } else { 123 | return createTripListItem(position); 124 | } 125 | }, 126 | shrinkWrap: true, 127 | primary: false, 128 | itemCount: 2) 129 | ], 130 | ), 131 | ), 132 | ); 133 | } 134 | 135 | createDateHeader() { 136 | return Container( 137 | margin: EdgeInsets.only(left: 16, top: 16), 138 | child: Text( 139 | "MON 8 OCT 2018", 140 | style: CustomTextStyle.mediumTextStyle.copyWith(color: Colors.grey), 141 | ), 142 | ); 143 | } 144 | 145 | createTripListItem(int position) { 146 | double bottomMargin = 0.0; 147 | if (position == 5) { 148 | bottomMargin = 16.0; 149 | } 150 | return Container( 151 | margin: EdgeInsets.only(top: 8, bottom: bottomMargin), 152 | child: Card( 153 | shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), 154 | margin: EdgeInsets.only(left: 14,right: 14), 155 | color: Colors.amber, 156 | child: Container( 157 | child: Column( 158 | mainAxisAlignment: MainAxisAlignment.start, 159 | crossAxisAlignment: CrossAxisAlignment.start, 160 | children: [ 161 | Row( 162 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 163 | children: [ 164 | Container( 165 | margin: EdgeInsets.all(12), 166 | height: 100, 167 | width: 100, 168 | child: Image(image: AssetImage("images/ic_logo.png")), 169 | ), 170 | Column( 171 | children: [ 172 | Container( 173 | margin: EdgeInsets.only(right: 16), 174 | child: RichText( 175 | text: TextSpan(children: [ 176 | TextSpan( 177 | text: "USD ", 178 | style: CustomTextStyle.regularTextStyle 179 | .copyWith(fontSize: 12)), 180 | TextSpan( 181 | text: "400.00", 182 | style: CustomTextStyle.boldTextStyle 183 | .copyWith(fontSize: 24)) 184 | ])), 185 | ), 186 | SizedBox( 187 | height: 4, 188 | ), 189 | Text( 190 | "CASH BACK", 191 | style: CustomTextStyle.mediumTextStyle 192 | .copyWith(color: Colors.brown), 193 | ) 194 | ], 195 | ) 196 | ], 197 | ), 198 | Container( 199 | child: Text( 200 | "Get Your Cash Back", 201 | style: CustomTextStyle.boldTextStyle, 202 | ), 203 | margin: EdgeInsets.only(left: 16), 204 | ), 205 | Container( 206 | child: Text( 207 | "Get 25% CASH BACK on the first Rs. 400 of your trip value\ntill the 31st October! T&C apply", 208 | style: CustomTextStyle.regularTextStyle 209 | .copyWith(color: Colors.brown, fontSize: 12), 210 | ), 211 | margin: EdgeInsets.only(left: 16,right: 16,bottom: 16,top: 4), 212 | ) 213 | ], 214 | ), 215 | ), 216 | ), 217 | ); 218 | } 219 | } 220 | -------------------------------------------------------------------------------- /lib/profile.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_cab/utils/CustomTextStyle.dart'; 3 | import 'package:flutter_cab/utils/DottedLine.dart'; 4 | 5 | class Profile extends StatefulWidget { 6 | @override 7 | _ProfileState createState() => _ProfileState(); 8 | } 9 | 10 | class _ProfileState extends State { 11 | @override 12 | Widget build(BuildContext context) { 13 | return Scaffold( 14 | backgroundColor: Colors.white, 15 | resizeToAvoidBottomInset: false, 16 | body: Container( 17 | child: Column( 18 | crossAxisAlignment: CrossAxisAlignment.start, 19 | children: [ 20 | SizedBox( 21 | height: 24, 22 | ), 23 | Stack( 24 | key: Key("AppBar"), 25 | children: [ 26 | Align( 27 | alignment: Alignment.topLeft, 28 | child: IconButton( 29 | icon: Icon(Icons.keyboard_backspace), 30 | onPressed: () { 31 | Navigator.of(context).pop(); 32 | }, 33 | color: Colors.black, 34 | ), 35 | ), 36 | Align( 37 | alignment: Alignment.center, 38 | child: Container( 39 | margin: EdgeInsets.only(top: 16), 40 | alignment: Alignment.center, 41 | child: Text( 42 | "Profile", 43 | style: CustomTextStyle.mediumTextStyle.copyWith(fontSize: 14), 44 | ), 45 | ), 46 | ) 47 | ], 48 | ), 49 | SingleChildScrollView( 50 | child: Column( 51 | crossAxisAlignment: CrossAxisAlignment.start, 52 | children: [ 53 | Container( 54 | child: Text( 55 | "CONTACT DETAILS", 56 | style: CustomTextStyle.mediumTextStyle 57 | .copyWith(color: Colors.grey), 58 | ), 59 | margin: EdgeInsets.only(left: 16, top: 12), 60 | ), 61 | Container( 62 | margin: EdgeInsets.only(left: 16, top: 12), 63 | child: Text( 64 | "Name", 65 | style: CustomTextStyle.regularTextStyle 66 | .copyWith(color: Colors.grey), 67 | ), 68 | ), 69 | Row( 70 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 71 | children: [ 72 | Container( 73 | margin: EdgeInsets.only(left: 16), 74 | child: Text("Ishan Madushka", 75 | style: CustomTextStyle.mediumTextStyle), 76 | ), 77 | GestureDetector( 78 | child: Container( 79 | margin: EdgeInsets.only(right: 8), 80 | child: Icon(Icons.navigate_next, color: Colors.grey), 81 | ), 82 | ) 83 | ], 84 | ), 85 | Container( 86 | margin: EdgeInsets.only(left: 16, top: 12), 87 | child: Text( 88 | "Email", 89 | style: CustomTextStyle.regularTextStyle 90 | .copyWith(color: Colors.grey), 91 | ), 92 | ), 93 | Container( 94 | margin: EdgeInsets.only(left: 16, top: 4), 95 | child: Text("ish.madushka@gmail.com", 96 | style: CustomTextStyle.mediumTextStyle), 97 | ), 98 | Container( 99 | margin: EdgeInsets.only(left: 16, top: 16), 100 | child: Text( 101 | "Mobile Number", 102 | style: CustomTextStyle.regularTextStyle 103 | .copyWith(color: Colors.grey), 104 | ), 105 | ), 106 | Row( 107 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 108 | children: [ 109 | Container( 110 | margin: EdgeInsets.only(left: 16), 111 | child: Text("+94 71 87 86 729", 112 | style: CustomTextStyle.mediumTextStyle), 113 | ), 114 | GestureDetector( 115 | child: Container( 116 | margin: EdgeInsets.only(right: 8), 117 | child: Icon( 118 | Icons.navigate_next, 119 | color: Colors.grey, 120 | ), 121 | ), 122 | ) 123 | ], 124 | ), 125 | DottedLine(16,16,4), 126 | Container( 127 | child: Text( 128 | "SECURITY DETAILS", 129 | style: CustomTextStyle.mediumTextStyle 130 | .copyWith(color: Colors.grey), 131 | ), 132 | margin: EdgeInsets.only(left: 16, top: 12), 133 | ), 134 | Container( 135 | margin: EdgeInsets.only(left: 16, top: 12), 136 | child: Text( 137 | "Password", 138 | style: CustomTextStyle.regularTextStyle 139 | .copyWith(color: Colors.grey), 140 | ), 141 | ), 142 | Row( 143 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 144 | children: [ 145 | Container( 146 | margin: EdgeInsets.only(left: 16), 147 | child: Text("Change Password", 148 | style: CustomTextStyle.mediumTextStyle), 149 | ), 150 | GestureDetector( 151 | child: Container( 152 | margin: EdgeInsets.only(right: 8), 153 | child: Icon(Icons.navigate_next, color: Colors.grey), 154 | ), 155 | ) 156 | ], 157 | ), 158 | Container( 159 | margin: EdgeInsets.only(left: 16, top: 12), 160 | child: Text( 161 | "Security Question", 162 | style: CustomTextStyle.regularTextStyle 163 | .copyWith(color: Colors.grey), 164 | ), 165 | ), 166 | Row( 167 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 168 | children: [ 169 | Container( 170 | margin: EdgeInsets.only(left: 16), 171 | child: Text("Change Security Question", 172 | style: CustomTextStyle.mediumTextStyle), 173 | ), 174 | GestureDetector( 175 | child: Container( 176 | margin: EdgeInsets.only(right: 8), 177 | child: Icon(Icons.navigate_next, color: Colors.grey), 178 | ), 179 | ) 180 | ], 181 | ), 182 | DottedLine(16,16,4), 183 | Container( 184 | child: Text( 185 | "LANGUAGE", 186 | style: CustomTextStyle.mediumTextStyle 187 | .copyWith(color: Colors.grey), 188 | ), 189 | margin: EdgeInsets.only(left: 16, top: 12), 190 | ), 191 | 192 | Container( 193 | margin: EdgeInsets.only(left: 16, top: 12), 194 | child: Text( 195 | "Select Language", 196 | style: CustomTextStyle.regularTextStyle 197 | .copyWith(color: Colors.grey), 198 | ), 199 | ), 200 | Row( 201 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 202 | children: [ 203 | Container( 204 | margin: EdgeInsets.only(left: 16), 205 | child: Text("English", 206 | style: CustomTextStyle.mediumTextStyle), 207 | ), 208 | GestureDetector( 209 | child: Container( 210 | margin: EdgeInsets.only(right: 8), 211 | child: Icon(Icons.navigate_next, color: Colors.grey), 212 | ), 213 | ) 214 | ], 215 | ), 216 | Container( 217 | margin: EdgeInsets.only(left: 16, top: 12), 218 | child: Text( 219 | "Logout", 220 | style: CustomTextStyle.mediumTextStyle 221 | .copyWith(color: Colors.red), 222 | ), 223 | ), 224 | ], 225 | ), 226 | ) 227 | ], 228 | ), 229 | ), 230 | ); 231 | } 232 | 233 | 234 | } 235 | -------------------------------------------------------------------------------- /lib/rate_card.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_cab/utils/CustomTextStyle.dart'; 3 | class RateCard extends StatefulWidget { 4 | @override 5 | _RateCardState createState() => _RateCardState(); 6 | } 7 | 8 | class _RateCardState extends State { 9 | @override 10 | Widget build(BuildContext context) { 11 | return Scaffold( 12 | appBar: AppBar( 13 | backgroundColor: Colors.amber, 14 | elevation: 0, 15 | title: Text( 16 | "Rate Card", 17 | style: CustomTextStyle.mediumTextStyle.copyWith(color: Colors.black), 18 | ), 19 | centerTitle: true, 20 | leading: IconButton( 21 | icon: Icon( 22 | Icons.keyboard_backspace, 23 | color: Colors.black, 24 | ), 25 | onPressed: () { 26 | Navigator.pop(context); 27 | }), 28 | ), 29 | body: Container( 30 | child: Stack( 31 | children: [ 32 | Container( 33 | padding: EdgeInsets.only(top: 10), 34 | color: Colors.amber, 35 | height: 130, 36 | child: Container( 37 | margin: EdgeInsets.all(8), 38 | child: Row( 39 | mainAxisAlignment: MainAxisAlignment.spaceEvenly, 40 | children: [ 41 | Column( 42 | children: [ 43 | Text( 44 | "Car", 45 | style: CustomTextStyle.mediumTextStyle, 46 | ), 47 | SizedBox( 48 | height: 2, 49 | ), 50 | Image( 51 | image: AssetImage("images/car.png"), 52 | ), 53 | ], 54 | ), 55 | SizedBox( 56 | height: 12, 57 | ), 58 | Column( 59 | children: [ 60 | Text( 61 | "Budget", 62 | style: CustomTextStyle.mediumTextStyle 63 | .copyWith(color: Colors.brown.withOpacity(0.5)), 64 | ), 65 | SizedBox( 66 | height: 2, 67 | ), 68 | Image( 69 | image: AssetImage("images/hatchback.png"), 70 | color: Colors.brown.withOpacity(0.5), 71 | ), 72 | ], 73 | ), 74 | SizedBox( 75 | height: 12, 76 | ), 77 | Column( 78 | children: [ 79 | Text( 80 | "City", 81 | style: CustomTextStyle.mediumTextStyle 82 | .copyWith(color: Colors.brown.withOpacity(0.5)), 83 | ), 84 | SizedBox( 85 | height: 2, 86 | ), 87 | Image( 88 | image: AssetImage("images/city.png"), 89 | color: Colors.brown.withOpacity(0.5) 90 | ), 91 | ], 92 | ), 93 | SizedBox( 94 | height: 12, 95 | ), 96 | Column( 97 | children: [ 98 | Text( 99 | "Tuk", 100 | style: CustomTextStyle.mediumTextStyle 101 | .copyWith(color: Colors.brown.withOpacity(0.5)), 102 | ), 103 | SizedBox( 104 | height: 2, 105 | ), 106 | Image( 107 | image: AssetImage("images/tuk.png"), 108 | color: Colors.brown.withOpacity(0.5) 109 | ), 110 | ], 111 | ), 112 | SizedBox( 113 | height: 12, 114 | ), 115 | Column( 116 | children: [ 117 | Text( 118 | "Van", 119 | style: CustomTextStyle.mediumTextStyle 120 | .copyWith(color: Colors.brown.withOpacity(0.5)), 121 | ), 122 | SizedBox( 123 | height: 2, 124 | ), 125 | Image( 126 | image: AssetImage("images/van.png"), 127 | color: Colors.brown.withOpacity(0.5) 128 | ), 129 | ], 130 | ) 131 | ], 132 | ), 133 | ), 134 | ), 135 | Container( 136 | margin: EdgeInsets.only(top: 80,left: 16,right: 16), 137 | decoration: BoxDecoration( 138 | boxShadow: [ 139 | BoxShadow( 140 | color: Colors.grey.shade200, 141 | blurRadius: 10, 142 | offset: Offset(1,40) 143 | ) 144 | ] 145 | ), 146 | width: double.infinity, 147 | height: 140, 148 | child: Card( 149 | color: Colors.white, 150 | shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), 151 | child: Column( 152 | mainAxisAlignment: MainAxisAlignment.start, 153 | crossAxisAlignment: CrossAxisAlignment.start, 154 | children: [ 155 | Padding( 156 | padding: const EdgeInsets.only(left:16,top: 16), 157 | child: Text("Car",style: CustomTextStyle.mediumTextStyle,), 158 | ), 159 | Padding( 160 | padding: const EdgeInsets.only(left:16,top: 2), 161 | child: Text("Toyota Prius / Axio(Hybrid)",style: CustomTextStyle.regularTextStyle.copyWith(fontSize: 12,color: Colors.grey),), 162 | ), 163 | Container( 164 | margin: EdgeInsets.only(left: 16, right: 16,top:16), 165 | child: Row( 166 | mainAxisAlignment: 167 | MainAxisAlignment.spaceBetween, 168 | children: [ 169 | Container( 170 | child: Text( 171 | "Min Fare (First 1 Km)", 172 | style: CustomTextStyle.mediumTextStyle 173 | .copyWith(fontSize: 12), 174 | ), 175 | ), 176 | Container( 177 | child: Text( 178 | "USD 80.00", 179 | style: CustomTextStyle.mediumTextStyle 180 | .copyWith( 181 | color: Colors.grey, 182 | fontSize: 12), 183 | ), 184 | ) 185 | ], 186 | ), 187 | ), 188 | Container( 189 | margin: EdgeInsets.only(left: 16, right: 16,top: 6), 190 | child: Row( 191 | mainAxisAlignment: 192 | MainAxisAlignment.spaceBetween, 193 | children: [ 194 | Container( 195 | child: Text( 196 | "After 1 Km (Per Km)", 197 | style: CustomTextStyle.mediumTextStyle 198 | .copyWith(fontSize: 12), 199 | ), 200 | ), 201 | Container( 202 | child: Text( 203 | "USD 5.00", 204 | style: CustomTextStyle.mediumTextStyle 205 | .copyWith( 206 | color: Colors.grey, 207 | fontSize: 12), 208 | ), 209 | ) 210 | ], 211 | ), 212 | ), 213 | Container( 214 | margin: EdgeInsets.only(left: 16, right: 16,top: 6), 215 | child: Row( 216 | mainAxisAlignment: 217 | MainAxisAlignment.spaceBetween, 218 | children: [ 219 | Container( 220 | child: Text( 221 | "Waiting Time (Per 1 Hour)", 222 | style: CustomTextStyle.mediumTextStyle 223 | .copyWith(fontSize: 12), 224 | ), 225 | ), 226 | Container( 227 | 228 | child: Text( 229 | "USD 300.00", 230 | style: CustomTextStyle.mediumTextStyle 231 | .copyWith( 232 | color: Colors.grey, 233 | fontSize: 12), 234 | ), 235 | ) 236 | ], 237 | ), 238 | ), 239 | ], 240 | ), 241 | ), 242 | ) 243 | ], 244 | ), 245 | ), 246 | 247 | ); 248 | 249 | } 250 | } 251 | -------------------------------------------------------------------------------- /lib/splash.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:flutter/material.dart'; 4 | import 'package:flutter_cab/utils/CustomTextStyle.dart'; 5 | 6 | import 'login.dart'; 7 | 8 | 9 | class Splash extends StatefulWidget { 10 | @override 11 | _SplashState createState() => _SplashState(); 12 | } 13 | 14 | class _SplashState extends State { 15 | 16 | 17 | @override 18 | void initState() { 19 | super.initState(); 20 | splashMove(); 21 | } 22 | navigatePage() { 23 | Navigator.of(context) 24 | .pushReplacement(new MaterialPageRoute(builder: (context) => Login())); 25 | } 26 | 27 | splashMove() { 28 | return Timer(Duration(seconds: 4), navigatePage); 29 | } 30 | @override 31 | Widget build(BuildContext context) { 32 | return MaterialApp( 33 | home: Scaffold( 34 | resizeToAvoidBottomPadding: false, 35 | body: Builder(builder: (context){ 36 | return Container( 37 | child: Column( 38 | mainAxisAlignment: MainAxisAlignment.center, 39 | children: [ 40 | Container( 41 | height: 100, 42 | decoration: BoxDecoration( 43 | image: DecorationImage(image: AssetImage("images/ic_logo.png"),) 44 | ), 45 | ), 46 | Text("Safety and comforts is our concerns",style: CustomTextStyle.regularTextStyle,) 47 | ], 48 | ), 49 | ); 50 | }), 51 | ), 52 | ); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /lib/utils/CustomColors.dart: -------------------------------------------------------------------------------- 1 | import 'dart:ui'; 2 | 3 | class CustomColors{ 4 | static const COLOR_GOOGLE = Color(0xFFEA4335); 5 | static const COLOR_FACEBOOK = Color(0xFF3B5998); 6 | } -------------------------------------------------------------------------------- /lib/utils/CustomTabIndicator.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class CustomTabIndicator extends Decoration { 4 | double indicatorHeight, indicatorRadius; 5 | Color indicatorColor; 6 | EdgeInsetsGeometry padding; 7 | EdgeInsetsGeometry insets; 8 | TabBarIndicatorSize tabBarIndicatorSize; 9 | 10 | CustomTabIndicator({this.indicatorHeight: 20, 11 | this.indicatorRadius: 100, 12 | this.indicatorColor: Colors.grey, 13 | this.padding: const EdgeInsets.symmetric(vertical: 6.0, horizontal: 0.0), 14 | this.insets: const EdgeInsets.symmetric(horizontal: 8.0), 15 | this.tabBarIndicatorSize: TabBarIndicatorSize.label}) 16 | : assert(indicatorHeight != null), 17 | assert(indicatorRadius != null), 18 | assert(indicatorColor != null), 19 | assert(padding != null), 20 | assert(insets != null); 21 | 22 | @override 23 | Decoration lerpTo(Decoration b, double t) { 24 | if (b is CustomTabIndicator) { 25 | return new CustomTabIndicator( 26 | padding: EdgeInsetsGeometry.lerp(padding, b.padding, t), 27 | insets: EdgeInsetsGeometry.lerp(insets, b.insets, t)); 28 | } 29 | return super.lerpTo(b, t); 30 | } 31 | 32 | @override 33 | BoxPainter createBoxPainter([onChanged]) { 34 | return new CustomPainter(this, onChanged); 35 | } 36 | } 37 | 38 | class CustomPainter extends BoxPainter { 39 | CustomTabIndicator decoration; 40 | double get indicatorHeight=>decoration.indicatorHeight; 41 | double get indicatorRadius=>decoration.indicatorRadius; 42 | Color get indicatorColor=>decoration.indicatorColor; 43 | EdgeInsetsGeometry get padding=>decoration.padding; 44 | EdgeInsetsGeometry get insets=>decoration.insets; 45 | TabBarIndicatorSize get tabBarIndicatorSize=>decoration.tabBarIndicatorSize; 46 | 47 | CustomPainter(this.decoration, VoidCallback onChanged) 48 | : assert(decoration != null), 49 | super(onChanged); 50 | 51 | 52 | Rect _indicatorRectFor(Rect rect, TextDirection textDirection){ 53 | assert(rect != null); 54 | assert(textDirection != null); 55 | Rect indicator = padding.resolve(textDirection).inflateRect(rect); 56 | if(tabBarIndicatorSize==TabBarIndicatorSize.tab){ 57 | indicator = padding.resolve(textDirection).deflateRect(rect); 58 | } 59 | return new Rect.fromLTWH(0,indicator.top, indicator.width, indicator.height); 60 | } 61 | 62 | @override 63 | void paint(Canvas canvas, Offset offset, ImageConfiguration configuration) { 64 | assert(decoration != null); 65 | assert(configuration.size != null); 66 | 67 | 68 | final Rect rect = Offset( 69 | offset.dx, (configuration.size.height / 2) - indicatorHeight / 2) & 70 | Size(configuration.size.width, indicatorHeight); 71 | final TextDirection textDirection = configuration.textDirection; 72 | final Rect indicator = _indicatorRectFor(rect, textDirection); 73 | final Paint paint = new Paint(); 74 | paint.color = indicatorColor; 75 | paint.strokeWidth = 1; 76 | paint.style = PaintingStyle.stroke; 77 | canvas.drawLine(indicator.topRight,indicator.bottomRight,paint); 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /lib/utils/CustomTextStyle.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class CustomTextStyle { 4 | static var regularTextStyle = TextStyle( 5 | fontSize: 14, fontFamily: "Roboto", fontWeight: FontWeight.w400); 6 | static var mediumTextStyle = TextStyle( 7 | fontSize: 14, fontFamily: "Roboto", fontWeight: FontWeight.w500); 8 | static var boldTextStyle = TextStyle( 9 | fontSize: 14, fontFamily: "Roboto", fontWeight: FontWeight.w700); 10 | static var blackTextStyle = TextStyle( 11 | fontSize: 14, fontFamily: "Roboto", fontWeight: FontWeight.w900); 12 | } 13 | -------------------------------------------------------------------------------- /lib/utils/DottedLine.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import 'CustomTextStyle.dart'; 4 | 5 | class DottedLine extends StatelessWidget { 6 | double leftMargin = 16.0; 7 | double rightMargin = 16.0; 8 | double topMargin = 4.0; 9 | 10 | DottedLine(this.leftMargin, this.rightMargin, this.topMargin); 11 | 12 | @override 13 | Widget build(BuildContext context) { 14 | return createDottedLine(); 15 | } 16 | 17 | createDottedLine() { 18 | return Container( 19 | margin: EdgeInsets.only(right: rightMargin, left: leftMargin, top: topMargin), 20 | child: LayoutBuilder(builder: (context, constraints) { 21 | final boxWidth = constraints.constrainWidth(); 22 | final dottedWidth = 4.0; 23 | final dashCount = (boxWidth / dottedWidth).floor(); 24 | return Flex( 25 | direction: Axis.horizontal, 26 | children: List.generate(dashCount, (_) { 27 | return Text( 28 | ".", 29 | style: 30 | CustomTextStyle.regularTextStyle.copyWith(color: Colors.grey), 31 | ); 32 | }), 33 | ); 34 | }), 35 | ); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /lib/utils/menu_title.dart: -------------------------------------------------------------------------------- 1 | class MenuTitle{ 2 | static var MENU_PROFILE = "Profile"; 3 | static var MENU_PAYMENT = "Payment"; 4 | static var MENU_BOOK_LATER = "Book Later"; 5 | static var MENU_MY_TRIPS = "My Trips"; 6 | static var MENU_RATE_CARD = "Rate Cards"; 7 | static var MENU_NEWS_OFFERS = "News and Offers"; 8 | static var MENU_EMERGENCY_CONTACTS = "Emergency Contacts"; 9 | static var MENU_HELP_SUPPORT = "Help and Support"; 10 | } -------------------------------------------------------------------------------- /lib/verify_code.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_cab/utils/CustomTextStyle.dart'; 3 | 4 | class VerifyCode extends StatefulWidget { 5 | @override 6 | _VerifyCodeState createState() => _VerifyCodeState(); 7 | } 8 | 9 | class _VerifyCodeState extends State { 10 | bool isTextWritten = false; 11 | 12 | TextEditingController _mobileNumberController = new TextEditingController(); 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | backgroundColor: Colors.white, 18 | body: SingleChildScrollView( 19 | child: Card( 20 | elevation: 4, 21 | borderOnForeground: true, 22 | shape: RoundedRectangleBorder( 23 | borderRadius: BorderRadius.only( 24 | bottomRight: Radius.circular(16), 25 | bottomLeft: Radius.circular(16))), 26 | margin: EdgeInsets.only(left: 0, right: 0, bottom: 4), 27 | child: Container( 28 | decoration: BoxDecoration( 29 | borderRadius: BorderRadius.only( 30 | bottomRight: Radius.circular(16), 31 | bottomLeft: Radius.circular(16)), 32 | shape: BoxShape.rectangle, 33 | color: Colors.white, 34 | boxShadow: [ 35 | BoxShadow(color: Colors.grey.shade50, blurRadius: 5), 36 | ]), 37 | width: double.infinity, 38 | padding: EdgeInsets.only(top: 32), 39 | child: Column( 40 | crossAxisAlignment: CrossAxisAlignment.start, 41 | children: [ 42 | SizedBox(height: 14), 43 | Container( 44 | alignment: Alignment.center, 45 | child: Image( 46 | image: AssetImage("images/ic_logo.png"), 47 | width: 80, 48 | height: 80, 49 | ), 50 | ), 51 | SizedBox(height: 14), 52 | Container( 53 | margin: EdgeInsets.only(left: 16, top: 8), 54 | child: Text( 55 | "Are you new to Kangaaroo Cabs?", 56 | style: CustomTextStyle.mediumTextStyle, 57 | ), 58 | ), 59 | Container( 60 | margin: EdgeInsets.only(left: 16, top: 4), 61 | child: Text( 62 | "Enter your password ride with Kangaroo cabs", 63 | style: CustomTextStyle.regularTextStyle.copyWith( 64 | color: Colors.grey, 65 | fontSize: 12, 66 | fontWeight: FontWeight.w400), 67 | ), 68 | ), 69 | Container( 70 | margin: EdgeInsets.only(left: 16, top: 8), 71 | child: Text( 72 | "+94 71234 56780", 73 | style: CustomTextStyle.boldTextStyle.copyWith( 74 | color: Colors.redAccent, 75 | fontSize: 14, 76 | ), 77 | ), 78 | ), 79 | SizedBox(height: 14), 80 | Container( 81 | margin: EdgeInsets.only(right: 14, left: 14), 82 | child: Row( 83 | children: [ 84 | Expanded( 85 | child: Container( 86 | margin: EdgeInsets.only(right: 4), 87 | child: TextField( 88 | decoration: InputDecoration( 89 | border: border, 90 | enabledBorder: border, 91 | focusedBorder: border, 92 | contentPadding: EdgeInsets.only( 93 | left: 8, right: 32, top: 6, bottom: 6), 94 | hintText: "", 95 | hintStyle: CustomTextStyle.regularTextStyle 96 | .copyWith(color: Colors.grey, fontSize: 12), 97 | labelStyle: CustomTextStyle.regularTextStyle 98 | .copyWith(color: Colors.black, fontSize: 12), 99 | ), 100 | controller: _mobileNumberController, 101 | keyboardType: TextInputType.text, 102 | ), 103 | ), 104 | flex: 25, 105 | ), 106 | Expanded( 107 | child: Container( 108 | margin: EdgeInsets.only(right: 4), 109 | child: TextField( 110 | decoration: InputDecoration( 111 | border: border, 112 | enabledBorder: border, 113 | focusedBorder: border, 114 | contentPadding: EdgeInsets.only( 115 | left: 8, right: 32, top: 6, bottom: 6), 116 | hintText: "", 117 | hintStyle: CustomTextStyle.regularTextStyle 118 | .copyWith(color: Colors.grey, fontSize: 12), 119 | labelStyle: CustomTextStyle.regularTextStyle 120 | .copyWith(color: Colors.black, fontSize: 12), 121 | ), 122 | controller: _mobileNumberController, 123 | keyboardType: TextInputType.text, 124 | ), 125 | ), 126 | flex: 25, 127 | ), 128 | Expanded( 129 | child: Container( 130 | margin: EdgeInsets.only(right: 4), 131 | child: TextField( 132 | decoration: InputDecoration( 133 | border: border, 134 | enabledBorder: border, 135 | focusedBorder: border, 136 | contentPadding: EdgeInsets.only( 137 | left: 8, right: 32, top: 6, bottom: 6), 138 | hintText: "", 139 | hintStyle: CustomTextStyle.regularTextStyle 140 | .copyWith(color: Colors.grey, fontSize: 12), 141 | labelStyle: CustomTextStyle.regularTextStyle 142 | .copyWith(color: Colors.black, fontSize: 12), 143 | ), 144 | controller: _mobileNumberController, 145 | keyboardType: TextInputType.text, 146 | ), 147 | ), 148 | flex: 25, 149 | ), 150 | Expanded( 151 | child: Container( 152 | child: TextField( 153 | decoration: InputDecoration( 154 | border: border, 155 | enabledBorder: border, 156 | focusedBorder: border, 157 | contentPadding: EdgeInsets.only( 158 | left: 8, right: 32, top: 6, bottom: 6), 159 | hintText: "", 160 | hintStyle: CustomTextStyle.regularTextStyle 161 | .copyWith(color: Colors.grey, fontSize: 12), 162 | labelStyle: CustomTextStyle.regularTextStyle 163 | .copyWith(color: Colors.black, fontSize: 12), 164 | ), 165 | controller: _mobileNumberController, 166 | keyboardType: TextInputType.text, 167 | ), 168 | ), 169 | flex: 25, 170 | ), 171 | ], 172 | ), 173 | ), 174 | SizedBox(height: 16), 175 | Row( 176 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 177 | children: [ 178 | Expanded( 179 | child: Container( 180 | child: Wrap( 181 | children: [ 182 | Text("Resend code in : ", 183 | style: CustomTextStyle.regularTextStyle 184 | .copyWith(color: Colors.grey)), 185 | Text("00:59", 186 | style: CustomTextStyle.blackTextStyle), 187 | ], 188 | ), 189 | margin: EdgeInsets.only(left: 18), 190 | ), 191 | flex: 100, 192 | ), 193 | Container( 194 | width: 40, 195 | margin: EdgeInsets.only(right: 10), 196 | height: 40, 197 | decoration: BoxDecoration( 198 | color: Colors.grey.shade400, shape: BoxShape.circle), 199 | child: Icon( 200 | Icons.arrow_forward, 201 | color: Colors.white, 202 | ), 203 | ) 204 | ], 205 | ), 206 | SizedBox(height: 24), 207 | ], 208 | ), 209 | ), 210 | ), 211 | ), 212 | ); 213 | } 214 | 215 | createClearText() { 216 | return Align( 217 | alignment: Alignment.topRight, 218 | child: GestureDetector( 219 | onTap: () { 220 | setState(() { 221 | isTextWritten = !isTextWritten; 222 | }); 223 | }, 224 | child: Container( 225 | margin: EdgeInsets.only(right: 8), 226 | width: 20, 227 | height: 20, 228 | child: Icon( 229 | isTextWritten ? Icons.visibility : Icons.visibility_off, 230 | size: 20, 231 | color: Colors.grey, 232 | ), 233 | alignment: Alignment.center, 234 | ), 235 | ), 236 | ); 237 | } 238 | 239 | var border = OutlineInputBorder( 240 | borderRadius: BorderRadius.all(Radius.circular(4)), 241 | borderSide: BorderSide(color: Colors.grey.shade400, width: 1)); 242 | } 243 | -------------------------------------------------------------------------------- /lib/write_complaint.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_cab/utils/CustomTextStyle.dart'; 3 | 4 | class WriteComplaint extends StatefulWidget { 5 | @override 6 | _WriteComplaintState createState() => _WriteComplaintState(); 7 | } 8 | 9 | class _WriteComplaintState extends State { 10 | @override 11 | void initState() { 12 | super.initState(); 13 | } 14 | 15 | @override 16 | Widget build(BuildContext context) { 17 | return Scaffold( 18 | backgroundColor: Colors.white, 19 | body: Container( 20 | key: Key("ContainerMain"), 21 | child: Column( 22 | key: Key("ColumnMain"), 23 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 24 | children: [ 25 | Card( 26 | key: Key("CardTop"), 27 | elevation: 4, 28 | margin: EdgeInsets.all(0), 29 | shape: RoundedRectangleBorder( 30 | borderRadius: BorderRadius.only( 31 | bottomRight: Radius.circular(16), 32 | bottomLeft: Radius.circular(16))), 33 | child: Container( 34 | key: Key("ContainerListItem"), 35 | decoration: BoxDecoration( 36 | borderRadius: BorderRadius.only( 37 | bottomRight: Radius.circular(16), 38 | bottomLeft: Radius.circular(16)), 39 | boxShadow: [ 40 | BoxShadow( 41 | color: Colors.grey.shade50, 42 | blurRadius: 10, 43 | offset: Offset(0, 1)), 44 | ]), 45 | child: Column( 46 | key: Key("ColumnList"), 47 | crossAxisAlignment: CrossAxisAlignment.start, 48 | children: [ 49 | SizedBox( 50 | key: Key("SizedBox_24"), 51 | height: 24, 52 | ), 53 | Stack( 54 | children: [ 55 | Container( 56 | key: Key("ContainerLogo"), 57 | height: 100, 58 | decoration: BoxDecoration( 59 | image: DecorationImage( 60 | image: AssetImage("images/ic_logo.png"), 61 | )), 62 | ), 63 | Align( 64 | key: Key("AlignBack"), 65 | alignment: Alignment.topLeft, 66 | child: Container( 67 | child: IconButton( 68 | icon: Icon(Icons.keyboard_backspace), 69 | onPressed: (){ 70 | Navigator.pop(context); 71 | }, 72 | color: Colors.black.withOpacity(0.8), 73 | ), 74 | ), 75 | ) 76 | ], 77 | ), 78 | SizedBox( 79 | key: Key("SizedBox_24_1"), 80 | height: 24, 81 | ), 82 | Container( 83 | key: Key("ContainerComplaintLabel"), 84 | child: Text( 85 | "Enter a description", 86 | key: Key("TextComplaintLabel"), 87 | style: CustomTextStyle.boldTextStyle 88 | .copyWith(fontSize: 16), 89 | ), 90 | margin: EdgeInsets.only(left: 20), 91 | ), 92 | buildSizedBox_16(), 93 | Container( 94 | margin: EdgeInsets.only(left: 16, right: 16), 95 | key: Key("ContainerDescBox"), 96 | child: TextFormField( 97 | key: Key("TextFormFieldDescription"), 98 | keyboardType: TextInputType.multiline, 99 | textAlign: TextAlign.start, 100 | minLines: 3, 101 | maxLines: 3, 102 | decoration: InputDecoration( 103 | hintStyle: CustomTextStyle.regularTextStyle 104 | .copyWith(color: Colors.grey), 105 | border: border, 106 | hasFloatingPlaceholder: false, 107 | enabledBorder: border, 108 | focusedBorder: border.copyWith( 109 | borderSide: BorderSide( 110 | color: Colors.grey.shade700, width: 1))), 111 | ), 112 | ), 113 | buildSizedBox_16(), 114 | Align( 115 | alignment: Alignment.topRight, 116 | child: GestureDetector( 117 | onTap: () { 118 | /*Navigator.of(context).push(new MaterialPageRoute( 119 | builder: (context) => LoginPassword()));*/ 120 | }, 121 | child: Container( 122 | width: 40, 123 | margin: EdgeInsets.only(right: 16), 124 | height: 40, 125 | decoration: BoxDecoration( 126 | color: Colors.grey, shape: BoxShape.circle), 127 | child: Icon( 128 | Icons.arrow_forward, 129 | color: Colors.white, 130 | ), 131 | ), 132 | ), 133 | ), 134 | buildSizedBox_16(), 135 | ], 136 | )), 137 | ), 138 | ], 139 | ), 140 | ), 141 | ); 142 | } 143 | 144 | SizedBox buildSizedBox_16() { 145 | return SizedBox( 146 | height: 16, 147 | ); 148 | } 149 | 150 | var border = OutlineInputBorder( 151 | borderRadius: BorderRadius.circular(6), 152 | borderSide: BorderSide(color: Colors.grey.shade300, width: 1)); 153 | } 154 | -------------------------------------------------------------------------------- /pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://www.dartlang.org/tools/pub/glossary#lockfile 3 | packages: 4 | async: 5 | dependency: transitive 6 | description: 7 | name: async 8 | url: "https://pub.dartlang.org" 9 | source: hosted 10 | version: "2.1.0" 11 | boolean_selector: 12 | dependency: transitive 13 | description: 14 | name: boolean_selector 15 | url: "https://pub.dartlang.org" 16 | source: hosted 17 | version: "1.0.4" 18 | charcode: 19 | dependency: transitive 20 | description: 21 | name: charcode 22 | url: "https://pub.dartlang.org" 23 | source: hosted 24 | version: "1.1.2" 25 | collection: 26 | dependency: transitive 27 | description: 28 | name: collection 29 | url: "https://pub.dartlang.org" 30 | source: hosted 31 | version: "1.14.11" 32 | cupertino_icons: 33 | dependency: "direct main" 34 | description: 35 | name: cupertino_icons 36 | url: "https://pub.dartlang.org" 37 | source: hosted 38 | version: "0.1.2" 39 | flutter: 40 | dependency: "direct main" 41 | description: flutter 42 | source: sdk 43 | version: "0.0.0" 44 | flutter_rating_bar: 45 | dependency: "direct main" 46 | description: 47 | name: flutter_rating_bar 48 | url: "https://pub.dartlang.org" 49 | source: hosted 50 | version: "1.3.0+1" 51 | flutter_test: 52 | dependency: "direct dev" 53 | description: flutter 54 | source: sdk 55 | version: "0.0.0" 56 | google_maps_flutter: 57 | dependency: "direct main" 58 | description: 59 | name: google_maps_flutter 60 | url: "https://pub.dartlang.org" 61 | source: hosted 62 | version: "0.5.19+2" 63 | intl: 64 | dependency: "direct main" 65 | description: 66 | name: intl 67 | url: "https://pub.dartlang.org" 68 | source: hosted 69 | version: "0.15.8" 70 | matcher: 71 | dependency: transitive 72 | description: 73 | name: matcher 74 | url: "https://pub.dartlang.org" 75 | source: hosted 76 | version: "0.12.5" 77 | meta: 78 | dependency: transitive 79 | description: 80 | name: meta 81 | url: "https://pub.dartlang.org" 82 | source: hosted 83 | version: "1.1.6" 84 | path: 85 | dependency: transitive 86 | description: 87 | name: path 88 | url: "https://pub.dartlang.org" 89 | source: hosted 90 | version: "1.6.2" 91 | pedantic: 92 | dependency: transitive 93 | description: 94 | name: pedantic 95 | url: "https://pub.dartlang.org" 96 | source: hosted 97 | version: "1.5.0" 98 | quiver: 99 | dependency: transitive 100 | description: 101 | name: quiver 102 | url: "https://pub.dartlang.org" 103 | source: hosted 104 | version: "2.0.2" 105 | sky_engine: 106 | dependency: transitive 107 | description: flutter 108 | source: sdk 109 | version: "0.0.99" 110 | source_span: 111 | dependency: transitive 112 | description: 113 | name: source_span 114 | url: "https://pub.dartlang.org" 115 | source: hosted 116 | version: "1.5.5" 117 | stack_trace: 118 | dependency: transitive 119 | description: 120 | name: stack_trace 121 | url: "https://pub.dartlang.org" 122 | source: hosted 123 | version: "1.9.3" 124 | stream_channel: 125 | dependency: transitive 126 | description: 127 | name: stream_channel 128 | url: "https://pub.dartlang.org" 129 | source: hosted 130 | version: "2.0.0" 131 | string_scanner: 132 | dependency: transitive 133 | description: 134 | name: string_scanner 135 | url: "https://pub.dartlang.org" 136 | source: hosted 137 | version: "1.0.4" 138 | term_glyph: 139 | dependency: transitive 140 | description: 141 | name: term_glyph 142 | url: "https://pub.dartlang.org" 143 | source: hosted 144 | version: "1.1.0" 145 | test_api: 146 | dependency: transitive 147 | description: 148 | name: test_api 149 | url: "https://pub.dartlang.org" 150 | source: hosted 151 | version: "0.2.4" 152 | typed_data: 153 | dependency: transitive 154 | description: 155 | name: typed_data 156 | url: "https://pub.dartlang.org" 157 | source: hosted 158 | version: "1.1.6" 159 | vector_math: 160 | dependency: transitive 161 | description: 162 | name: vector_math 163 | url: "https://pub.dartlang.org" 164 | source: hosted 165 | version: "2.0.8" 166 | sdks: 167 | dart: ">=2.2.2 <3.0.0" 168 | flutter: ">=1.5.0 <2.0.0" 169 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: flutter_cab 2 | description: A new Flutter application. 3 | 4 | # The following defines the version and build number for your application. 5 | # A version number is three numbers separated by dots, like 1.2.43 6 | # followed by an optional build number separated by a +. 7 | # Both the version and the builder number may be overridden in flutter 8 | # build by specifying --build-name and --build-number, respectively. 9 | # In Android, build-name is used as versionName while build-number used as versionCode. 10 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning 11 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. 12 | # Read more about iOS versioning at 13 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html 14 | version: 1.0.0+1 15 | 16 | environment: 17 | sdk: ">=2.1.0 <3.0.0" 18 | 19 | dependencies: 20 | flutter: 21 | sdk: flutter 22 | 23 | # The following adds the Cupertino Icons font to your application. 24 | # Use with the CupertinoIcons class for iOS style icons. 25 | cupertino_icons: ^0.1.2 26 | google_maps_flutter: ^0.5.11 27 | flutter_rating_bar: ^1.3.0+1 28 | intl: ^0.15.7 29 | 30 | dev_dependencies: 31 | flutter_test: 32 | sdk: flutter 33 | 34 | 35 | # For information on the generic Dart part of this file, see the 36 | # following page: https://dart.dev/tools/pub/pubspec 37 | 38 | # The following section is specific to Flutter. 39 | flutter: 40 | 41 | # The following line ensures that the Material Icons font is 42 | # included with your application, so that you can use the icons in 43 | # the material Icons class. 44 | uses-material-design: true 45 | 46 | # To add assets to your application, add an assets section, like this: 47 | assets: 48 | - images/ic_logo.png 49 | - images/map-marker.png 50 | - images/navigation.png 51 | - images/car.png 52 | - images/city.png 53 | - images/hatchback.png 54 | - images/tuk.png 55 | - images/van.png 56 | - images/driver.jpg 57 | - images/driver_img.jpg 58 | - images/stopwatch.png 59 | - images/ic_close.png 60 | - images/ic_facebook.png 61 | - images/ic_twitter.png 62 | - images/ic_instagram.png 63 | - images/payments/cash.png 64 | - images/payments/card.png 65 | - images/payments/points.png 66 | - images/menu/user.png 67 | - images/menu/payment.png 68 | - images/menu/book_later.png 69 | - images/menu/my_trips.png 70 | - images/menu/rate_card.png 71 | - images/menu/news_offers.png 72 | - images/menu/emergency_contacts.png 73 | - images/menu/help_support.png 74 | # - images/a_dot_ham.jpeg 75 | 76 | # An image asset can refer to one or more resolution-specific "variants", see 77 | # https://flutter.dev/assets-and-images/#resolution-aware. 78 | 79 | # For details regarding adding assets from package dependencies, see 80 | # https://flutter.dev/assets-and-images/#from-packages 81 | 82 | # To add custom fonts to your application, add a fonts section here, 83 | # in this "flutter" section. Each entry in this list should have a 84 | # "family" key with the font family name, and a "fonts" key with a 85 | # list giving the asset and other descriptors for the font. For 86 | # example: 87 | fonts: 88 | - family: Roboto 89 | fonts: 90 | - asset: fonts/Roboto-Light.ttf 91 | weight: 300 92 | - asset: fonts/Roboto-Regular.ttf 93 | weight: 400 94 | - asset: fonts/Roboto-Medium.ttf 95 | weight: 500 96 | - asset: fonts/Roboto-Bold.ttf 97 | weight: 700 98 | - asset: fonts/Roboto-Black.ttf 99 | weight: 900 100 | 101 | # - family: Trajan Pro 102 | # fonts: 103 | # - asset: fonts/TrajanPro.ttf 104 | # - asset: fonts/TrajanPro_Bold.ttf 105 | # weight: 700 106 | # 107 | # For details regarding fonts from package dependencies, 108 | # see https://flutter.dev/custom-fonts/#from-packages 109 | -------------------------------------------------------------------------------- /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_cab/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 | --------------------------------------------------------------------------------