├── .gitignore ├── .metadata ├── LICENSE ├── README.md ├── U11.gif ├── U22.png ├── U33.png ├── analysis_options.yaml ├── android ├── .gitignore ├── app │ ├── build.gradle │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── kotlin │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── flutter_hotel_booking_ui │ │ │ │ └── MainActivity.kt │ │ └── res │ │ │ ├── drawable-v21 │ │ │ └── launch_background.xml │ │ │ ├── drawable │ │ │ └── launch_background.xml │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── values-night │ │ │ └── styles.xml │ │ │ └── values │ │ │ └── styles.xml │ │ └── profile │ │ └── AndroidManifest.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties └── settings.gradle ├── assets ├── images │ ├── appIcon.png │ ├── avatar1.jpg │ ├── avatar2.jpg │ ├── avatar3.jpg │ ├── avatar4.jpg │ ├── avatar5.jpg │ ├── avatar6.jpg │ ├── avatar7.jpg │ ├── birghtness.png │ ├── city_3.jpg │ ├── city_4.jpg │ ├── city_5.jpg │ ├── city_6.jpg │ ├── explore_1.jpg │ ├── explore_2.jpg │ ├── explore_3.jpg │ ├── hello.jpg │ ├── hotel_1.jpg │ ├── hotel_2.png │ ├── hotel_3.png │ ├── hotel_4.png │ ├── hotel_5.png │ ├── hotel_Type_1.jpg │ ├── hotel_Type_2.jpg │ ├── hotel_Type_3.jpg │ ├── hotel_Type_4.jpg │ ├── hotel_Type_5.jpg │ ├── hotel_Type_6.jpg │ ├── hotel_Type_7.jpg │ ├── hotel_Type_8.jpg │ ├── hotel_Type_9.jpg │ ├── hotel_room_1.jpg │ ├── hotel_room_2.jpg │ ├── hotel_room_3.jpg │ ├── hotel_room_4.jpg │ ├── hotel_room_5.jpg │ ├── hotel_room_6.jpg │ ├── hotel_room_7.jpg │ ├── introduction.jpg │ ├── introduction1.png │ ├── introduction2.png │ ├── introduction3.png │ ├── inviteImage.png │ ├── mapImage.png │ ├── parth.png │ ├── popular_1.jpg │ ├── popular_2.jpg │ ├── popular_3.jpg │ ├── popular_4.jpg │ ├── popular_5.jpg │ ├── popular_6.jpg │ ├── room_1.jpg │ ├── room_10.jpg │ ├── room_11.jpg │ ├── room_12.jpg │ ├── room_2.jpg │ ├── room_3.jpg │ ├── room_4.jpg │ ├── room_5.jpg │ ├── room_6.jpg │ ├── room_7.jpg │ ├── room_8.jpg │ ├── room_9.jpg │ └── userImage.png └── json │ ├── countryList.json │ ├── mapstyle_dark.json │ └── mapstyle_light.json ├── ios ├── .gitignore ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ └── Release.xcconfig ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings └── Runner │ ├── AppDelegate.swift │ ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── Icon-App-1024x1024@1x.png │ │ ├── Icon-App-20x20@1x.png │ │ ├── Icon-App-20x20@2x.png │ │ ├── Icon-App-20x20@3x.png │ │ ├── Icon-App-29x29@1x.png │ │ ├── Icon-App-29x29@2x.png │ │ ├── Icon-App-29x29@3x.png │ │ ├── Icon-App-40x40@1x.png │ │ ├── Icon-App-40x40@2x.png │ │ ├── Icon-App-40x40@3x.png │ │ ├── Icon-App-60x60@2x.png │ │ ├── Icon-App-60x60@3x.png │ │ ├── Icon-App-76x76@1x.png │ │ ├── Icon-App-76x76@2x.png │ │ └── Icon-App-83.5x83.5@2x.png │ └── LaunchImage.imageset │ │ ├── Contents.json │ │ ├── LaunchImage.png │ │ ├── LaunchImage@2x.png │ │ ├── LaunchImage@3x.png │ │ └── README.md │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── Info.plist │ └── Runner-Bridging-Header.h ├── lib ├── common │ └── common.dart ├── language │ ├── appLocalizations.dart │ └── lang │ │ └── language_text.json ├── main.dart ├── modules │ └── splash │ │ ├── components │ │ └── page_pop_view.dart │ │ ├── introductionScreen.dart │ │ └── splashScreen.dart ├── motel_app.dart ├── providers │ └── theme_provider.dart ├── routes │ ├── route_names.dart │ └── routes.dart ├── utils │ ├── enum.dart │ ├── localfiles.dart │ ├── shared_preferences_keys.dart │ ├── text_styles.dart │ ├── themes.dart │ └── validator.dart └── widgets │ ├── common_button.dart │ └── tap_effect.dart ├── pubspec.lock ├── pubspec.yaml ├── test └── widget_test.dart └── web ├── favicon.png ├── icons ├── Icon-192.png ├── Icon-512.png ├── Icon-maskable-192.png └── Icon-maskable-512.png ├── index.html └── manifest.json /.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | **/ios/Flutter/.last_build_id 26 | .dart_tool/ 27 | .flutter-plugins 28 | .flutter-plugins-dependencies 29 | .packages 30 | .pub-cache/ 31 | .pub/ 32 | /build/ 33 | 34 | # Web related 35 | lib/generated_plugin_registrant.dart 36 | 37 | # Symbolication related 38 | app.*.symbols 39 | 40 | # Obfuscation related 41 | app.*.map.json 42 | 43 | # Android Studio will place build artifacts here 44 | /android/app/debug 45 | /android/app/profile 46 | /android/app/release 47 | -------------------------------------------------------------------------------- /.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 77d935af4db863f6abd0b9c31c7e6df2a13de57b 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Punithraj M N 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Flutter_hotel_booking_ui 2 | 3 | A new Flutter project.In this video, I'm going to show you how to make a Cool Hotel Booking App using Flutter and visual studio code from scratch. 4 | In this video, I'm going to show you how to make a Cool Hotel Booking App using Flutter and visual studio code from scratch. 5 | In this tutorial, you will learn how to create a Splash Screen and Introduction Screen, how to implement a SmoothPageIndicator in Flutter. 6 | 7 | 🚀 Nice, clean and modern Hotel Booking #App #UI made in #Flutter 8 | 9 | Click here to Subscribe to https://youtube.com/@TheFlutterAndDartAcademy 10 | 11 | ## [Watch it on YouTube](https://youtu.be/-tHUmjIkGJ4) 12 | ![Preview](U11.gif) 13 | 14 | **Packages we are using:** 15 | 16 | - smooth_page_indicator: [link](https://pub.dev/packages/smooth_page_indicator) 17 | - provider: [link](https://pub.dev/packages/provider) 18 | - font_awesome_flutter: [link](https://pub.dev/packages/font_awesome_flutter) 19 | - google_fonts: [link](https://pub.dev/packages/google_fonts) 20 | - shared_preferences: [link](https://pub.dev/packages/shared_preferences) 21 | 22 | 23 | ## Screens it contains: 24 | 25 | => Splash Screen 26 | 27 | => Introduction Screen 28 | 29 | Now it contains all the screen, thanks for your love and support 🙏 30 | 31 | ## Photos 32 | ![Preview](/U33.png) 33 | ![Preview](U22.png) 34 | -------------------------------------------------------------------------------- /U11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/U11.gif -------------------------------------------------------------------------------- /U22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/U22.png -------------------------------------------------------------------------------- /U33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/U33.png -------------------------------------------------------------------------------- /analysis_options.yaml: -------------------------------------------------------------------------------- 1 | # This file configures the analyzer, which statically analyzes Dart code to 2 | # check for errors, warnings, and lints. 3 | # 4 | # The issues identified by the analyzer are surfaced in the UI of Dart-enabled 5 | # IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be 6 | # invoked from the command line by running `flutter analyze`. 7 | 8 | # The following line activates a set of recommended lints for Flutter apps, 9 | # packages, and plugins designed to encourage good coding practices. 10 | include: package:flutter_lints/flutter.yaml 11 | 12 | linter: 13 | # The lint rules applied to this project can be customized in the 14 | # section below to disable rules from the `package:flutter_lints/flutter.yaml` 15 | # included above or to enable additional rules. A list of all available lints 16 | # and their documentation is published at 17 | # https://dart-lang.github.io/linter/lints/index.html. 18 | # 19 | # Instead of disabling a lint rule for the entire project in the 20 | # section below, it can also be suppressed for a single line of code 21 | # or a specific dart file by using the `// ignore: name_of_lint` and 22 | # `// ignore_for_file: name_of_lint` syntax on the line or in the file 23 | # producing the lint. 24 | rules: 25 | # avoid_print: false # Uncomment to disable the `avoid_print` rule 26 | # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule 27 | 28 | # Additional information about this file can be found at 29 | # https://dart.dev/guides/language/analysis-options 30 | -------------------------------------------------------------------------------- /android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | def localProperties = new Properties() 2 | def localPropertiesFile = rootProject.file('local.properties') 3 | if (localPropertiesFile.exists()) { 4 | localPropertiesFile.withReader('UTF-8') { reader -> 5 | localProperties.load(reader) 6 | } 7 | } 8 | 9 | def flutterRoot = localProperties.getProperty('flutter.sdk') 10 | if (flutterRoot == null) { 11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 12 | } 13 | 14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 15 | if (flutterVersionCode == null) { 16 | flutterVersionCode = '1' 17 | } 18 | 19 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 20 | if (flutterVersionName == null) { 21 | flutterVersionName = '1.0' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | apply plugin: 'kotlin-android' 26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 27 | 28 | android { 29 | compileSdkVersion flutter.compileSdkVersion 30 | 31 | compileOptions { 32 | sourceCompatibility JavaVersion.VERSION_1_8 33 | targetCompatibility JavaVersion.VERSION_1_8 34 | } 35 | 36 | kotlinOptions { 37 | jvmTarget = '1.8' 38 | } 39 | 40 | sourceSets { 41 | main.java.srcDirs += 'src/main/kotlin' 42 | } 43 | 44 | defaultConfig { 45 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 46 | applicationId "com.example.flutter_hotel_booking_ui" 47 | minSdkVersion flutter.minSdkVersion 48 | targetSdkVersion flutter.targetSdkVersion 49 | versionCode flutterVersionCode.toInteger() 50 | versionName flutterVersionName 51 | } 52 | 53 | buildTypes { 54 | release { 55 | // TODO: Add your own signing config for the release build. 56 | // Signing with the debug keys for now, so `flutter run --release` works. 57 | signingConfig signingConfigs.debug 58 | } 59 | } 60 | } 61 | 62 | flutter { 63 | source '../..' 64 | } 65 | 66 | dependencies { 67 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 68 | } 69 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 15 | 19 | 23 | 24 | 25 | 26 | 27 | 28 | 30 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /android/app/src/main/kotlin/com/example/flutter_hotel_booking_ui/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.flutter_hotel_booking_ui 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /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/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/values-night/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.3.50' 3 | repositories { 4 | google() 5 | mavenCentral() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:4.1.0' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | mavenCentral() 18 | } 19 | } 20 | 21 | rootProject.buildDir = '../build' 22 | subprojects { 23 | project.buildDir = "${rootProject.buildDir}/${project.name}" 24 | } 25 | subprojects { 26 | project.evaluationDependsOn(':app') 27 | } 28 | 29 | task clean(type: Delete) { 30 | delete rootProject.buildDir 31 | } 32 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip 7 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /assets/images/appIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/appIcon.png -------------------------------------------------------------------------------- /assets/images/avatar1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/avatar1.jpg -------------------------------------------------------------------------------- /assets/images/avatar2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/avatar2.jpg -------------------------------------------------------------------------------- /assets/images/avatar3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/avatar3.jpg -------------------------------------------------------------------------------- /assets/images/avatar4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/avatar4.jpg -------------------------------------------------------------------------------- /assets/images/avatar5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/avatar5.jpg -------------------------------------------------------------------------------- /assets/images/avatar6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/avatar6.jpg -------------------------------------------------------------------------------- /assets/images/avatar7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/avatar7.jpg -------------------------------------------------------------------------------- /assets/images/birghtness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/birghtness.png -------------------------------------------------------------------------------- /assets/images/city_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/city_3.jpg -------------------------------------------------------------------------------- /assets/images/city_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/city_4.jpg -------------------------------------------------------------------------------- /assets/images/city_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/city_5.jpg -------------------------------------------------------------------------------- /assets/images/city_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/city_6.jpg -------------------------------------------------------------------------------- /assets/images/explore_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/explore_1.jpg -------------------------------------------------------------------------------- /assets/images/explore_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/explore_2.jpg -------------------------------------------------------------------------------- /assets/images/explore_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/explore_3.jpg -------------------------------------------------------------------------------- /assets/images/hello.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hello.jpg -------------------------------------------------------------------------------- /assets/images/hotel_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hotel_1.jpg -------------------------------------------------------------------------------- /assets/images/hotel_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hotel_2.png -------------------------------------------------------------------------------- /assets/images/hotel_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hotel_3.png -------------------------------------------------------------------------------- /assets/images/hotel_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hotel_4.png -------------------------------------------------------------------------------- /assets/images/hotel_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hotel_5.png -------------------------------------------------------------------------------- /assets/images/hotel_Type_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hotel_Type_1.jpg -------------------------------------------------------------------------------- /assets/images/hotel_Type_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hotel_Type_2.jpg -------------------------------------------------------------------------------- /assets/images/hotel_Type_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hotel_Type_3.jpg -------------------------------------------------------------------------------- /assets/images/hotel_Type_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hotel_Type_4.jpg -------------------------------------------------------------------------------- /assets/images/hotel_Type_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hotel_Type_5.jpg -------------------------------------------------------------------------------- /assets/images/hotel_Type_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hotel_Type_6.jpg -------------------------------------------------------------------------------- /assets/images/hotel_Type_7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hotel_Type_7.jpg -------------------------------------------------------------------------------- /assets/images/hotel_Type_8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hotel_Type_8.jpg -------------------------------------------------------------------------------- /assets/images/hotel_Type_9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hotel_Type_9.jpg -------------------------------------------------------------------------------- /assets/images/hotel_room_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hotel_room_1.jpg -------------------------------------------------------------------------------- /assets/images/hotel_room_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hotel_room_2.jpg -------------------------------------------------------------------------------- /assets/images/hotel_room_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hotel_room_3.jpg -------------------------------------------------------------------------------- /assets/images/hotel_room_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hotel_room_4.jpg -------------------------------------------------------------------------------- /assets/images/hotel_room_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hotel_room_5.jpg -------------------------------------------------------------------------------- /assets/images/hotel_room_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hotel_room_6.jpg -------------------------------------------------------------------------------- /assets/images/hotel_room_7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/hotel_room_7.jpg -------------------------------------------------------------------------------- /assets/images/introduction.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/introduction.jpg -------------------------------------------------------------------------------- /assets/images/introduction1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/introduction1.png -------------------------------------------------------------------------------- /assets/images/introduction2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/introduction2.png -------------------------------------------------------------------------------- /assets/images/introduction3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/introduction3.png -------------------------------------------------------------------------------- /assets/images/inviteImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/inviteImage.png -------------------------------------------------------------------------------- /assets/images/mapImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/mapImage.png -------------------------------------------------------------------------------- /assets/images/parth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/parth.png -------------------------------------------------------------------------------- /assets/images/popular_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/popular_1.jpg -------------------------------------------------------------------------------- /assets/images/popular_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/popular_2.jpg -------------------------------------------------------------------------------- /assets/images/popular_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/popular_3.jpg -------------------------------------------------------------------------------- /assets/images/popular_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/popular_4.jpg -------------------------------------------------------------------------------- /assets/images/popular_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/popular_5.jpg -------------------------------------------------------------------------------- /assets/images/popular_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/popular_6.jpg -------------------------------------------------------------------------------- /assets/images/room_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/room_1.jpg -------------------------------------------------------------------------------- /assets/images/room_10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/room_10.jpg -------------------------------------------------------------------------------- /assets/images/room_11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/room_11.jpg -------------------------------------------------------------------------------- /assets/images/room_12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/room_12.jpg -------------------------------------------------------------------------------- /assets/images/room_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/room_2.jpg -------------------------------------------------------------------------------- /assets/images/room_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/room_3.jpg -------------------------------------------------------------------------------- /assets/images/room_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/room_4.jpg -------------------------------------------------------------------------------- /assets/images/room_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/room_5.jpg -------------------------------------------------------------------------------- /assets/images/room_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/room_6.jpg -------------------------------------------------------------------------------- /assets/images/room_7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/room_7.jpg -------------------------------------------------------------------------------- /assets/images/room_8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/room_8.jpg -------------------------------------------------------------------------------- /assets/images/room_9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/room_9.jpg -------------------------------------------------------------------------------- /assets/images/userImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/assets/images/userImage.png -------------------------------------------------------------------------------- /assets/json/countryList.json: -------------------------------------------------------------------------------- 1 | { 2 | "countryList": [ 3 | { 4 | "name": "Afghanistan", 5 | "code": "AF" 6 | }, 7 | { 8 | "name": "Åland Islands", 9 | "code": "AX" 10 | }, 11 | { 12 | "name": "Albania", 13 | "code": "AL" 14 | }, 15 | { 16 | "name": "Algeria", 17 | "code": "DZ" 18 | }, 19 | { 20 | "name": "American Samoa", 21 | "code": "AS" 22 | }, 23 | { 24 | "name": "AndorrA", 25 | "code": "AD" 26 | }, 27 | { 28 | "name": "Angola", 29 | "code": "AO" 30 | }, 31 | { 32 | "name": "Anguilla", 33 | "code": "AI" 34 | }, 35 | { 36 | "name": "Antarctica", 37 | "code": "AQ" 38 | }, 39 | { 40 | "name": "Antigua and Barbuda", 41 | "code": "AG" 42 | }, 43 | { 44 | "name": "Argentina", 45 | "code": "AR" 46 | }, 47 | { 48 | "name": "Armenia", 49 | "code": "AM" 50 | }, 51 | { 52 | "name": "Aruba", 53 | "code": "AW" 54 | }, 55 | { 56 | "name": "Australia", 57 | "code": "AU" 58 | }, 59 | { 60 | "name": "Austria", 61 | "code": "AT" 62 | }, 63 | { 64 | "name": "Azerbaijan", 65 | "code": "AZ" 66 | }, 67 | { 68 | "name": "Bahamas", 69 | "code": "BS" 70 | }, 71 | { 72 | "name": "Bahrain", 73 | "code": "BH" 74 | }, 75 | { 76 | "name": "Bangladesh", 77 | "code": "BD" 78 | }, 79 | { 80 | "name": "Barbados", 81 | "code": "BB" 82 | }, 83 | { 84 | "name": "Belarus", 85 | "code": "BY" 86 | }, 87 | { 88 | "name": "Belgium", 89 | "code": "BE" 90 | }, 91 | { 92 | "name": "Belize", 93 | "code": "BZ" 94 | }, 95 | { 96 | "name": "Benin", 97 | "code": "BJ" 98 | }, 99 | { 100 | "name": "Bermuda", 101 | "code": "BM" 102 | }, 103 | { 104 | "name": "Bhutan", 105 | "code": "BT" 106 | }, 107 | { 108 | "name": "Bolivia", 109 | "code": "BO" 110 | }, 111 | { 112 | "name": "Bosnia and Herzegovina", 113 | "code": "BA" 114 | }, 115 | { 116 | "name": "Botswana", 117 | "code": "BW" 118 | }, 119 | { 120 | "name": "Bouvet Island", 121 | "code": "BV" 122 | }, 123 | { 124 | "name": "Brazil", 125 | "code": "BR" 126 | }, 127 | { 128 | "name": "British Indian Ocean Territory", 129 | "code": "IO" 130 | }, 131 | { 132 | "name": "Brunei Darussalam", 133 | "code": "BN" 134 | }, 135 | { 136 | "name": "Bulgaria", 137 | "code": "BG" 138 | }, 139 | { 140 | "name": "Burkina Faso", 141 | "code": "BF" 142 | }, 143 | { 144 | "name": "Burundi", 145 | "code": "BI" 146 | }, 147 | { 148 | "name": "Cambodia", 149 | "code": "KH" 150 | }, 151 | { 152 | "name": "Cameroon", 153 | "code": "CM" 154 | }, 155 | { 156 | "name": "Canada", 157 | "code": "CA" 158 | }, 159 | { 160 | "name": "Cape Verde", 161 | "code": "CV" 162 | }, 163 | { 164 | "name": "Cayman Islands", 165 | "code": "KY" 166 | }, 167 | { 168 | "name": "Central African Republic", 169 | "code": "CF" 170 | }, 171 | { 172 | "name": "Chad", 173 | "code": "TD" 174 | }, 175 | { 176 | "name": "Chile", 177 | "code": "CL" 178 | }, 179 | { 180 | "name": "China", 181 | "code": "CN" 182 | }, 183 | { 184 | "name": "Christmas Island", 185 | "code": "CX" 186 | }, 187 | { 188 | "name": "Cocos (Keeling) Islands", 189 | "code": "CC" 190 | }, 191 | { 192 | "name": "Colombia", 193 | "code": "CO" 194 | }, 195 | { 196 | "name": "Comoros", 197 | "code": "KM" 198 | }, 199 | { 200 | "name": "Congo", 201 | "code": "CG" 202 | }, 203 | { 204 | "name": "Congo, The Democratic Republic of the", 205 | "code": "CD" 206 | }, 207 | { 208 | "name": "Cook Islands", 209 | "code": "CK" 210 | }, 211 | { 212 | "name": "Costa Rica", 213 | "code": "CR" 214 | }, 215 | { 216 | "name": "Cote D'Ivoire", 217 | "code": "CI" 218 | }, 219 | { 220 | "name": "Croatia", 221 | "code": "HR" 222 | }, 223 | { 224 | "name": "Cuba", 225 | "code": "CU" 226 | }, 227 | { 228 | "name": "Cyprus", 229 | "code": "CY" 230 | }, 231 | { 232 | "name": "Czech Republic", 233 | "code": "CZ" 234 | }, 235 | { 236 | "name": "Denmark", 237 | "code": "DK" 238 | }, 239 | { 240 | "name": "Djibouti", 241 | "code": "DJ" 242 | }, 243 | { 244 | "name": "Dominica", 245 | "code": "DM" 246 | }, 247 | { 248 | "name": "Dominican Republic", 249 | "code": "DO" 250 | }, 251 | { 252 | "name": "Ecuador", 253 | "code": "EC" 254 | }, 255 | { 256 | "name": "Egypt", 257 | "code": "EG" 258 | }, 259 | { 260 | "name": "El Salvador", 261 | "code": "SV" 262 | }, 263 | { 264 | "name": "Equatorial Guinea", 265 | "code": "GQ" 266 | }, 267 | { 268 | "name": "Eritrea", 269 | "code": "ER" 270 | }, 271 | { 272 | "name": "Estonia", 273 | "code": "EE" 274 | }, 275 | { 276 | "name": "Ethiopia", 277 | "code": "ET" 278 | }, 279 | { 280 | "name": "Falkland Islands (Malvinas)", 281 | "code": "FK" 282 | }, 283 | { 284 | "name": "Faroe Islands", 285 | "code": "FO" 286 | }, 287 | { 288 | "name": "Fiji", 289 | "code": "FJ" 290 | }, 291 | { 292 | "name": "Finland", 293 | "code": "FI" 294 | }, 295 | { 296 | "name": "France", 297 | "code": "FR" 298 | }, 299 | { 300 | "name": "French Guiana", 301 | "code": "GF" 302 | }, 303 | { 304 | "name": "French Polynesia", 305 | "code": "PF" 306 | }, 307 | { 308 | "name": "French Southern Territories", 309 | "code": "TF" 310 | }, 311 | { 312 | "name": "Gabon", 313 | "code": "GA" 314 | }, 315 | { 316 | "name": "Gambia", 317 | "code": "GM" 318 | }, 319 | { 320 | "name": "Georgia", 321 | "code": "GE" 322 | }, 323 | { 324 | "name": "Germany", 325 | "code": "DE" 326 | }, 327 | { 328 | "name": "Ghana", 329 | "code": "GH" 330 | }, 331 | { 332 | "name": "Gibraltar", 333 | "code": "GI" 334 | }, 335 | { 336 | "name": "Greece", 337 | "code": "GR" 338 | }, 339 | { 340 | "name": "Greenland", 341 | "code": "GL" 342 | }, 343 | { 344 | "name": "Grenada", 345 | "code": "GD" 346 | }, 347 | { 348 | "name": "Guadeloupe", 349 | "code": "GP" 350 | }, 351 | { 352 | "name": "Guam", 353 | "code": "GU" 354 | }, 355 | { 356 | "name": "Guatemala", 357 | "code": "GT" 358 | }, 359 | { 360 | "name": "Guernsey", 361 | "code": "GG" 362 | }, 363 | { 364 | "name": "Guinea", 365 | "code": "GN" 366 | }, 367 | { 368 | "name": "Guinea-Bissau", 369 | "code": "GW" 370 | }, 371 | { 372 | "name": "Guyana", 373 | "code": "GY" 374 | }, 375 | { 376 | "name": "Haiti", 377 | "code": "HT" 378 | }, 379 | { 380 | "name": "Heard Island and Mcdonald Islands", 381 | "code": "HM" 382 | }, 383 | { 384 | "name": "Holy See (Vatican City State)", 385 | "code": "VA" 386 | }, 387 | { 388 | "name": "Honduras", 389 | "code": "HN" 390 | }, 391 | { 392 | "name": "Hong Kong", 393 | "code": "HK" 394 | }, 395 | { 396 | "name": "Hungary", 397 | "code": "HU" 398 | }, 399 | { 400 | "name": "Iceland", 401 | "code": "IS" 402 | }, 403 | { 404 | "name": "India", 405 | "code": "IN" 406 | }, 407 | { 408 | "name": "Indonesia", 409 | "code": "ID" 410 | }, 411 | { 412 | "name": "Iran, Islamic Republic Of", 413 | "code": "IR" 414 | }, 415 | { 416 | "name": "Iraq", 417 | "code": "IQ" 418 | }, 419 | { 420 | "name": "Ireland", 421 | "code": "IE" 422 | }, 423 | { 424 | "name": "Isle of Man", 425 | "code": "IM" 426 | }, 427 | { 428 | "name": "Israel", 429 | "code": "IL" 430 | }, 431 | { 432 | "name": "Italy", 433 | "code": "IT" 434 | }, 435 | { 436 | "name": "Jamaica", 437 | "code": "JM" 438 | }, 439 | { 440 | "name": "Japan", 441 | "code": "JP" 442 | }, 443 | { 444 | "name": "Jersey", 445 | "code": "JE" 446 | }, 447 | { 448 | "name": "Jordan", 449 | "code": "JO" 450 | }, 451 | { 452 | "name": "Kazakhstan", 453 | "code": "KZ" 454 | }, 455 | { 456 | "name": "Kenya", 457 | "code": "KE" 458 | }, 459 | { 460 | "name": "Kiribati", 461 | "code": "KI" 462 | }, 463 | { 464 | "name": "Korea, Democratic People'S Republic of", 465 | "code": "KP" 466 | }, 467 | { 468 | "name": "Korea, Republic of", 469 | "code": "KR" 470 | }, 471 | { 472 | "name": "Kuwait", 473 | "code": "KW" 474 | }, 475 | { 476 | "name": "Kyrgyzstan", 477 | "code": "KG" 478 | }, 479 | { 480 | "name": "Lao People'S Democratic Republic", 481 | "code": "LA" 482 | }, 483 | { 484 | "name": "Latvia", 485 | "code": "LV" 486 | }, 487 | { 488 | "name": "Lebanon", 489 | "code": "LB" 490 | }, 491 | { 492 | "name": "Lesotho", 493 | "code": "LS" 494 | }, 495 | { 496 | "name": "Liberia", 497 | "code": "LR" 498 | }, 499 | { 500 | "name": "Libyan Arab Jamahiriya", 501 | "code": "LY" 502 | }, 503 | { 504 | "name": "Liechtenstein", 505 | "code": "LI" 506 | }, 507 | { 508 | "name": "Lithuania", 509 | "code": "LT" 510 | }, 511 | { 512 | "name": "Luxembourg", 513 | "code": "LU" 514 | }, 515 | { 516 | "name": "Macao", 517 | "code": "MO" 518 | }, 519 | { 520 | "name": "Macedonia, The Former Yugoslav Republic of", 521 | "code": "MK" 522 | }, 523 | { 524 | "name": "Madagascar", 525 | "code": "MG" 526 | }, 527 | { 528 | "name": "Malawi", 529 | "code": "MW" 530 | }, 531 | { 532 | "name": "Malaysia", 533 | "code": "MY" 534 | }, 535 | { 536 | "name": "Maldives", 537 | "code": "MV" 538 | }, 539 | { 540 | "name": "Mali", 541 | "code": "ML" 542 | }, 543 | { 544 | "name": "Malta", 545 | "code": "MT" 546 | }, 547 | { 548 | "name": "Marshall Islands", 549 | "code": "MH" 550 | }, 551 | { 552 | "name": "Martinique", 553 | "code": "MQ" 554 | }, 555 | { 556 | "name": "Mauritania", 557 | "code": "MR" 558 | }, 559 | { 560 | "name": "Mauritius", 561 | "code": "MU" 562 | }, 563 | { 564 | "name": "Mayotte", 565 | "code": "YT" 566 | }, 567 | { 568 | "name": "Mexico", 569 | "code": "MX" 570 | }, 571 | { 572 | "name": "Micronesia, Federated States of", 573 | "code": "FM" 574 | }, 575 | { 576 | "name": "Moldova, Republic of", 577 | "code": "MD" 578 | }, 579 | { 580 | "name": "Monaco", 581 | "code": "MC" 582 | }, 583 | { 584 | "name": "Mongolia", 585 | "code": "MN" 586 | }, 587 | { 588 | "name": "Montserrat", 589 | "code": "MS" 590 | }, 591 | { 592 | "name": "Morocco", 593 | "code": "MA" 594 | }, 595 | { 596 | "name": "Mozambique", 597 | "code": "MZ" 598 | }, 599 | { 600 | "name": "Myanmar", 601 | "code": "MM" 602 | }, 603 | { 604 | "name": "Namibia", 605 | "code": "NA" 606 | }, 607 | { 608 | "name": "Nauru", 609 | "code": "NR" 610 | }, 611 | { 612 | "name": "Nepal", 613 | "code": "NP" 614 | }, 615 | { 616 | "name": "Netherlands", 617 | "code": "NL" 618 | }, 619 | { 620 | "name": "Netherlands Antilles", 621 | "code": "AN" 622 | }, 623 | { 624 | "name": "New Caledonia", 625 | "code": "NC" 626 | }, 627 | { 628 | "name": "New Zealand", 629 | "code": "NZ" 630 | }, 631 | { 632 | "name": "Nicaragua", 633 | "code": "NI" 634 | }, 635 | { 636 | "name": "Niger", 637 | "code": "NE" 638 | }, 639 | { 640 | "name": "Nigeria", 641 | "code": "NG" 642 | }, 643 | { 644 | "name": "Niue", 645 | "code": "NU" 646 | }, 647 | { 648 | "name": "Norfolk Island", 649 | "code": "NF" 650 | }, 651 | { 652 | "name": "Northern Mariana Islands", 653 | "code": "MP" 654 | }, 655 | { 656 | "name": "Norway", 657 | "code": "NO" 658 | }, 659 | { 660 | "name": "Oman", 661 | "code": "OM" 662 | }, 663 | { 664 | "name": "Pakistan", 665 | "code": "PK" 666 | }, 667 | { 668 | "name": "Palau", 669 | "code": "PW" 670 | }, 671 | { 672 | "name": "Palestinian Territory, Occupied", 673 | "code": "PS" 674 | }, 675 | { 676 | "name": "Panama", 677 | "code": "PA" 678 | }, 679 | { 680 | "name": "Papua New Guinea", 681 | "code": "PG" 682 | }, 683 | { 684 | "name": "Paraguay", 685 | "code": "PY" 686 | }, 687 | { 688 | "name": "Peru", 689 | "code": "PE" 690 | }, 691 | { 692 | "name": "Philippines", 693 | "code": "PH" 694 | }, 695 | { 696 | "name": "Pitcairn", 697 | "code": "PN" 698 | }, 699 | { 700 | "name": "Poland", 701 | "code": "PL" 702 | }, 703 | { 704 | "name": "Portugal", 705 | "code": "PT" 706 | }, 707 | { 708 | "name": "Puerto Rico", 709 | "code": "PR" 710 | }, 711 | { 712 | "name": "Qatar", 713 | "code": "QA" 714 | }, 715 | { 716 | "name": "Reunion", 717 | "code": "RE" 718 | }, 719 | { 720 | "name": "Romania", 721 | "code": "RO" 722 | }, 723 | { 724 | "name": "Russian Federation", 725 | "code": "RU" 726 | }, 727 | { 728 | "name": "RWANDA", 729 | "code": "RW" 730 | }, 731 | { 732 | "name": "Saint Helena", 733 | "code": "SH" 734 | }, 735 | { 736 | "name": "Saint Kitts and Nevis", 737 | "code": "KN" 738 | }, 739 | { 740 | "name": "Saint Lucia", 741 | "code": "LC" 742 | }, 743 | { 744 | "name": "Saint Pierre and Miquelon", 745 | "code": "PM" 746 | }, 747 | { 748 | "name": "Saint Vincent and the Grenadines", 749 | "code": "VC" 750 | }, 751 | { 752 | "name": "Samoa", 753 | "code": "WS" 754 | }, 755 | { 756 | "name": "San Marino", 757 | "code": "SM" 758 | }, 759 | { 760 | "name": "Sao Tome and Principe", 761 | "code": "ST" 762 | }, 763 | { 764 | "name": "Saudi Arabia", 765 | "code": "SA" 766 | }, 767 | { 768 | "name": "Senegal", 769 | "code": "SN" 770 | }, 771 | { 772 | "name": "Serbia and Montenegro", 773 | "code": "CS" 774 | }, 775 | { 776 | "name": "Seychelles", 777 | "code": "SC" 778 | }, 779 | { 780 | "name": "Sierra Leone", 781 | "code": "SL" 782 | }, 783 | { 784 | "name": "Singapore", 785 | "code": "SG" 786 | }, 787 | { 788 | "name": "Slovakia", 789 | "code": "SK" 790 | }, 791 | { 792 | "name": "Slovenia", 793 | "code": "SI" 794 | }, 795 | { 796 | "name": "Solomon Islands", 797 | "code": "SB" 798 | }, 799 | { 800 | "name": "Somalia", 801 | "code": "SO" 802 | }, 803 | { 804 | "name": "South Africa", 805 | "code": "ZA" 806 | }, 807 | { 808 | "name": "South Georgia and the South Sandwich Islands", 809 | "code": "GS" 810 | }, 811 | { 812 | "name": "Spain", 813 | "code": "ES" 814 | }, 815 | { 816 | "name": "Sri Lanka", 817 | "code": "LK" 818 | }, 819 | { 820 | "name": "Sudan", 821 | "code": "SD" 822 | }, 823 | { 824 | "name": "Suriname", 825 | "code": "SR" 826 | }, 827 | { 828 | "name": "Svalbard and Jan Mayen", 829 | "code": "SJ" 830 | }, 831 | { 832 | "name": "Swaziland", 833 | "code": "SZ" 834 | }, 835 | { 836 | "name": "Sweden", 837 | "code": "SE" 838 | }, 839 | { 840 | "name": "Switzerland", 841 | "code": "CH" 842 | }, 843 | { 844 | "name": "Syrian Arab Republic", 845 | "code": "SY" 846 | }, 847 | { 848 | "name": "Taiwan, Province of China", 849 | "code": "TW" 850 | }, 851 | { 852 | "name": "Tajikistan", 853 | "code": "TJ" 854 | }, 855 | { 856 | "name": "Tanzania, United Republic of", 857 | "code": "TZ" 858 | }, 859 | { 860 | "name": "Thailand", 861 | "code": "TH" 862 | }, 863 | { 864 | "name": "Timor-Leste", 865 | "code": "TL" 866 | }, 867 | { 868 | "name": "Togo", 869 | "code": "TG" 870 | }, 871 | { 872 | "name": "Tokelau", 873 | "code": "TK" 874 | }, 875 | { 876 | "name": "Tonga", 877 | "code": "TO" 878 | }, 879 | { 880 | "name": "Trinidad and Tobago", 881 | "code": "TT" 882 | }, 883 | { 884 | "name": "Tunisia", 885 | "code": "TN" 886 | }, 887 | { 888 | "name": "Turkey", 889 | "code": "TR" 890 | }, 891 | { 892 | "name": "Turkmenistan", 893 | "code": "TM" 894 | }, 895 | { 896 | "name": "Turks and Caicos Islands", 897 | "code": "TC" 898 | }, 899 | { 900 | "name": "Tuvalu", 901 | "code": "TV" 902 | }, 903 | { 904 | "name": "Uganda", 905 | "code": "UG" 906 | }, 907 | { 908 | "name": "Ukraine", 909 | "code": "UA" 910 | }, 911 | { 912 | "name": "United Arab Emirates", 913 | "code": "AE" 914 | }, 915 | { 916 | "name": "United Kingdom", 917 | "code": "GB" 918 | }, 919 | { 920 | "name": "United States", 921 | "code": "US" 922 | }, 923 | { 924 | "name": "United States Minor Outlying Islands", 925 | "code": "UM" 926 | }, 927 | { 928 | "name": "Uruguay", 929 | "code": "UY" 930 | }, 931 | { 932 | "name": "Uzbekistan", 933 | "code": "UZ" 934 | }, 935 | { 936 | "name": "Vanuatu", 937 | "code": "VU" 938 | }, 939 | { 940 | "name": "Venezuela", 941 | "code": "VE" 942 | }, 943 | { 944 | "name": "Viet Nam", 945 | "code": "VN" 946 | }, 947 | { 948 | "name": "Virgin Islands, British", 949 | "code": "VG" 950 | }, 951 | { 952 | "name": "Virgin Islands, U.S.", 953 | "code": "VI" 954 | }, 955 | { 956 | "name": "Wallis and Futuna", 957 | "code": "WF" 958 | }, 959 | { 960 | "name": "Western Sahara", 961 | "code": "EH" 962 | }, 963 | { 964 | "name": "Yemen", 965 | "code": "YE" 966 | }, 967 | { 968 | "name": "Zambia", 969 | "code": "ZM" 970 | }, 971 | { 972 | "name": "Zimbabwe", 973 | "code": "ZW" 974 | } 975 | ] 976 | } -------------------------------------------------------------------------------- /assets/json/mapstyle_dark.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "elementType": "geometry", 4 | "stylers": [ 5 | { 6 | "color": "#212121" 7 | } 8 | ] 9 | }, 10 | { 11 | "elementType": "labels.icon", 12 | "stylers": [ 13 | { 14 | "visibility": "off" 15 | } 16 | ] 17 | }, 18 | { 19 | "elementType": "labels.text.fill", 20 | "stylers": [ 21 | { 22 | "color": "#757575" 23 | } 24 | ] 25 | }, 26 | { 27 | "elementType": "labels.text.stroke", 28 | "stylers": [ 29 | { 30 | "color": "#212121" 31 | } 32 | ] 33 | }, 34 | { 35 | "featureType": "administrative", 36 | "elementType": "geometry", 37 | "stylers": [ 38 | { 39 | "color": "#757575" 40 | } 41 | ] 42 | }, 43 | { 44 | "featureType": "administrative.country", 45 | "elementType": "labels.text.fill", 46 | "stylers": [ 47 | { 48 | "color": "#9e9e9e" 49 | } 50 | ] 51 | }, 52 | { 53 | "featureType": "administrative.land_parcel", 54 | "stylers": [ 55 | { 56 | "visibility": "off" 57 | } 58 | ] 59 | }, 60 | { 61 | "featureType": "administrative.locality", 62 | "elementType": "labels.text.fill", 63 | "stylers": [ 64 | { 65 | "color": "#bdbdbd" 66 | } 67 | ] 68 | }, 69 | { 70 | "featureType": "landscape.man_made", 71 | "stylers": [ 72 | { 73 | "visibility": "off" 74 | } 75 | ] 76 | }, 77 | { 78 | "featureType": "poi", 79 | "stylers": [ 80 | { 81 | "visibility": "off" 82 | } 83 | ] 84 | }, 85 | { 86 | "featureType": "poi", 87 | "elementType": "labels.text.stroke", 88 | "stylers": [ 89 | { 90 | "visibility": "off" 91 | } 92 | ] 93 | }, 94 | { 95 | "featureType": "poi.attraction", 96 | "stylers": [ 97 | { 98 | "visibility": "off" 99 | } 100 | ] 101 | }, 102 | { 103 | "featureType": "poi.business", 104 | "stylers": [ 105 | { 106 | "visibility": "off" 107 | } 108 | ] 109 | }, 110 | { 111 | "featureType": "road", 112 | "elementType": "geometry.fill", 113 | "stylers": [ 114 | { 115 | "color": "#2c2c2c" 116 | } 117 | ] 118 | }, 119 | { 120 | "featureType": "road", 121 | "elementType": "labels.text.fill", 122 | "stylers": [ 123 | { 124 | "color": "#8a8a8a" 125 | } 126 | ] 127 | }, 128 | { 129 | "featureType": "road.arterial", 130 | "elementType": "geometry", 131 | "stylers": [ 132 | { 133 | "color": "#373737" 134 | } 135 | ] 136 | }, 137 | { 138 | "featureType": "road.highway", 139 | "elementType": "geometry", 140 | "stylers": [ 141 | { 142 | "color": "#3c3c3c" 143 | } 144 | ] 145 | }, 146 | { 147 | "featureType": "road.highway.controlled_access", 148 | "elementType": "geometry", 149 | "stylers": [ 150 | { 151 | "color": "#4e4e4e" 152 | } 153 | ] 154 | }, 155 | { 156 | "featureType": "road.local", 157 | "elementType": "labels.text.fill", 158 | "stylers": [ 159 | { 160 | "color": "#616161" 161 | } 162 | ] 163 | }, 164 | { 165 | "featureType": "transit", 166 | "elementType": "labels.text.fill", 167 | "stylers": [ 168 | { 169 | "color": "#757575" 170 | } 171 | ] 172 | }, 173 | { 174 | "featureType": "water", 175 | "elementType": "geometry", 176 | "stylers": [ 177 | { 178 | "color": "#000000" 179 | } 180 | ] 181 | }, 182 | { 183 | "featureType": "water", 184 | "elementType": "labels.text.fill", 185 | "stylers": [ 186 | { 187 | "color": "#3d3d3d" 188 | } 189 | ] 190 | } 191 | ] -------------------------------------------------------------------------------- /assets/json/mapstyle_light.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "featureType": "all", 4 | "elementType": "all", 5 | "stylers": [ 6 | { 7 | "visibility": "simplified" 8 | }, 9 | { 10 | "saturation": "0" 11 | } 12 | ] 13 | }, 14 | { 15 | "featureType": "administrative", 16 | "elementType": "all", 17 | "stylers": [ 18 | { 19 | "visibility": "on" 20 | } 21 | ] 22 | }, 23 | { 24 | "featureType": "administrative.country", 25 | "elementType": "all", 26 | "stylers": [ 27 | { 28 | "visibility": "on" 29 | } 30 | ] 31 | }, 32 | { 33 | "featureType": "administrative.province", 34 | "elementType": "all", 35 | "stylers": [ 36 | { 37 | "visibility": "on" 38 | } 39 | ] 40 | }, 41 | { 42 | "featureType": "administrative.locality", 43 | "elementType": "all", 44 | "stylers": [ 45 | { 46 | "visibility": "on" 47 | } 48 | ] 49 | }, 50 | { 51 | "featureType": "administrative.neighborhood", 52 | "elementType": "all", 53 | "stylers": [ 54 | { 55 | "visibility": "on" 56 | } 57 | ] 58 | }, 59 | { 60 | "featureType": "administrative.land_parcel", 61 | "elementType": "geometry", 62 | "stylers": [ 63 | { 64 | "visibility": "on" 65 | } 66 | ] 67 | }, 68 | { 69 | "featureType": "landscape", 70 | "elementType": "all", 71 | "stylers": [ 72 | { 73 | "visibility": "on" 74 | }, 75 | { 76 | "color": "#F6F6F4" 77 | } 78 | ] 79 | }, 80 | { 81 | "featureType": "landscape.man_made", 82 | "elementType": "all", 83 | "stylers": [ 84 | { 85 | "visibility": "off" 86 | } 87 | ] 88 | }, 89 | { 90 | "featureType": "poi", 91 | "elementType": "all", 92 | "stylers": [ 93 | { 94 | "visibility": "off" 95 | } 96 | ] 97 | }, 98 | { 99 | "featureType": "poi", 100 | "elementType": "labels.text.stroke", 101 | "stylers": [ 102 | { 103 | "visibility": "off" 104 | } 105 | ] 106 | }, 107 | { 108 | "featureType": "poi.attraction", 109 | "elementType": "all", 110 | "stylers": [ 111 | { 112 | "visibility": "off" 113 | } 114 | ] 115 | }, 116 | { 117 | "featureType": "poi.business", 118 | "elementType": "all", 119 | "stylers": [ 120 | { 121 | "visibility": "off" 122 | } 123 | ] 124 | }, 125 | { 126 | "featureType": "road", 127 | "elementType": "all", 128 | "stylers": [ 129 | { 130 | "visibility": "on" 131 | }, 132 | { 133 | "saturation": "-100" 134 | } 135 | ] 136 | }, 137 | { 138 | "featureType": "road.highway", 139 | "elementType": "geometry", 140 | "stylers": [ 141 | { 142 | "color": "#ffffff" 143 | } 144 | ] 145 | }, 146 | { 147 | "featureType": "road.highway", 148 | "elementType": "geometry.stroke", 149 | "stylers": [ 150 | { 151 | "color": "#dfdfdf" 152 | } 153 | ] 154 | }, 155 | { 156 | "featureType": "water", 157 | "elementType": "all", 158 | "stylers": [ 159 | { 160 | "color": "#afdef9" 161 | } 162 | ] 163 | }, 164 | { 165 | "featureType": "water", 166 | "elementType": "labels", 167 | "stylers": [ 168 | { 169 | "visibility": "simplified" 170 | }, 171 | { 172 | "color": "#ffffff" 173 | } 174 | ] 175 | } 176 | ] -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | **/dgph 2 | *.mode1v3 3 | *.mode2v3 4 | *.moved-aside 5 | *.pbxuser 6 | *.perspectivev3 7 | **/*sync/ 8 | .sconsign.dblite 9 | .tags* 10 | **/.vagrant/ 11 | **/DerivedData/ 12 | Icon? 13 | **/Pods/ 14 | **/.symlinks/ 15 | profile 16 | xcuserdata 17 | **/.generated/ 18 | Flutter/App.framework 19 | Flutter/Flutter.framework 20 | Flutter/Flutter.podspec 21 | Flutter/Generated.xcconfig 22 | Flutter/ephemeral/ 23 | Flutter/app.flx 24 | Flutter/app.zip 25 | Flutter/flutter_assets/ 26 | Flutter/flutter_export_environment.sh 27 | ServiceDefinitions.json 28 | Runner/GeneratedPluginRegistrant.* 29 | 30 | # Exceptions to above rules. 31 | !default.mode1v3 32 | !default.mode2v3 33 | !default.pbxuser 34 | !default.perspectivev3 35 | -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 9.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 50; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 11 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 12 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 13 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 14 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 15 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 16 | /* End PBXBuildFile section */ 17 | 18 | /* Begin PBXCopyFilesBuildPhase section */ 19 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = { 20 | isa = PBXCopyFilesBuildPhase; 21 | buildActionMask = 2147483647; 22 | dstPath = ""; 23 | dstSubfolderSpec = 10; 24 | files = ( 25 | ); 26 | name = "Embed Frameworks"; 27 | runOnlyForDeploymentPostprocessing = 0; 28 | }; 29 | /* End PBXCopyFilesBuildPhase section */ 30 | 31 | /* Begin PBXFileReference section */ 32 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 33 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 34 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 35 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 36 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 37 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 38 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 39 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 40 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 41 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 42 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 43 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 44 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 45 | /* End PBXFileReference section */ 46 | 47 | /* Begin PBXFrameworksBuildPhase section */ 48 | 97C146EB1CF9000F007C117D /* Frameworks */ = { 49 | isa = PBXFrameworksBuildPhase; 50 | buildActionMask = 2147483647; 51 | files = ( 52 | ); 53 | runOnlyForDeploymentPostprocessing = 0; 54 | }; 55 | /* End PBXFrameworksBuildPhase section */ 56 | 57 | /* Begin PBXGroup section */ 58 | 9740EEB11CF90186004384FC /* Flutter */ = { 59 | isa = PBXGroup; 60 | children = ( 61 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 62 | 9740EEB21CF90195004384FC /* Debug.xcconfig */, 63 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 64 | 9740EEB31CF90195004384FC /* Generated.xcconfig */, 65 | ); 66 | name = Flutter; 67 | sourceTree = ""; 68 | }; 69 | 97C146E51CF9000F007C117D = { 70 | isa = PBXGroup; 71 | children = ( 72 | 9740EEB11CF90186004384FC /* Flutter */, 73 | 97C146F01CF9000F007C117D /* Runner */, 74 | 97C146EF1CF9000F007C117D /* Products */, 75 | ); 76 | sourceTree = ""; 77 | }; 78 | 97C146EF1CF9000F007C117D /* Products */ = { 79 | isa = PBXGroup; 80 | children = ( 81 | 97C146EE1CF9000F007C117D /* Runner.app */, 82 | ); 83 | name = Products; 84 | sourceTree = ""; 85 | }; 86 | 97C146F01CF9000F007C117D /* Runner */ = { 87 | isa = PBXGroup; 88 | children = ( 89 | 97C146FA1CF9000F007C117D /* Main.storyboard */, 90 | 97C146FD1CF9000F007C117D /* Assets.xcassets */, 91 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 92 | 97C147021CF9000F007C117D /* Info.plist */, 93 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 94 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 95 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, 96 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, 97 | ); 98 | path = Runner; 99 | sourceTree = ""; 100 | }; 101 | /* End PBXGroup section */ 102 | 103 | /* Begin PBXNativeTarget section */ 104 | 97C146ED1CF9000F007C117D /* Runner */ = { 105 | isa = PBXNativeTarget; 106 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; 107 | buildPhases = ( 108 | 9740EEB61CF901F6004384FC /* Run Script */, 109 | 97C146EA1CF9000F007C117D /* Sources */, 110 | 97C146EB1CF9000F007C117D /* Frameworks */, 111 | 97C146EC1CF9000F007C117D /* Resources */, 112 | 9705A1C41CF9048500538489 /* Embed Frameworks */, 113 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 114 | ); 115 | buildRules = ( 116 | ); 117 | dependencies = ( 118 | ); 119 | name = Runner; 120 | productName = Runner; 121 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */; 122 | productType = "com.apple.product-type.application"; 123 | }; 124 | /* End PBXNativeTarget section */ 125 | 126 | /* Begin PBXProject section */ 127 | 97C146E61CF9000F007C117D /* Project object */ = { 128 | isa = PBXProject; 129 | attributes = { 130 | LastUpgradeCheck = 1300; 131 | ORGANIZATIONNAME = ""; 132 | TargetAttributes = { 133 | 97C146ED1CF9000F007C117D = { 134 | CreatedOnToolsVersion = 7.3.1; 135 | LastSwiftMigration = 1100; 136 | }; 137 | }; 138 | }; 139 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; 140 | compatibilityVersion = "Xcode 9.3"; 141 | developmentRegion = en; 142 | hasScannedForEncodings = 0; 143 | knownRegions = ( 144 | en, 145 | Base, 146 | ); 147 | mainGroup = 97C146E51CF9000F007C117D; 148 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */; 149 | projectDirPath = ""; 150 | projectRoot = ""; 151 | targets = ( 152 | 97C146ED1CF9000F007C117D /* Runner */, 153 | ); 154 | }; 155 | /* End PBXProject section */ 156 | 157 | /* Begin PBXResourcesBuildPhase section */ 158 | 97C146EC1CF9000F007C117D /* Resources */ = { 159 | isa = PBXResourcesBuildPhase; 160 | buildActionMask = 2147483647; 161 | files = ( 162 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 163 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 164 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 165 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, 166 | ); 167 | runOnlyForDeploymentPostprocessing = 0; 168 | }; 169 | /* End PBXResourcesBuildPhase section */ 170 | 171 | /* Begin PBXShellScriptBuildPhase section */ 172 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 173 | isa = PBXShellScriptBuildPhase; 174 | buildActionMask = 2147483647; 175 | files = ( 176 | ); 177 | inputPaths = ( 178 | ); 179 | name = "Thin Binary"; 180 | outputPaths = ( 181 | ); 182 | runOnlyForDeploymentPostprocessing = 0; 183 | shellPath = /bin/sh; 184 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; 185 | }; 186 | 9740EEB61CF901F6004384FC /* Run Script */ = { 187 | isa = PBXShellScriptBuildPhase; 188 | buildActionMask = 2147483647; 189 | files = ( 190 | ); 191 | inputPaths = ( 192 | ); 193 | name = "Run Script"; 194 | outputPaths = ( 195 | ); 196 | runOnlyForDeploymentPostprocessing = 0; 197 | shellPath = /bin/sh; 198 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; 199 | }; 200 | /* End PBXShellScriptBuildPhase section */ 201 | 202 | /* Begin PBXSourcesBuildPhase section */ 203 | 97C146EA1CF9000F007C117D /* Sources */ = { 204 | isa = PBXSourcesBuildPhase; 205 | buildActionMask = 2147483647; 206 | files = ( 207 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, 208 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, 209 | ); 210 | runOnlyForDeploymentPostprocessing = 0; 211 | }; 212 | /* End PBXSourcesBuildPhase section */ 213 | 214 | /* Begin PBXVariantGroup section */ 215 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = { 216 | isa = PBXVariantGroup; 217 | children = ( 218 | 97C146FB1CF9000F007C117D /* Base */, 219 | ); 220 | name = Main.storyboard; 221 | sourceTree = ""; 222 | }; 223 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { 224 | isa = PBXVariantGroup; 225 | children = ( 226 | 97C147001CF9000F007C117D /* Base */, 227 | ); 228 | name = LaunchScreen.storyboard; 229 | sourceTree = ""; 230 | }; 231 | /* End PBXVariantGroup section */ 232 | 233 | /* Begin XCBuildConfiguration section */ 234 | 249021D3217E4FDB00AE95B9 /* Profile */ = { 235 | isa = XCBuildConfiguration; 236 | buildSettings = { 237 | ALWAYS_SEARCH_USER_PATHS = NO; 238 | CLANG_ANALYZER_NONNULL = YES; 239 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 240 | CLANG_CXX_LIBRARY = "libc++"; 241 | CLANG_ENABLE_MODULES = YES; 242 | CLANG_ENABLE_OBJC_ARC = YES; 243 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 244 | CLANG_WARN_BOOL_CONVERSION = YES; 245 | CLANG_WARN_COMMA = YES; 246 | CLANG_WARN_CONSTANT_CONVERSION = YES; 247 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 248 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 249 | CLANG_WARN_EMPTY_BODY = YES; 250 | CLANG_WARN_ENUM_CONVERSION = YES; 251 | CLANG_WARN_INFINITE_RECURSION = YES; 252 | CLANG_WARN_INT_CONVERSION = YES; 253 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 254 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 255 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 256 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 257 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 258 | CLANG_WARN_STRICT_PROTOTYPES = YES; 259 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 260 | CLANG_WARN_UNREACHABLE_CODE = YES; 261 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 262 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 263 | COPY_PHASE_STRIP = NO; 264 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 265 | ENABLE_NS_ASSERTIONS = NO; 266 | ENABLE_STRICT_OBJC_MSGSEND = YES; 267 | GCC_C_LANGUAGE_STANDARD = gnu99; 268 | GCC_NO_COMMON_BLOCKS = YES; 269 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 270 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 271 | GCC_WARN_UNDECLARED_SELECTOR = YES; 272 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 273 | GCC_WARN_UNUSED_FUNCTION = YES; 274 | GCC_WARN_UNUSED_VARIABLE = YES; 275 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 276 | MTL_ENABLE_DEBUG_INFO = NO; 277 | SDKROOT = iphoneos; 278 | SUPPORTED_PLATFORMS = iphoneos; 279 | TARGETED_DEVICE_FAMILY = "1,2"; 280 | VALIDATE_PRODUCT = YES; 281 | }; 282 | name = Profile; 283 | }; 284 | 249021D4217E4FDB00AE95B9 /* Profile */ = { 285 | isa = XCBuildConfiguration; 286 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 287 | buildSettings = { 288 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 289 | CLANG_ENABLE_MODULES = YES; 290 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 291 | ENABLE_BITCODE = NO; 292 | INFOPLIST_FILE = Runner/Info.plist; 293 | LD_RUNPATH_SEARCH_PATHS = ( 294 | "$(inherited)", 295 | "@executable_path/Frameworks", 296 | ); 297 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterHotelBookingUi; 298 | PRODUCT_NAME = "$(TARGET_NAME)"; 299 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 300 | SWIFT_VERSION = 5.0; 301 | VERSIONING_SYSTEM = "apple-generic"; 302 | }; 303 | name = Profile; 304 | }; 305 | 97C147031CF9000F007C117D /* Debug */ = { 306 | isa = XCBuildConfiguration; 307 | buildSettings = { 308 | ALWAYS_SEARCH_USER_PATHS = NO; 309 | CLANG_ANALYZER_NONNULL = YES; 310 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 311 | CLANG_CXX_LIBRARY = "libc++"; 312 | CLANG_ENABLE_MODULES = YES; 313 | CLANG_ENABLE_OBJC_ARC = YES; 314 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 315 | CLANG_WARN_BOOL_CONVERSION = YES; 316 | CLANG_WARN_COMMA = YES; 317 | CLANG_WARN_CONSTANT_CONVERSION = YES; 318 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 319 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 320 | CLANG_WARN_EMPTY_BODY = YES; 321 | CLANG_WARN_ENUM_CONVERSION = YES; 322 | CLANG_WARN_INFINITE_RECURSION = YES; 323 | CLANG_WARN_INT_CONVERSION = YES; 324 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 325 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 326 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 327 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 328 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 329 | CLANG_WARN_STRICT_PROTOTYPES = YES; 330 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 331 | CLANG_WARN_UNREACHABLE_CODE = YES; 332 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 333 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 334 | COPY_PHASE_STRIP = NO; 335 | DEBUG_INFORMATION_FORMAT = dwarf; 336 | ENABLE_STRICT_OBJC_MSGSEND = YES; 337 | ENABLE_TESTABILITY = YES; 338 | GCC_C_LANGUAGE_STANDARD = gnu99; 339 | GCC_DYNAMIC_NO_PIC = NO; 340 | GCC_NO_COMMON_BLOCKS = YES; 341 | GCC_OPTIMIZATION_LEVEL = 0; 342 | GCC_PREPROCESSOR_DEFINITIONS = ( 343 | "DEBUG=1", 344 | "$(inherited)", 345 | ); 346 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 347 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 348 | GCC_WARN_UNDECLARED_SELECTOR = YES; 349 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 350 | GCC_WARN_UNUSED_FUNCTION = YES; 351 | GCC_WARN_UNUSED_VARIABLE = YES; 352 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 353 | MTL_ENABLE_DEBUG_INFO = YES; 354 | ONLY_ACTIVE_ARCH = YES; 355 | SDKROOT = iphoneos; 356 | TARGETED_DEVICE_FAMILY = "1,2"; 357 | }; 358 | name = Debug; 359 | }; 360 | 97C147041CF9000F007C117D /* Release */ = { 361 | isa = XCBuildConfiguration; 362 | buildSettings = { 363 | ALWAYS_SEARCH_USER_PATHS = NO; 364 | CLANG_ANALYZER_NONNULL = YES; 365 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 366 | CLANG_CXX_LIBRARY = "libc++"; 367 | CLANG_ENABLE_MODULES = YES; 368 | CLANG_ENABLE_OBJC_ARC = YES; 369 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 370 | CLANG_WARN_BOOL_CONVERSION = YES; 371 | CLANG_WARN_COMMA = YES; 372 | CLANG_WARN_CONSTANT_CONVERSION = YES; 373 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 374 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 375 | CLANG_WARN_EMPTY_BODY = YES; 376 | CLANG_WARN_ENUM_CONVERSION = YES; 377 | CLANG_WARN_INFINITE_RECURSION = YES; 378 | CLANG_WARN_INT_CONVERSION = YES; 379 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 380 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 381 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 382 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 383 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 384 | CLANG_WARN_STRICT_PROTOTYPES = YES; 385 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 386 | CLANG_WARN_UNREACHABLE_CODE = YES; 387 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 388 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 389 | COPY_PHASE_STRIP = NO; 390 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 391 | ENABLE_NS_ASSERTIONS = NO; 392 | ENABLE_STRICT_OBJC_MSGSEND = YES; 393 | GCC_C_LANGUAGE_STANDARD = gnu99; 394 | GCC_NO_COMMON_BLOCKS = YES; 395 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 396 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 397 | GCC_WARN_UNDECLARED_SELECTOR = YES; 398 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 399 | GCC_WARN_UNUSED_FUNCTION = YES; 400 | GCC_WARN_UNUSED_VARIABLE = YES; 401 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 402 | MTL_ENABLE_DEBUG_INFO = NO; 403 | SDKROOT = iphoneos; 404 | SUPPORTED_PLATFORMS = iphoneos; 405 | SWIFT_COMPILATION_MODE = wholemodule; 406 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 407 | TARGETED_DEVICE_FAMILY = "1,2"; 408 | VALIDATE_PRODUCT = YES; 409 | }; 410 | name = Release; 411 | }; 412 | 97C147061CF9000F007C117D /* Debug */ = { 413 | isa = XCBuildConfiguration; 414 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 415 | buildSettings = { 416 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 417 | CLANG_ENABLE_MODULES = YES; 418 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 419 | ENABLE_BITCODE = NO; 420 | INFOPLIST_FILE = Runner/Info.plist; 421 | LD_RUNPATH_SEARCH_PATHS = ( 422 | "$(inherited)", 423 | "@executable_path/Frameworks", 424 | ); 425 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterHotelBookingUi; 426 | PRODUCT_NAME = "$(TARGET_NAME)"; 427 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 428 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 429 | SWIFT_VERSION = 5.0; 430 | VERSIONING_SYSTEM = "apple-generic"; 431 | }; 432 | name = Debug; 433 | }; 434 | 97C147071CF9000F007C117D /* Release */ = { 435 | isa = XCBuildConfiguration; 436 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 437 | buildSettings = { 438 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 439 | CLANG_ENABLE_MODULES = YES; 440 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 441 | ENABLE_BITCODE = NO; 442 | INFOPLIST_FILE = Runner/Info.plist; 443 | LD_RUNPATH_SEARCH_PATHS = ( 444 | "$(inherited)", 445 | "@executable_path/Frameworks", 446 | ); 447 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterHotelBookingUi; 448 | PRODUCT_NAME = "$(TARGET_NAME)"; 449 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 450 | SWIFT_VERSION = 5.0; 451 | VERSIONING_SYSTEM = "apple-generic"; 452 | }; 453 | name = Release; 454 | }; 455 | /* End XCBuildConfiguration section */ 456 | 457 | /* Begin XCConfigurationList section */ 458 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { 459 | isa = XCConfigurationList; 460 | buildConfigurations = ( 461 | 97C147031CF9000F007C117D /* Debug */, 462 | 97C147041CF9000F007C117D /* Release */, 463 | 249021D3217E4FDB00AE95B9 /* Profile */, 464 | ); 465 | defaultConfigurationIsVisible = 0; 466 | defaultConfigurationName = Release; 467 | }; 468 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { 469 | isa = XCConfigurationList; 470 | buildConfigurations = ( 471 | 97C147061CF9000F007C117D /* Debug */, 472 | 97C147071CF9000F007C117D /* Release */, 473 | 249021D4217E4FDB00AE95B9 /* Profile */, 474 | ); 475 | defaultConfigurationIsVisible = 0; 476 | defaultConfigurationName = Release; 477 | }; 478 | /* End XCConfigurationList section */ 479 | }; 480 | rootObject = 97C146E61CF9000F007C117D /* Project object */; 481 | } 482 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 37 | 38 | 39 | 40 | 41 | 42 | 52 | 54 | 60 | 61 | 62 | 63 | 69 | 71 | 77 | 78 | 79 | 80 | 82 | 83 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/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/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/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/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/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/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/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/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/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/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/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/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/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/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/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/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/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/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/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/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/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/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/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/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/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/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/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/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/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/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/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 | CFBundleDisplayName 8 | Flutter Hotel Booking Ui 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | flutter_hotel_booking_ui 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | $(FLUTTER_BUILD_NAME) 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | $(FLUTTER_BUILD_NUMBER) 25 | LSRequiresIPhoneOS 26 | 27 | UILaunchStoryboardName 28 | LaunchScreen 29 | UIMainStoryboardFile 30 | Main 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | UIViewControllerBasedStatusBarAppearance 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /lib/common/common.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | GlobalKey navigatorKey = GlobalKey(); 4 | 5 | List>? allTexts; // we store all text in this variable 6 | -------------------------------------------------------------------------------- /lib/language/appLocalizations.dart: -------------------------------------------------------------------------------- 1 | import 'dart:convert'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:flutter_hotel_booking_ui/common/common.dart' as common; 4 | import 'package:flutter_hotel_booking_ui/providers/theme_provider.dart'; 5 | import 'package:flutter_hotel_booking_ui/utils/enum.dart'; 6 | import 'package:flutter_hotel_booking_ui/motel_app.dart'; 7 | import 'package:provider/provider.dart'; 8 | 9 | class AppLocalizations { 10 | final BuildContext context; 11 | 12 | AppLocalizations(this.context); 13 | 14 | // call this method only firstTime when open app You can see splash_screen.dart 15 | Future load() async { 16 | final List> allTexts = []; 17 | 18 | List jsonData = json.decode( 19 | await DefaultAssetBundle.of(context).loadString( 20 | 'packages/flutter_hotel_booking_ui/language/lang/language_text.json'), 21 | ); 22 | 23 | jsonData.forEach((value) { 24 | if (value is Map && value['text_id'] != null) { 25 | Map texts = {}; 26 | texts['text_id'] = value['text_id'] ?? ''; 27 | texts['en'] = value['en'] ?? ''; 28 | texts['fr'] = value['fr'] ?? ''; 29 | texts['ar'] = value['ar'] ?? ''; 30 | texts['ja'] = value['ja'] ?? ''; 31 | allTexts.add(texts); 32 | } 33 | }); 34 | common.allTexts = allTexts; 35 | } 36 | 37 | String of(String textId) { 38 | LanguageType _languageType = applicationcontext == null 39 | ? LanguageType.en 40 | : applicationcontext!.read().languageType; 41 | final Locale myLocale = Localizations.localeOf(context); 42 | if (myLocale.languageCode != '' && myLocale.languageCode.length == 2) { 43 | if (common.allTexts != null && common.allTexts!.isNotEmpty) { 44 | String newtext = ''; 45 | final index = common.allTexts! 46 | .indexWhere((element) => element['text_id'] == textId); 47 | if (index != -1) { 48 | newtext = common.allTexts![index] 49 | [_languageType.toString().split(".")[1]] ?? 50 | ''; 51 | if (newtext != '') return newtext; 52 | } 53 | return '#Text is Empty#'; 54 | } else { 55 | return '#Language is Empty#'; 56 | } 57 | } else { 58 | return '#LanguageCode Not Match#'; 59 | } 60 | } 61 | 62 | static const LocalizationsDelegate delegate = 63 | _AppLocalizationsDelegate(); 64 | } 65 | 66 | class _AppLocalizationsDelegate 67 | extends LocalizationsDelegate { 68 | const _AppLocalizationsDelegate(); 69 | 70 | @override 71 | bool isSupported(Locale locale) { 72 | return ['en', 'fr', 'ar'].contains(locale.languageCode); 73 | } 74 | 75 | @override 76 | Future load(Locale locale) async { 77 | AppLocalizations localization = AppLocalizations(applicationcontext!); 78 | await localization.load(); 79 | return localization; 80 | } 81 | 82 | @override 83 | bool shouldReload(LocalizationsDelegate old) => false; 84 | } 85 | -------------------------------------------------------------------------------- /lib/language/lang/language_text.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text_id": "best_hotel_deals", 4 | "en": "Best hotel deals for your holiday", 5 | "fr": "Meilleures offres d'hôtels pour vos vacances", 6 | "ar": "أفضل عروض الفنادق لقضاء عطلتك", 7 | "ja": "あなたの休日のための最高のホテルのお得な情報" 8 | }, 9 | { 10 | "text_id": "already_have_account", 11 | "en": "Already have account? Log in", 12 | "fr": "Vous avez déjà un compte? Connexion", 13 | "ar": "لديك حساب بالفعل؟ تسجيل الدخول", 14 | "ja": "すでにアカウントをお持ちですか?サインイン" 15 | }, 16 | { 17 | "text_id": "get_started", 18 | "en": "Get started", 19 | "fr": "Commencer", 20 | "ar": "البدء", 21 | "ja": "始めましょう" 22 | }, 23 | { 24 | "text_id": "plan_your_trips", 25 | "en": "Plan your trips", 26 | "fr": "Planifiez vos voyages", 27 | "ar": "خطط لرحلاتك", 28 | "ja": "あなたの旅行を計画する" 29 | }, 30 | { 31 | "text_id": "book_one_of_your", 32 | "en": "book one of your unique hotel to\nescape the ordinary", 33 | "fr": "réservez l'un de vos hôtels uniques pour\n néchapper à l'ordinaire", 34 | "ar": "احجز أحد فنادقك الفريدة \n لتتخطى المألوف", 35 | "ja": "普通のホテルを\nするためにあなたのユニークなホテルの1つを予約する" 36 | }, 37 | { 38 | "text_id": "find_best_deals", 39 | "en": "Find best deals", 40 | "fr": "Trouvez les meilleures offres", 41 | "ar": "البحث عن أفضل الصفقات", 42 | "ja": "最高のお得な情報を見つける" 43 | }, 44 | { 45 | "text_id": "find_deals_for_any", 46 | "en": "Find deals for any season from cosy\ncountry homes to city flats", 47 | "fr": "Trouvez des offres pour toutes les saisons, des maisons de campagne \n confortables aux appartements en ville", 48 | "ar": "اعثر على صفقات لأي موسم من المنازل الريفية المريحة \n إلى شقق المدينة", 49 | "ja": "居心地の良いカントリーハウスからシティ\nフラットまで、あらゆる季節のお得な情報を探す" 50 | }, 51 | { 52 | "text_id": "best_travelling_all_time", 53 | "en": "Best travelling all time", 54 | "fr": "Meilleur voyage de tous les temps", 55 | "ar": "أفضل السفر طوال الوقت", 56 | "ja": "常に最高の旅行" 57 | }, 58 | { 59 | "text_id": "login", 60 | "en": "Login", 61 | "fr": "Connexion", 62 | "ar": "تسجيل الدخول", 63 | "ja": "ログイン" 64 | }, 65 | { 66 | "text_id": "create_account", 67 | "en": "Create account", 68 | "fr": "Créer un compte", 69 | "ar": "إنشاء حساب", 70 | "ja": "アカウントを作成する" 71 | }, 72 | { 73 | "text_id": "log_with mail", 74 | "en": "or log in with email", 75 | "fr": "ou connectez-vous avec e-mail", 76 | "ar": "أو تسجيل الدخول بالبريد الإلكتروني", 77 | "ja": "またはメールでログイン" 78 | }, 79 | { 80 | "text_id": "your_mail", 81 | "en": "Your email", 82 | "fr": "Votre email", 83 | "ar": "بريدك الالكتروني", 84 | "ja": "あなたのメール" 85 | }, 86 | { 87 | "text_id": "password", 88 | "en": "Password", 89 | "fr": "Mot de passe", 90 | "ar": "كلمه السر", 91 | "ja": "パスワード" 92 | }, 93 | { 94 | "text_id": "forgot_your_Password", 95 | "en": "Forgot your Password?", 96 | "fr": "Mot de passe oublié?", 97 | "ar": "نسيت رقمك السري؟", 98 | "ja": "パスワードをお忘れですか?" 99 | }, 100 | { 101 | "text_id": "resend_email_link", 102 | "en": "Enter your email to receive an email to reset your password", 103 | "fr": "Entrez votre email pour recevoir un email pour réinitialiser votre mot de passe", 104 | "ar": "أدخل بريدك الإلكتروني لتلقي بريد إلكتروني لإعادة تعيين كلمة المرور الخاصة بك", 105 | "ja": "パスワードをリセットするためのメールを受信するには、メールアドレスを入力してください" 106 | }, 107 | { 108 | "text_id": "send", 109 | "en": "Send", 110 | "fr": "Envoyer", 111 | "ar": "إرسال", 112 | "ja": "送信" 113 | }, 114 | { 115 | "text_id": "sign_up", 116 | "en": "Sign up", 117 | "fr": "S'inscrire", 118 | "ar": "اشتراك", 119 | "ja": "サインアップ" 120 | }, 121 | { 122 | "text_id": "first_name", 123 | "en": "First name", 124 | "fr": "Prénom", 125 | "ar": "الاسم الأول", 126 | "ja": "ファーストネーム" 127 | }, 128 | { 129 | "text_id": "last_name", 130 | "en": "Last name", 131 | "fr": "Nom de famille", 132 | "ar": "الكنية", 133 | "ja": "苗字" 134 | }, 135 | { 136 | "text_id": "terms_agreed", 137 | "en": "By Signing up,you agreed with our terms of\n Services and privacy policy", 138 | "fr": "En vous inscrivant, vous acceptez nos conditions de", 139 | "ar": "بالتسجيل ، فإنك توافق على شروطنا الخاصة بـ", 140 | "ja": "サインアップすることにより、あなたは私たちの条件に同意した" 141 | }, 142 | { 143 | "text_id": "explore", 144 | "en": "Explore", 145 | "fr": "explorer", 146 | "ar": "يكتشف", 147 | "ja": "見る" 148 | }, 149 | { 150 | "text_id": "trips", 151 | "en": "Trips", 152 | "fr": "voyages", 153 | "ar": "رحلات", 154 | "ja": "旅行" 155 | }, 156 | { 157 | "text_id": "profile", 158 | "en": "Profile", 159 | "fr": "profil", 160 | "ar": "الملف الشخصي", 161 | "ja": "プロフィール" 162 | }, 163 | { 164 | "text_id": "where_are_you_going", 165 | "en": "Where are you going?", 166 | "fr": "Où vas-tu?", 167 | "ar": "إلى أين تذهب؟", 168 | "ja": "どこに行くの?" 169 | }, 170 | { 171 | "text_id": "search_hotel", 172 | "en": "Search", 173 | "fr": "Rechercher", 174 | "ar": "يبحث", 175 | "ja": "探す" 176 | }, 177 | { 178 | "text_id": "hotel_data", 179 | "en": "Hotel", 180 | "fr": "Hôtel", 181 | "ar": "الفندق", 182 | "ja": "ホテル" 183 | }, 184 | { 185 | "text_id": "Backpacker_data", 186 | "en": "Backpacker", 187 | "fr": "Randonneuse", 188 | "ar": "الرحال", 189 | "ja": "バックパッカー" 190 | }, 191 | { 192 | "text_id": "Resort_data", 193 | "en": "Resort", 194 | "fr": "Recours", 195 | "ar": "ملجأ", 196 | "ja": "リゾート" 197 | }, 198 | { 199 | "text_id": "villa_data", 200 | "en": "Villa", 201 | "fr": "Villa", 202 | "ar": "فيلا", 203 | "ja": "ヴィラ" 204 | }, 205 | { 206 | "text_id": "apartment", 207 | "en": "Apartment", 208 | "fr": "Appartement", 209 | "ar": "شقة", 210 | "ja": "アパート" 211 | }, 212 | { 213 | "text_id": "guest_house", 214 | "en": "Guest house", 215 | "fr": "Maison d'hôtes", 216 | "ar": "منزل الضيف", 217 | "ja": "ゲストハウス" 218 | }, 219 | { 220 | "text_id": "motel", 221 | "en": "Motel", 222 | "fr": "Motel", 223 | "ar": "فندق صغير", 224 | "ja": "モーテル" 225 | }, 226 | { 227 | "text_id": "accommodation", 228 | "en": "Accommodation", 229 | "fr": "Hébergement", 230 | "ar": "إقامة", 231 | "ja": "宿泊施設" 232 | }, 233 | { 234 | "text_id": "Bed_breakfast", 235 | "en": "Bed & Breakfast", 236 | "fr": "lit et petit-déjeuner", 237 | "ar": "سرير و فطور", 238 | "ja": "ベッド&ブレックファスト" 239 | }, 240 | { 241 | "text_id": "Last_search", 242 | "en": "Last searches", 243 | "fr": "Dernières recherches", 244 | "ar": "عمليات البحث الأخيرة", 245 | "ja": "最後の検索" 246 | }, 247 | { 248 | "text_id": "clear_all", 249 | "en": "Clear all", 250 | "fr": "Tout effacer", 251 | "ar": "امسح الكل", 252 | "ja": "すべてクリア" 253 | }, 254 | { 255 | "text_id": "cape Town", 256 | "en": "Cape Town", 257 | "fr": "Le Cap", 258 | "ar": "كيب تاون", 259 | "ja": "ケープタウン" 260 | }, 261 | { 262 | "text_id": "five_star", 263 | "en": "Extraordinary five-star\noutdoor activites", 264 | "fr": "Activités d'extérieur \nextraordinaires", 265 | "ar": "أنشطة غير عادية من فئة الخمس نجوم \nفي الهواء الطلق", 266 | "ja": "並外れた5つ星の\n屋外アクティビティ" 267 | }, 268 | { 269 | "text_id": "view_hotel", 270 | "en": "View Hotel", 271 | "fr": "Voir l'hôtel", 272 | "ar": "عرض الفندق", 273 | "ja": "ホテルを見る" 274 | }, 275 | { 276 | "text_id": "hotel found", 277 | "en": "Hotel found", 278 | "fr": "Hôtel trouvé", 279 | "ar": "وجدت الفندق", 280 | "ja": "ホテルが見つかりました" 281 | }, 282 | { 283 | "text_id": "filtter", 284 | "en": "Filtter", 285 | "fr": "Filtre", 286 | "ar": "منقي", 287 | "ja": "フィルタ" 288 | }, 289 | { 290 | "text_id": "popular_destination", 291 | "en": "Popular Destination", 292 | "fr": "Destination populaire", 293 | "ar": "الوجهات المشهورة", 294 | "ja": "人気の目的地" 295 | }, 296 | { 297 | "text_id": "best_deal", 298 | "en": "Best Deals", 299 | "fr": "Meilleures affaires", 300 | "ar": "افضل العروض", 301 | "ja": "お得な情報" 302 | }, 303 | { 304 | "text_id": "view_all", 305 | "en": "View all", 306 | "fr": "Voir tout", 307 | "ar": "مشاهدة الكل", 308 | "ja": "すべて表示" 309 | }, 310 | { 311 | "text_id": "km_to_city", 312 | "en": "km to city", 313 | "fr": "km de la ville", 314 | "ar": "كم للمدينة", 315 | "ja": "街までキロ" 316 | }, 317 | { 318 | "text_id": "per_night", 319 | "en": "/per night", 320 | "fr": "/par nuit", 321 | "ar": "/لليلة الواحدة", 322 | "ja": "/一泊" 323 | }, 324 | { 325 | "text_id": "reviews", 326 | "en": "Reviews", 327 | "fr": "Commentaires", 328 | "ar": "المراجعات", 329 | "ja": "レビュー" 330 | }, 331 | { 332 | "text_id": "book_now", 333 | "en": "Book now", 334 | "fr": "Destination\npopulaire", 335 | "ar": " احجز الآن", 336 | "ja": "今予約する" 337 | }, 338 | { 339 | "text_id": "more_details", 340 | "en": "More Details", 341 | "fr": "Plus de détails", 342 | "ar": "المزيد من التفاصيل", 343 | "ja": "詳細" 344 | }, 345 | { 346 | "text_id": "summary", 347 | "en": "Summary", 348 | "fr": "résumé", 349 | "ar": "ملخص", 350 | "ja": "概要" 351 | }, 352 | { 353 | "text_id": "read_more", 354 | "en": "read more", 355 | "fr": "Lire la suite", 356 | "ar": "اقرأ أكثر", 357 | "ja": "続きを読む" 358 | }, 359 | { 360 | "text_id": "less", 361 | "en": "less", 362 | "fr": "moins", 363 | "ar": "أقل", 364 | "ja": "もっと少なく" 365 | }, 366 | { 367 | "text_id": "Overall_rating", 368 | "en": "Overall rating", 369 | "fr": "Note globale", 370 | "ar": "تقييم عام", 371 | "ja": "総合評価" 372 | }, 373 | { 374 | "text_id": "room", 375 | "en": "Room", 376 | "fr": "Chambre", 377 | "ar": "غرفة", 378 | "ja": "ルーム" 379 | }, 380 | { 381 | "text_id": "service", 382 | "en": "Services", 383 | "fr": "Prestations de service", 384 | "ar": "خدمات", 385 | "ja": "サービス" 386 | }, 387 | { 388 | "text_id": "location", 389 | "en": "Location", 390 | "fr": "Emplacement", 391 | "ar": "موقع", 392 | "ja": "ロケーション" 393 | }, 394 | { 395 | "text_id": "price", 396 | "en": "Prcie", 397 | "fr": "Prix", 398 | "ar": "سعر", 399 | "ja": "価格" 400 | }, 401 | { 402 | "text_id": "room_photo", 403 | "en": "Photo", 404 | "fr": "photo", 405 | "ar": "صورة", 406 | "ja": "写真" 407 | }, 408 | { 409 | "text_id": "last_update", 410 | "en": "Last Update", 411 | "fr": "Dernière mise à jour", 412 | "ar": "اخر تحديث", 413 | "ja": "最後の更新" 414 | }, 415 | { 416 | "text_id": "reply", 417 | "en": "Reply", 418 | "fr": "Réponse", 419 | "ar": "رد", 420 | "ja": "応答" 421 | }, 422 | { 423 | "text_id": "My_Trips", 424 | "en": "My Trip", 425 | "fr": "Mon voyage", 426 | "ar": "رحلتي", 427 | "ja": "私の旅行" 428 | }, 429 | { 430 | "text_id": "upcoming", 431 | "en": "Upcoming", 432 | "fr": "A venir", 433 | "ar": "القادمة", 434 | "ja": "今後の" 435 | }, 436 | { 437 | "text_id": "finished", 438 | "en": "Finished", 439 | "fr": "finie", 440 | "ar": "تم الانتهاء من", 441 | "ja": "終了しました" 442 | }, 443 | { 444 | "text_id": "favorites", 445 | "en": "Favorites", 446 | "fr": "Favoris", 447 | "ar": "المفضلة", 448 | "ja": "お気に入り" 449 | }, 450 | { 451 | "text_id": "hotel_found", 452 | "en": "Hotel Found", 453 | "fr": "Hôtel trouvé", 454 | "ar": "العثور على فندق", 455 | "ja": "ホテルが見つかりました" 456 | }, 457 | { 458 | "text_id": "filtter", 459 | "en": "filtter", 460 | "fr": "filtre", 461 | "ar": "منقي", 462 | "ja": "フィルタ" 463 | }, 464 | { 465 | "text_id": "price_text", 466 | "en": "price (for 1 night)", 467 | "fr": "prix (pour 1 nuit)", 468 | "ar": "السعر (لليلة واحدة)", 469 | "ja": "料金(1泊分)" 470 | }, 471 | { 472 | "text_id": "popular filter", 473 | "en": "Popular filter", 474 | "fr": "Filtre populaire", 475 | "ar": "مرشح شعبي", 476 | "ja": "人気のフィルター" 477 | }, 478 | { 479 | "text_id": "distance from city", 480 | "en": "Distance from city center", 481 | "fr": "Distance du centre-ville", 482 | "ar": "المسافة من وسط المدينة", 483 | "ja": "市内中心部からの距離" 484 | }, 485 | { 486 | "text_id": "type of accommodation", 487 | "en": "Type of Accommodation", 488 | "fr": "Type d'hébergement", 489 | "ar": "نوع الإقامة", 490 | "ja": "宿泊施設の種類" 491 | }, 492 | { 493 | "text_id": "Apply_text", 494 | "en": "Apply", 495 | "fr": "Appliquer", 496 | "ar": "تطبيق", 497 | "ja": "適用する" 498 | }, 499 | { 500 | "text_id": "all_text", 501 | "en": "All", 502 | "fr": "toute", 503 | "ar": "الجميع", 504 | "ja": "すべて" 505 | }, 506 | { 507 | "text_id": "Home_text", 508 | "en": "Home", 509 | "fr": "Domicile", 510 | "ar": "منزل، بيت", 511 | "ja": "ホームホーム" 512 | }, 513 | { 514 | "text_id": "free_breakfast", 515 | "en": "Free Breakfast", 516 | "fr": "Petit déjeuner gratuit", 517 | "ar": "إفطار مجاني", 518 | "ja": "無料の朝食" 519 | }, 520 | { 521 | "text_id": "free_Parking", 522 | "en": "Free Parking", 523 | "fr": "Parking gratuit", 524 | "ar": "موقف سيارات مجاني", 525 | "ja": "無料駐車場" 526 | }, 527 | { 528 | "text_id": "pool_text", 529 | "en": "Pool", 530 | "fr": "Piscine", 531 | "ar": "تجمع", 532 | "ja": "プール" 533 | }, 534 | { 535 | "text_id": "pet_friendlly", 536 | "en": "Pet Friendlly", 537 | "fr": "Animaux acceptés", 538 | "ar": "صديق للحيوانات الاليفة", 539 | "ja": "ペットに優しい" 540 | }, 541 | { 542 | "text_id": "Free_Wifi", 543 | "en": "Free Wifi", 544 | "fr": "Wifi gratuit", 545 | "ar": "واى فاى مجانى", 546 | "ja": "無料のWifi" 547 | }, 548 | { 549 | "text_id": "Less_than", 550 | "en": "Less than", 551 | "fr": "Moins que", 552 | "ar": "أقل من", 553 | "ja": "未満" 554 | }, 555 | { 556 | "text_id": "km_text", 557 | "en": "Km", 558 | "fr": "Km", 559 | "ar": "كم", 560 | "ja": "Km" 561 | }, 562 | { 563 | "text_id": "amanda_text", 564 | "en": "Amanda", 565 | "fr": "Amanda", 566 | "ar": "أماندا", 567 | "ja": "アマンダ" 568 | }, 569 | { 570 | "text_id": "view_edit", 571 | "en": "View and Edit profile", 572 | "fr": "Afficher et modifier le profil", 573 | "ar": "عرض وتحرير الملف الشخصي", 574 | "ja": "プロファイルの表示と編集" 575 | }, 576 | { 577 | "text_id": "edit_profile", 578 | "en": "Edit Profile", 579 | "fr": "Editer le profil", 580 | "ar": "تعديل الملف الشخصي", 581 | "ja": "プロファイル編集" 582 | }, 583 | { 584 | "text_id": "username_text", 585 | "en": "UserName", 586 | "fr": "Nom d'utilisateur", 587 | "ar": "اسم االمستخدم", 588 | "ja": "ユーザー名" 589 | }, 590 | { 591 | "text_id": "phone", 592 | "en": "Phone", 593 | "fr": "Téléphoner", 594 | "ar": "هاتف", 595 | "ja": "電話" 596 | }, 597 | { 598 | "text_id": "date_of_birth", 599 | "en": "Date of Birth", 600 | "fr": "Date de naissance", 601 | "ar": "تاريخ الولادة", 602 | "ja": "生年月日" 603 | }, 604 | { 605 | "text_id": "address_text", 606 | "en": "Address", 607 | "fr": "Adresse", 608 | "ar": "عنوان", 609 | "ja": "住所" 610 | }, 611 | { 612 | "text_id": "mail_text", 613 | "en": "Email", 614 | "fr": "E-mail", 615 | "ar": "بريد إلكتروني", 616 | "ja": "Eメール" 617 | }, 618 | { 619 | "text_id": "change_password", 620 | "en": "Change Password", 621 | "fr": "Changer le mot de passe", 622 | "ar": "تغيير كلمة المرور", 623 | "ja": "パスワードを変更する" 624 | }, 625 | { 626 | "text_id": "enter_your_new_password", 627 | "en": "Enter your new password and confirm your password", 628 | "fr": "Entrez votre nouveau mot de passe et confirmez votre mot de passe", 629 | "ar": "أدخل كلمة المرور الجديدة الخاصة بك وقم بتأكيد كلمة المرور الخاصة بك", 630 | "ja": "新しいパスワードを入力し、パスワードを確認します" 631 | }, 632 | { 633 | "text_id": "new_password", 634 | "en": "New Password", 635 | "fr": "nouveau mot de passe", 636 | "ar": "كلمة السر الجديدة", 637 | "ja": " 新しいパスワード" 638 | }, 639 | { 640 | "text_id": "confirm_password", 641 | "en": "Confirm Password", 642 | "fr": "Confirmez le mot de passe", 643 | "ar": "تأكيد كلمة المرور", 644 | "ja": "パスワードを認証する" 645 | }, 646 | { 647 | "text_id": "invite_friend", 648 | "en": "Invite Friend", 649 | "fr": "Inviter un ami", 650 | "ar": "قم بدعوة صديق", 651 | "ja": "友達を呼ぶ" 652 | }, 653 | { 654 | "text_id": "invite_your_friend", 655 | "en": "Invite your Friend", 656 | "fr": "Invitez votre ami", 657 | "ar": "ادعو صديقك", 658 | "ja": "友達を招待する" 659 | }, 660 | { 661 | "text_id": "invite_friend_desc", 662 | "en": "are you one of those who makes everything at the last moment", 663 | "fr": "es-tu de ceux qui font tout au dernier moment", 664 | "ar": "هل أنت ممن يصنعون كل شيء في آخر لحظة", 665 | "ja": "あなたは最後の瞬間にすべてを作る人の一人ですか" 666 | }, 667 | { 668 | "text_id": "share_text", 669 | "en": "Share", 670 | "fr": "Partager", 671 | "ar": "يشارك", 672 | "ja": "シェア" 673 | }, 674 | { 675 | "text_id": "credit_coupons", 676 | "en": "Crdit & Coupons", 677 | "fr": "Crédit et coupons", 678 | "ar": "الائتمان والقسائم", 679 | "ja": "クレジット&クーポン" 680 | }, 681 | { 682 | "text_id": "help_center", 683 | "en": "Help Center", 684 | "fr": "Centre d'aide", 685 | "ar": "مركز المساعدة", 686 | "ja": "ヘルプセンター" 687 | }, 688 | { 689 | "text_id": "how_can_help_you", 690 | "en": "How can we help", 691 | "fr": "Comment pouvons nous aider", 692 | "ar": "كيف يمكن أن نساعد", 693 | "ja": "どのように我々は助けることができます" 694 | }, 695 | { 696 | "text_id": "search_help_artical", 697 | "en": "Search help articales", 698 | "fr": "Rechercher de l'aide Articales", 699 | "ar": "ابحث في تعليمات المساعدة", 700 | "ja": "ヘルプアーティカルを検索" 701 | }, 702 | { 703 | "text_id": "paying_for_a_reservation", 704 | "en": "Paying for a reservation", 705 | "fr": "Payer une réservation", 706 | "ar": "دفع مقابل الحجز", 707 | "ja": "予約の支払い" 708 | }, 709 | { 710 | "text_id": "trust_and_safety", 711 | "en": "Trust and Safety", 712 | "fr": "Confiance et sécurité", 713 | "ar": "الثقة والأمان", 714 | "ja": "信頼と安全" 715 | }, 716 | { 717 | "text_id": "How do I ", 718 | "en": "How do I cancel my rooms reservation?", 719 | "fr": "Comment annuler ma réservation de chambres?", 720 | "ar": "كيف ألغي حجز غرفتي؟", 721 | "ja": "部屋の予約をキャンセルするにはどうすればよいですか?" 722 | }, 723 | { 724 | "text_id": "What methods ", 725 | "en": "What methods of payment does Roome accept?", 726 | "fr": "Quels modes de paiement Roome accepte-t-il?", 727 | "ar": "ما هي طرق الدفع التي يقبلها Roome؟", 728 | "ja": "Roomeはどのような支払い方法を受け入れますか?" 729 | }, 730 | { 731 | "text_id": "I'm_a_guest_What", 732 | "en": "I'm a guest. What are some safety tips I can follow?", 733 | "fr": "Je suis un invité. Quels conseils de sécurité puis-je suivre?", 734 | "ar": "أنا ضيف. ما هي بعض نصائح الأمان التي يمكنني اتباعها؟", 735 | "ja": "私はゲストです。私が従うことができるいくつかの安全上のヒントは何ですか?" 736 | }, 737 | { 738 | "text_id": "When am I charged", 739 | "en": "When am I charged for a reservation?", 740 | "fr": "Quand suis-je facturé pour une réservation?", 741 | "ar": "متى يتم محاسبتي على الحجز؟", 742 | "ja": "予約はいつ請求されますか?" 743 | }, 744 | { 745 | "text_id": "How do I edit", 746 | "en": "How do I edit or remove a payment method?", 747 | "fr": "Comment modifier ou supprimer un mode de paiement?", 748 | "ar": "كيف أقوم بتعديل أو إزالة طريقة الدفع؟", 749 | "ja": "お支払い方法を編集または削除するにはどうすればよいですか?" 750 | }, 751 | { 752 | "text_id": "You can cancel", 753 | "en": "You can cancel a reservation any time before Or during your trip. To cancel a reservation:", 754 | "fr": "Vous pouvez annuler une réservation à tout moment avant ou pendant votre voyage. Pour annuler une réservation:", 755 | "ar": "يمكنك إلغاء الحجز في أي وقت قبل أو أثناء رحلتك. لإلغاء الحجز:", 756 | "ja": "旅行前または旅行中はいつでも予約をキャンセルできます。予約をキャンセルするには:" 757 | }, 758 | { 759 | "text_id": "GO to Trips and choose yotr trip", 760 | "en": "GO to Trips and choose yotr trip Click Your home reservation Click Modify reservation", 761 | "fr": "Allez à Voyages et choisissez votre voyage Cliquez sur Votre réservation de maison Cliquez sur Modifier la réservation", 762 | "ar": "اذهب إلى الرحلات واختر yotr trip انقر فوق حجز منزلك انقر فوق تعديل الحجز", 763 | "ja": "Tripsに移動し、yotrtripを選択します。自宅の予約をクリックします。予約の変更をクリックします。" 764 | }, 765 | { 766 | "text_id": "You'll be taken to", 767 | "en": "You'll be taken to a new page where you either change or cancel your reservation. Click the Next button under Cancel reservation to Start the cancellation process.", 768 | "fr": "Vous serez redirigé vers une nouvelle page où vous modifiez ou annulez votre réservation. Cliquez sur le bouton Suivant sous Annuler la réservation pour démarrer le processus d'annulation.", 769 | "ar": "سيتم نقلك إلى صفحة جديدة حيث يمكنك إما تغيير أو إلغاء حجزك. انقر فوق الزر التالي ضمن إلغاء الحجز لبدء عملية الإلغاء.", 770 | "ja": "予約を変更またはキャンセルする新しいページに移動します。 [予約のキャンセル]の下の[次へ]ボタンをクリックして、キャンセルプロセスを開始します。" 771 | }, 772 | { 773 | "text_id": "If you cancel, your ", 774 | "en": "If you cancel, your refund Will be determined by your host'r cancellation policy. We'll show your refund breakdown before you finalize the cancellation.", 775 | "fr": "Si vous annulez, votre remboursement sera déterminé par la politique d'annulation de votre hôte. Nous vous montrerons le détail de votre remboursement avant de finaliser l'annulation.", 776 | "ar": "إذا قمت بالإلغاء ، فسيتم تحديد المبلغ المسترد من خلال سياسة الإلغاء الخاصة بالمضيف. سنعرض تفاصيل استرداد الأموال الخاصة بك قبل الانتهاء من الإلغاء.", 777 | "ja": "キャンセルした場合、返金はホストのキャンセルポリシーによって決定されます。キャンセルを確定する前に、払い戻しの内訳を表示します。" 778 | }, 779 | { 780 | "text_id": "Give feedback", 781 | "en": "Give feedback", 782 | "fr": "Donnez votre avis", 783 | "ar": "إعطاء ردود الفعل", 784 | "ja": "フィードバックを与えます" 785 | }, 786 | { 787 | "text_id": "Related articles", 788 | "en": "Related articles", 789 | "fr": "Articles Liés", 790 | "ar": "مقالات ذات صلة", 791 | "ja": "関連記事" 792 | }, 793 | { 794 | "text_id": "Can I change", 795 | "en": "Can I change a reservation as a guest?", 796 | "fr": "Puis-je modifier une réservation en tant qu'invité?", 797 | "ar": "هل يمكنني تغيير الحجز كضيف؟", 798 | "ja": "ゲストとして予約を変更することはできますか?" 799 | }, 800 | { 801 | "text_id": "HoW do I cancel", 802 | "en": "HoW do I cancel a reservation request?", 803 | "fr": "Comment annuler une demande de réservation?", 804 | "ar": "كيف يمكنني إلغاء طلب الحجز؟", 805 | "ja": "予約リクエストをキャンセルするにはどうすればよいですか?" 806 | }, 807 | { 808 | "text_id": "What is the", 809 | "en": "What is the Resolution Center?", 810 | "fr": "Qu'est-ce que le centre de résolution?", 811 | "ar": "ما هو مركز القرار؟", 812 | "ja": "解決センターとは何ですか?" 813 | }, 814 | { 815 | "text_id": "payment_text", 816 | "en": "Payment", 817 | "fr": "Paiement", 818 | "ar": "دفع", 819 | "ja": "支払い" 820 | }, 821 | { 822 | "text_id": "setting_text", 823 | "en": "Setting", 824 | "fr": "Réglage", 825 | "ar": "جلسة", 826 | "ja": "設定" 827 | }, 828 | { 829 | "text_id": "Notifications", 830 | "en": "Notifications", 831 | "fr": "Notifications", 832 | "ar": "إشعارات", 833 | "ja": "通知" 834 | }, 835 | { 836 | "text_id": "Theme Mode", 837 | "en": "Theme Mode", 838 | "fr": "Mode thème", 839 | "ar": "وضع السمة", 840 | "ja": "テーマモード" 841 | }, 842 | { 843 | "text_id": "light", 844 | "en": "light", 845 | "fr": "lumière", 846 | "ar": "ضوء", 847 | "ja": "光" 848 | }, 849 | { 850 | "text_id": "dark", 851 | "en": "dark", 852 | "fr": "foncée", 853 | "ar": "داكن", 854 | "ja": "闇" 855 | }, 856 | { 857 | "text_id": "system", 858 | "en": "system", 859 | "fr": "système", 860 | "ar": "النظام", 861 | "ja": "システム" 862 | }, 863 | { 864 | "text_id": "Fonts", 865 | "en": "Fonts", 866 | "fr": "polices", 867 | "ar": "الخطوط", 868 | "ja": "フォント" 869 | }, 870 | { 871 | "text_id": "selected_fonts", 872 | "en": "Selected fonts", 873 | "fr": "Polices sélectionnées", 874 | "ar": "الخطوط المختارة", 875 | "ja": "選択したフォント" 876 | }, 877 | { 878 | "text_id": "Color", 879 | "en": "Color", 880 | "fr": "Couleur", 881 | "ar": "اللون", 882 | "ja": "色" 883 | }, 884 | { 885 | "text_id": "Selected color", 886 | "en": "Selected color", 887 | "fr": "Couleur sélectionnée", 888 | "ar": "اللون المحدد", 889 | "ja": "選択した色" 890 | }, 891 | { 892 | "text_id": "Language", 893 | "en": "Language", 894 | "fr": "Langue", 895 | "ar": "لغة", 896 | "ja": "言語" 897 | }, 898 | { 899 | "text_id": "Selected language", 900 | "en": "Selected language", 901 | "fr": "Langue sélectionnée", 902 | "ar": "اللغة المختارة", 903 | "ja": "選択した言語" 904 | }, 905 | { 906 | "text_id": "Country", 907 | "en": "Country", 908 | "fr": "Pays", 909 | "ar": "دولة", 910 | "ja": "国" 911 | }, 912 | { 913 | "text_id": "Currency", 914 | "en": "Currency", 915 | "fr": "Devise", 916 | "ar": "عملة", 917 | "ja": "通貨" 918 | }, 919 | { 920 | "text_id": "Terms of Services", 921 | "en": "Terms of Services", 922 | "fr": "Conditions de services", 923 | "ar": "شروط الخدمة", 924 | "ja": "利用規約" 925 | }, 926 | { 927 | "text_id": "Privacy Policy", 928 | "en": "Privacy Policy", 929 | "fr": "Politique de confidentialité", 930 | "ar": "سياسة الخصوصية", 931 | "ja": "個人情報保護方針" 932 | }, 933 | { 934 | "text_id": "Give Us Feedbacks", 935 | "en": "Give Us Feedbacks", 936 | "fr": "Donnez-nous des commentaires", 937 | "ar": "قدم لنا الاصداء", 938 | "ja": "フィードバックをお寄せください" 939 | }, 940 | { 941 | "text_id": "Log out", 942 | "en": "Log out", 943 | "fr": "Se déconnecter", 944 | "ar": "تسجيل خروج", 945 | "ja": "ログアウト" 946 | }, 947 | { 948 | "text_id": "Hello", 949 | "en": "Hello", 950 | "fr": "Bonjour", 951 | "ar": "مرحبا", 952 | "ja": "こんにちは" 953 | }, 954 | { 955 | "text_id": "room_selected", 956 | "en": "Room selected", 957 | "fr": "Chambre sélectionnée", 958 | "ar": "تم اختيار الغرفة", 959 | "ja": "選択された部屋" 960 | }, 961 | { 962 | "text_id": "number_room", 963 | "en": "Number of Room", 964 | "fr": "Nombre de chambre", 965 | "ar": "عدد الغرف", 966 | "ja": "部屋数" 967 | }, 968 | { 969 | "text_id": "people_data", 970 | "en": "People", 971 | "fr": "Gens", 972 | "ar": "الناس", 973 | "ja": "人" 974 | }, 975 | { 976 | "text_id": "room_data", 977 | "en": "Room", 978 | "fr": "Chambre", 979 | "ar": "غرفة", 980 | "ja": "ルーム" 981 | }, 982 | { 983 | "text_id": "choose_date", 984 | "en": "Choose Date", 985 | "fr": "Choisissez la date", 986 | "ar": "اختر موعدا", 987 | "ja": "日付を選択" 988 | }, 989 | { 990 | "text_id": "Apply_date", 991 | "en": "Apply", 992 | "fr": "Appliquer", 993 | "ar": "تطبيق", 994 | "ja": "適用する" 995 | }, 996 | { 997 | "text_id": "From_text", 998 | "en": "From", 999 | "fr": "De", 1000 | "ar": "من عند", 1001 | "ja": "から" 1002 | }, 1003 | { 1004 | "text_id": "to_text", 1005 | "en": "To", 1006 | "fr": "À", 1007 | "ar": "ل", 1008 | "ja": "に" 1009 | }, 1010 | { 1011 | "text_id": "sleeps", 1012 | "en": "sleeps", 1013 | "fr": "dort", 1014 | "ar": "ينام", 1015 | "ja": "眠る" 1016 | }, 1017 | { 1018 | "text_id": "children", 1019 | "en": "children", 1020 | "fr": "enfants", 1021 | "ar": "الأطفال", 1022 | "ja": "子供達" 1023 | }, 1024 | { 1025 | "text_id": "enter_new_password", 1026 | "en": "enter new password", 1027 | "fr": "Entrez un nouveau mot de passe", 1028 | "ar": "أدخل كلمة مرور جديدة", 1029 | "ja": "新しいパスワードを入力してください" 1030 | }, 1031 | { 1032 | "text_id": "enter_confirm_password", 1033 | "en": "enter confirm password", 1034 | "fr": "Entrez confirmer le mot de passe", 1035 | "ar": "أدخل تأكيد كلمة المرور", 1036 | "ja": "確認パスワードを入力してください" 1037 | }, 1038 | { 1039 | "text_id": "password_cannot_empty", 1040 | "en": "Password cannot be empty", 1041 | "fr": "Le mot de passe ne peut pas être vide", 1042 | "ar": "لا يمكن أن تكون كلمة المرور فارغة", 1043 | "ja": "パスワードを空にすることはできません" 1044 | }, 1045 | { 1046 | "text_id": "valid_new_password", 1047 | "en": "We cannot allow less than 6 lengths of the password, please enter a valid new password", 1048 | "fr": "Nous ne pouvons pas autoriser moins de 6 longueurs de mot de passe, veuillez entrer un nouveau mot de passe valide", 1049 | "ar": "لا يمكننا السماح بأقل من 6 أطوال لكلمة المرور ، يرجى إدخال كلمة مرور جديدة صالحة", 1050 | "ja": "6未満の長さのパスワードは許可されません。有効な新しいパスワードを入力してください" 1051 | }, 1052 | { 1053 | "text_id": "valid_password", 1054 | "en": "We cannot allow less than 6 lengths of the password, please enter a valid password", 1055 | "fr": "Nous ne pouvons pas autoriser moins de 6 longueurs de mot de passe, veuillez entrer un mot de passe valide", 1056 | "ar": "لا يمكننا السماح بأقل من 6 أطوال لكلمة المرور ، يرجى إدخال كلمة مرور صالحة", 1057 | "ja": "パスワードの長さは6未満にすることはできません。有効なパスワードを入力してください" 1058 | }, 1059 | { 1060 | "text_id": "password_not_match", 1061 | "en": "Password does not match, please enter a valid password", 1062 | "fr": "Le mot de passe ne correspond pas, veuillez entrer un mot de passe valide", 1063 | "ar": "كلمة المرور غير متطابقة ، الرجاء إدخال كلمة مرور صالحة", 1064 | "ja": "パスワードが一致しません。有効なパスワードを入力してください" 1065 | }, 1066 | { 1067 | "text_id": "enter_your_email", 1068 | "en": "enter your email", 1069 | "fr": "entrer votre Email", 1070 | "ar": "أدخل بريدك الإلكتروني", 1071 | "ja": "メールアドレスを入力" 1072 | }, 1073 | { 1074 | "text_id": "email_cannot_empty", 1075 | "en": "Email cannot be empty", 1076 | "fr": "L'e-mail ne peut pas être vide", 1077 | "ar": "لا يمكن أن يكون البريد الإلكتروني فارغًا", 1078 | "ja": "メールを空にすることはできません" 1079 | }, 1080 | { 1081 | "text_id": "enter_valid_email", 1082 | "en": "Please enter a valid email address, abc@xyz.com", 1083 | "fr": "Veuillez entrer une adresse e-mail valide, abc@xyz.com", 1084 | "ar": "الرجاء إدخال عنوان بريد إلكتروني صالح ، abc@xyz.com", 1085 | "ja": "有効なメールアドレスabc@xyz.comを入力してください" 1086 | }, 1087 | { 1088 | "text_id": "enter_password", 1089 | "en": "enter password", 1090 | "fr": "enter_password", 1091 | "ar": "أدخل كلمة المرور", 1092 | "ja": "パスワードを入力する" 1093 | }, 1094 | { 1095 | "text_id": "enter_first_name", 1096 | "en": "Enter first name", 1097 | "fr": "entrez votre prénom", 1098 | "ar": "أدخل الاسم الأول", 1099 | "ja": "名を入力してください" 1100 | }, 1101 | { 1102 | "text_id": "enter_last_name", 1103 | "en": "Enter first name", 1104 | "fr": "Entrer le nom de famille", 1105 | "ar": "إدخال اسم آخر", 1106 | "ja": "名前を入力してください" 1107 | }, 1108 | { 1109 | "text_id": "first_name_cannot_empty", 1110 | "en": "First Name cannot be empty", 1111 | "fr": "Le prénom ne peut pas être vide", 1112 | "ar": "لا يمكن أن يكون الاسم الأول فارغًا", 1113 | "ja": "名を空にすることはできません" 1114 | }, 1115 | { 1116 | "text_id": "last_name_cannot_empty", 1117 | "en": "Last Name cannot be empty", 1118 | "fr": "Le nom de famille ne peut pas être vide", 1119 | "ar": "لا يمكن أن يكون الاسم الأخير فارغًا", 1120 | "ja": "姓を空にすることはできません" 1121 | } 1122 | ] -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter/services.dart'; 3 | import 'package:flutter_hotel_booking_ui/utils/themes.dart'; 4 | import 'package:flutter_hotel_booking_ui/providers/theme_provider.dart'; 5 | import 'package:flutter_hotel_booking_ui/motel_app.dart'; 6 | import 'package:provider/provider.dart'; 7 | 8 | void main() async { 9 | WidgetsFlutterBinding.ensureInitialized(); 10 | await SystemChrome.setPreferredOrientations( 11 | [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]) 12 | .then((_) => runApp(_setAllProviders())); 13 | } 14 | 15 | Widget _setAllProviders() { 16 | return MultiProvider( 17 | providers: [ 18 | ChangeNotifierProvider( 19 | create: (_) => ThemeProvider( 20 | state: AppTheme.getThemeData, 21 | ), 22 | ), 23 | ], 24 | child: MotelApp(), 25 | ); 26 | } 27 | -------------------------------------------------------------------------------- /lib/modules/splash/components/page_pop_view.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_hotel_booking_ui/language/appLocalizations.dart'; 3 | import 'package:flutter_hotel_booking_ui/utils/text_styles.dart'; 4 | 5 | class PagePopup extends StatelessWidget { 6 | final PageViewData imageData; 7 | 8 | const PagePopup({Key? key, required this.imageData}) : super(key: key); 9 | 10 | @override 11 | Widget build(BuildContext context) { 12 | return Column( 13 | children: [ 14 | Expanded( 15 | flex: 8, 16 | child: Center( 17 | child: Container( 18 | width: MediaQuery.of(context).size.width - 120, 19 | child: AspectRatio( 20 | aspectRatio: 1, 21 | child: Image.asset( 22 | imageData.assetsImage, 23 | fit: BoxFit.cover, 24 | ), 25 | ), 26 | ), 27 | ), 28 | ), 29 | Expanded( 30 | flex: 1, 31 | child: Container( 32 | child: Text( 33 | AppLocalizations(context).of(imageData.titleText), 34 | textAlign: TextAlign.center, 35 | style: TextStyles(context).getTitleStyle().copyWith( 36 | fontSize: 24, 37 | fontWeight: FontWeight.bold, 38 | ), 39 | ), 40 | ), 41 | ), 42 | Expanded( 43 | flex: 1, 44 | child: Container( 45 | child: Text( 46 | AppLocalizations(context).of(imageData.subText), 47 | textAlign: TextAlign.center, 48 | style: TextStyles(context).getDescriptionStyle(), 49 | ), 50 | ), 51 | ), 52 | Expanded( 53 | flex: 1, 54 | child: SizedBox(), 55 | ), 56 | ], 57 | ); 58 | } 59 | } 60 | 61 | class PageViewData { 62 | final String titleText; 63 | final String subText; 64 | final String assetsImage; 65 | 66 | PageViewData({ 67 | required this.titleText, 68 | required this.subText, 69 | required this.assetsImage, 70 | }); 71 | } 72 | -------------------------------------------------------------------------------- /lib/modules/splash/introductionScreen.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:flutter_hotel_booking_ui/utils/localfiles.dart'; 4 | import 'package:flutter_hotel_booking_ui/utils/themes.dart'; 5 | import 'package:flutter_hotel_booking_ui/language/appLocalizations.dart'; 6 | import 'package:flutter_hotel_booking_ui/modules/splash/components/page_pop_view.dart'; 7 | import 'package:flutter_hotel_booking_ui/routes/route_names.dart'; 8 | import 'package:flutter_hotel_booking_ui/widgets/common_button.dart'; 9 | import 'package:smooth_page_indicator/smooth_page_indicator.dart'; 10 | 11 | class IntroductionScreen extends StatefulWidget { 12 | @override 13 | _IntroductionScreenState createState() => _IntroductionScreenState(); 14 | } 15 | 16 | class _IntroductionScreenState extends State { 17 | var pageController = PageController(initialPage: 0); 18 | List pageViewModelData = []; 19 | 20 | late Timer sliderTimer; 21 | var currentShowIndex = 0; 22 | 23 | @override 24 | void initState() { 25 | pageViewModelData.add(PageViewData( 26 | titleText: 'plan_your_trips', 27 | subText: 'book_one_of_your', 28 | assetsImage: Localfiles.introduction1, 29 | )); 30 | 31 | pageViewModelData.add(PageViewData( 32 | titleText: 'find_best_deals', 33 | subText: 'find_deals_for_any', 34 | assetsImage: Localfiles.introduction2, 35 | )); 36 | 37 | pageViewModelData.add(PageViewData( 38 | titleText: 'best_travelling_all_time', 39 | subText: 'find_deals_for_any', 40 | assetsImage: Localfiles.introduction3, 41 | )); 42 | 43 | sliderTimer = Timer.periodic(Duration(seconds: 4), (timer) { 44 | if (currentShowIndex == 0) { 45 | pageController.animateTo(MediaQuery.of(context).size.width, 46 | duration: Duration(seconds: 1), curve: Curves.fastOutSlowIn); 47 | } else if (currentShowIndex == 1) { 48 | pageController.animateTo(MediaQuery.of(context).size.width * 2, 49 | duration: Duration(seconds: 1), curve: Curves.fastOutSlowIn); 50 | } else if (currentShowIndex == 2) { 51 | pageController.animateTo(0, 52 | duration: Duration(seconds: 1), curve: Curves.fastOutSlowIn); 53 | } 54 | }); 55 | super.initState(); 56 | } 57 | 58 | @override 59 | void dispose() { 60 | sliderTimer.cancel(); 61 | super.dispose(); 62 | } 63 | 64 | @override 65 | Widget build(BuildContext context) { 66 | return Scaffold( 67 | body: Column( 68 | children: [ 69 | SizedBox( 70 | height: MediaQuery.of(context).padding.top, 71 | ), 72 | Expanded( 73 | child: PageView( 74 | controller: pageController, 75 | pageSnapping: true, 76 | onPageChanged: (index) { 77 | currentShowIndex = index; 78 | }, 79 | scrollDirection: Axis.horizontal, 80 | children: [ 81 | PagePopup(imageData: pageViewModelData[0]), 82 | PagePopup(imageData: pageViewModelData[1]), 83 | PagePopup(imageData: pageViewModelData[2]), 84 | ], 85 | ), 86 | ), 87 | SmoothPageIndicator( 88 | controller: pageController, // PageController 89 | count: 3, 90 | effect: WormEffect( 91 | activeDotColor: Theme.of(context).primaryColor, 92 | dotColor: Theme.of(context).dividerColor, 93 | dotHeight: 10.0, 94 | dotWidth: 10.0, 95 | spacing: 5.0), // your preferred effect 96 | onDotClicked: (index) {}, 97 | ), 98 | CommonButton( 99 | padding: 100 | const EdgeInsets.only(left: 48, right: 48, bottom: 8, top: 32), 101 | buttonText: AppLocalizations(context).of("login"), 102 | onTap: () { 103 | Scaffold(); 104 | }, 105 | ), 106 | CommonButton( 107 | padding: 108 | const EdgeInsets.only(left: 48, right: 48, bottom: 32, top: 8), 109 | buttonText: AppLocalizations(context).of("create_account"), 110 | backgroundColor: AppTheme.backgroundColor, 111 | textColor: AppTheme.primaryTextColor, 112 | onTap: () { 113 | Scaffold(); 114 | }, 115 | ), 116 | SizedBox( 117 | height: MediaQuery.of(context).padding.bottom, 118 | ) 119 | ], 120 | ), 121 | ); 122 | } 123 | } 124 | -------------------------------------------------------------------------------- /lib/modules/splash/splashScreen.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_hotel_booking_ui/utils/localfiles.dart'; 3 | import 'package:flutter_hotel_booking_ui/utils/text_styles.dart'; 4 | import 'package:flutter_hotel_booking_ui/utils/themes.dart'; 5 | import 'package:flutter_hotel_booking_ui/language/appLocalizations.dart'; 6 | import 'package:flutter_hotel_booking_ui/providers/theme_provider.dart'; 7 | import 'package:flutter_hotel_booking_ui/routes/route_names.dart'; 8 | import 'package:flutter_hotel_booking_ui/widgets/common_button.dart'; 9 | import 'package:provider/provider.dart'; 10 | 11 | class SplashScreen extends StatefulWidget { 12 | @override 13 | _SplashScreenState createState() => _SplashScreenState(); 14 | } 15 | 16 | class _SplashScreenState extends State { 17 | bool isLoadText = false; 18 | @override 19 | void initState() { 20 | WidgetsBinding.instance!.addPostFrameCallback((_) => 21 | _loadAppLocalizations()); // call after first frame receiver so we have context 22 | super.initState(); 23 | } 24 | 25 | Future _loadAppLocalizations() async { 26 | try { 27 | //load all text json file to allLanguageTextData(in common file) 28 | // await AppLocalizations.init(context); 29 | setState(() { 30 | isLoadText = true; 31 | }); 32 | } catch (_) {} 33 | } 34 | 35 | @override 36 | Widget build(BuildContext context) { 37 | final appTheme = Provider.of(context); 38 | return Container( 39 | child: Scaffold( 40 | body: Stack( 41 | children: [ 42 | Container( 43 | foregroundDecoration: !appTheme.isLightMode 44 | ? BoxDecoration( 45 | color: Theme.of(context).backgroundColor.withOpacity(0.4)) 46 | : null, 47 | width: MediaQuery.of(context).size.width, 48 | height: MediaQuery.of(context).size.height, 49 | child: Image.asset(Localfiles.introduction, fit: BoxFit.cover), 50 | ), 51 | Column( 52 | children: [ 53 | Expanded( 54 | flex: 1, 55 | child: SizedBox(), 56 | ), 57 | Center( 58 | child: Container( 59 | width: 60, 60 | height: 60, 61 | decoration: BoxDecoration( 62 | borderRadius: BorderRadius.all( 63 | Radius.circular(8.0), 64 | ), 65 | boxShadow: [ 66 | BoxShadow( 67 | color: Theme.of(context).dividerColor, 68 | offset: Offset(1.1, 1.1), 69 | blurRadius: 10.0), 70 | ], 71 | ), 72 | child: ClipRRect( 73 | borderRadius: BorderRadius.all( 74 | Radius.circular(8.0), 75 | ), 76 | child: Image.asset(Localfiles.appIcon), 77 | ), 78 | ), 79 | ), 80 | SizedBox( 81 | height: 16, 82 | ), 83 | Text( 84 | "Motel", 85 | textAlign: TextAlign.left, 86 | style: TextStyles(context).getBoldStyle().copyWith( 87 | fontSize: 24, 88 | ), 89 | ), 90 | SizedBox( 91 | height: 8, 92 | ), 93 | AnimatedOpacity( 94 | opacity: isLoadText ? 1.0 : 0.0, 95 | duration: Duration(milliseconds: 420), 96 | child: Text( 97 | AppLocalizations(context).of("best_hotel_deals"), 98 | textAlign: TextAlign.left, 99 | style: TextStyles(context).getRegularStyle().copyWith(), 100 | ), 101 | ), 102 | Expanded( 103 | flex: 4, 104 | child: SizedBox(), 105 | ), 106 | AnimatedOpacity( 107 | opacity: isLoadText ? 1.0 : 0.0, 108 | duration: Duration(milliseconds: 680), 109 | child: CommonButton( 110 | padding: const EdgeInsets.only( 111 | left: 48, right: 48, bottom: 8, top: 8), 112 | buttonText: AppLocalizations(context).of("get_started"), 113 | onTap: () { 114 | NavigationServices(context).gotoIntroductionScreen(); 115 | }, 116 | ), 117 | ), 118 | AnimatedOpacity( 119 | opacity: isLoadText ? 1.0 : 0.0, 120 | duration: Duration(milliseconds: 1200), 121 | child: Padding( 122 | padding: EdgeInsets.only( 123 | bottom: 24.0 + MediaQuery.of(context).padding.bottom, 124 | top: 16), 125 | child: Text( 126 | AppLocalizations(context).of("already_have_account"), 127 | textAlign: TextAlign.left, 128 | style: TextStyles(context).getDescriptionStyle().copyWith( 129 | color: AppTheme.whiteColor, 130 | ), 131 | ), 132 | ), 133 | ), 134 | ], 135 | ), 136 | ], 137 | ), 138 | ), 139 | ); 140 | } 141 | } 142 | -------------------------------------------------------------------------------- /lib/motel_app.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | import 'package:flutter/foundation.dart'; 3 | import 'package:flutter/material.dart'; 4 | import 'package:flutter/services.dart'; 5 | import 'package:flutter_hotel_booking_ui/common/common.dart'; 6 | import 'package:flutter_hotel_booking_ui/language/appLocalizations.dart'; 7 | import 'package:flutter_hotel_booking_ui/providers/theme_provider.dart'; 8 | import 'package:flutter_hotel_booking_ui/utils/enum.dart'; 9 | import 'package:flutter_hotel_booking_ui/modules/splash/introductionScreen.dart'; 10 | import 'package:flutter_hotel_booking_ui/modules/splash/splashScreen.dart'; 11 | import 'package:flutter_hotel_booking_ui/routes/routes.dart'; 12 | import 'package:flutter_localizations/flutter_localizations.dart'; 13 | import 'package:provider/provider.dart'; 14 | 15 | BuildContext? applicationcontext; 16 | 17 | class MotelApp extends StatefulWidget { 18 | @override 19 | _MotelAppState createState() => _MotelAppState(); 20 | } 21 | 22 | class _MotelAppState extends State { 23 | @override 24 | Widget build(BuildContext context) { 25 | return Consumer( 26 | builder: (_, provider, child) { 27 | applicationcontext = context; 28 | 29 | final ThemeData _theme = provider.themeData; 30 | return MaterialApp( 31 | localizationsDelegates: [ 32 | AppLocalizations.delegate, 33 | GlobalMaterialLocalizations.delegate, 34 | GlobalWidgetsLocalizations.delegate, 35 | GlobalCupertinoLocalizations.delegate, 36 | ], 37 | supportedLocales: [ 38 | const Locale('en'), // English 39 | const Locale('fr'), //French 40 | const Locale('ja'), // Japanises 41 | const Locale('ar'), //Arebic 42 | ], 43 | navigatorKey: navigatorKey, 44 | title: 'Motel', 45 | debugShowCheckedModeBanner: false, 46 | theme: _theme, 47 | routes: _buildRoutes(), 48 | builder: (BuildContext context, Widget? child) { 49 | _setFirstTimeSomeData(context, _theme); 50 | return Directionality( 51 | textDirection: 52 | context.read().languageType == LanguageType.ar 53 | ? TextDirection.rtl 54 | : TextDirection.ltr, 55 | child: Builder( 56 | builder: (BuildContext context) { 57 | return MediaQuery( 58 | data: MediaQuery.of(context).copyWith( 59 | textScaleFactor: MediaQuery.of(context).size.width > 360 60 | ? 1.0 61 | : MediaQuery.of(context).size.width >= 340 62 | ? 0.9 63 | : 0.8, 64 | ), 65 | child: child ?? SizedBox(), 66 | ); 67 | }, 68 | ), 69 | ); 70 | }, 71 | ); 72 | }, 73 | ); 74 | } 75 | 76 | // when this application open every time on that time we check and update some theme data 77 | void _setFirstTimeSomeData(BuildContext context, ThemeData theme) { 78 | applicationcontext = context; 79 | _setStatusBarNavigationBarTheme(theme); 80 | //we call some theme basic data set in app like color, font, theme mode, language 81 | context 82 | .read() 83 | .checkAndSetThemeMode(MediaQuery.of(context).platformBrightness); 84 | context.read().checkAndSetColorType(); 85 | context.read().checkAndSetFonType(); 86 | context.read().checkAndSetLanguage(); 87 | } 88 | 89 | void _setStatusBarNavigationBarTheme(ThemeData themeData) { 90 | final brightness = !kIsWeb && Platform.isAndroid 91 | ? themeData.brightness == Brightness.light 92 | ? Brightness.dark 93 | : Brightness.light 94 | : themeData.brightness; 95 | SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( 96 | statusBarColor: Colors.transparent, 97 | statusBarIconBrightness: brightness, 98 | statusBarBrightness: brightness, 99 | systemNavigationBarColor: themeData.scaffoldBackgroundColor, 100 | systemNavigationBarDividerColor: Colors.transparent, 101 | systemNavigationBarIconBrightness: brightness, 102 | )); 103 | } 104 | 105 | Map _buildRoutes() { 106 | return { 107 | RoutesName.Splash: (BuildContext context) => SplashScreen(), 108 | RoutesName.IntroductionScreen: (BuildContext context) => 109 | IntroductionScreen(), 110 | }; 111 | } 112 | } 113 | -------------------------------------------------------------------------------- /lib/providers/theme_provider.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_hotel_booking_ui/utils/shared_preferences_keys.dart'; 3 | import 'package:flutter_hotel_booking_ui/utils/themes.dart'; 4 | import 'package:flutter_hotel_booking_ui/utils/enum.dart'; 5 | import 'package:flutter_hotel_booking_ui/motel_app.dart'; 6 | 7 | class ThemeProvider extends ChangeNotifier { 8 | ThemeProvider({required ThemeData state}) : super(); 9 | 10 | bool _isLightMode = true; 11 | ThemeData _themeData = AppTheme.getThemeData; 12 | ThemeModeType _themeModeType = ThemeModeType.system; 13 | ThemeData get themeData => _themeData; 14 | bool get isLightMode => _isLightMode; 15 | ThemeModeType get themeModeType => _themeModeType; 16 | FontFamilyType get fontType => _fontType; 17 | FontFamilyType _fontType = FontFamilyType.WorkSans; 18 | ColorType get colorType => _colorType; 19 | ColorType _colorType = ColorType.Verdigris; 20 | LanguageType get languageType => _languageType; 21 | LanguageType _languageType = LanguageType.en; 22 | 23 | updateThemeMode(ThemeModeType _themeModeType) async { 24 | await SharedPreferencesKeys().setThemeMode(_themeModeType); 25 | final systembrightness = 26 | MediaQuery.of(applicationcontext!).platformBrightness; 27 | checkAndSetThemeMode(_themeModeType == ThemeModeType.light 28 | ? Brightness.light 29 | : _themeModeType == ThemeModeType.dark 30 | ? Brightness.dark 31 | : systembrightness); 32 | } 33 | 34 | // this func is auto check theme and update them 35 | void checkAndSetThemeMode(Brightness systemBrightness) async { 36 | bool _theLightTheme = _isLightMode; 37 | 38 | // mode is selected by user 39 | _themeModeType = await SharedPreferencesKeys().getThemeMode(); 40 | if (_themeModeType == ThemeModeType.system) { 41 | // if mode is system then we add as system birtness 42 | _theLightTheme = systemBrightness == Brightness.light; 43 | } else if (_themeModeType == ThemeModeType.dark) { 44 | _theLightTheme = false; 45 | } else { 46 | //light theme selected by user 47 | _theLightTheme = true; 48 | } 49 | 50 | if (_isLightMode != _theLightTheme) { 51 | _isLightMode = _theLightTheme; 52 | _themeData = AppTheme.getThemeData; 53 | notifyListeners(); 54 | } 55 | } 56 | 57 | void checkAndSetFonType() async { 58 | final FontFamilyType fontType = await SharedPreferencesKeys().getFontType(); 59 | if (fontType != _fontType) { 60 | _fontType = fontType; 61 | _themeData = AppTheme.getThemeData; 62 | notifyListeners(); 63 | } 64 | } 65 | 66 | void updateFontType(FontFamilyType _fontType) async { 67 | await SharedPreferencesKeys().setFontType(_fontType); 68 | _fontType = _fontType; 69 | _themeData = AppTheme.getThemeData; 70 | notifyListeners(); 71 | } 72 | 73 | void updateColorType(ColorType _color) async { 74 | await SharedPreferencesKeys().setColorType(_color); 75 | _colorType = _color; 76 | _themeData = AppTheme.getThemeData; 77 | notifyListeners(); 78 | } 79 | 80 | void checkAndSetColorType() async { 81 | final ColorType _colorTypeData = 82 | await SharedPreferencesKeys().getColorType(); 83 | if (_colorTypeData != colorType) { 84 | _colorType = _colorTypeData; 85 | _themeData = AppTheme.getThemeData; 86 | notifyListeners(); 87 | } 88 | } 89 | 90 | void updateLanguage(LanguageType _language) async { 91 | await SharedPreferencesKeys().setLanguageType(_language); 92 | _languageType = _language; 93 | _themeData = AppTheme.getThemeData; 94 | notifyListeners(); 95 | } 96 | 97 | void checkAndSetLanguage() async { 98 | final LanguageType _languageTypeData = 99 | await SharedPreferencesKeys().getLanguageType(); 100 | if (_languageTypeData != languageType) { 101 | _languageType = _languageTypeData; 102 | _themeData = AppTheme.getThemeData; 103 | notifyListeners(); 104 | } 105 | } 106 | } 107 | -------------------------------------------------------------------------------- /lib/routes/route_names.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_hotel_booking_ui/routes/routes.dart'; 3 | 4 | class NavigationServices { 5 | NavigationServices(this.context); 6 | 7 | final BuildContext context; 8 | 9 | Future _pushMaterialPageRoute(Widget widget, 10 | {bool fullscreenDialog: false}) async { 11 | return await Navigator.push( 12 | context, 13 | MaterialPageRoute( 14 | builder: (context) => widget, fullscreenDialog: fullscreenDialog), 15 | ); 16 | } 17 | 18 | void gotoSplashScreen() { 19 | Navigator.pushNamedAndRemoveUntil( 20 | context, RoutesName.Splash, (Route route) => false); 21 | } 22 | 23 | void gotoIntroductionScreen() { 24 | Navigator.pushNamedAndRemoveUntil(context, RoutesName.IntroductionScreen, 25 | (Route route) => false); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /lib/routes/routes.dart: -------------------------------------------------------------------------------- 1 | class RoutesName { 2 | static const String Splash = "/"; 3 | static const String IntroductionScreen = '/introductionScreen'; 4 | static const String Login = '/login'; 5 | static const String Home = '/home'; 6 | static const String TabScreen = "/bottomTab/bottomTabScreen"; 7 | } 8 | -------------------------------------------------------------------------------- /lib/utils/enum.dart: -------------------------------------------------------------------------------- 1 | enum FontFamilyType { 2 | Montserrat, 3 | WorkSans, 4 | Varela, 5 | DancingScript, 6 | Satisfy, 7 | KaushanScript, 8 | } 9 | 10 | enum ColorType { 11 | Verdigris, 12 | Malibu, 13 | DarkSkyBlue, 14 | BilobaFlower, 15 | } 16 | 17 | enum LanguageType { en, fr, ar, ja } 18 | 19 | -------------------------------------------------------------------------------- /lib/utils/localfiles.dart: -------------------------------------------------------------------------------- 1 | class Localfiles { 2 | static const String BaseImageUrl = 'assets/images/'; 3 | static const String appIcon = BaseImageUrl + 'appIcon.png'; 4 | static const String introduction = BaseImageUrl + 'introduction.jpg'; 5 | static const String introduction1 = BaseImageUrl + 'introduction1.png'; 6 | static const String introduction2 = BaseImageUrl + 'introduction2.png'; 7 | static const String introduction3 = BaseImageUrl + 'introduction3.png'; 8 | } 9 | -------------------------------------------------------------------------------- /lib/utils/shared_preferences_keys.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_hotel_booking_ui/utils/themes.dart'; 3 | import 'package:flutter_hotel_booking_ui/utils/enum.dart'; 4 | import 'package:flutter_hotel_booking_ui/motel_app.dart'; 5 | import 'package:shared_preferences/shared_preferences.dart'; 6 | 7 | class SharedPreferencesKeys { 8 | _setIntData({required String key, required int id}) async { 9 | SharedPreferences prefs = await SharedPreferences.getInstance(); 10 | await prefs.setInt(key, id); 11 | } 12 | 13 | Future _getIntData({required String key}) async { 14 | SharedPreferences prefs = await SharedPreferences.getInstance(); 15 | return prefs.getInt(key); 16 | } 17 | 18 | Future getThemeMode() async { 19 | int? index = await _getIntData(key: 'ThemeModeType'); 20 | if (index != null) { 21 | return ThemeModeType.values[index]; 22 | } else { 23 | return ThemeModeType.system; 24 | } 25 | } 26 | 27 | Future setThemeMode(ThemeModeType type) async { 28 | await _setIntData(key: 'ThemeModeType', id: type.index); 29 | } 30 | 31 | Future getFontType() async { 32 | int? index = await _getIntData(key: 'FontType'); 33 | if (index != null) { 34 | return FontFamilyType.values[index]; 35 | } else { 36 | return FontFamilyType.WorkSans; // Default we set work span font 37 | } 38 | } 39 | 40 | Future setFontType(FontFamilyType type) async { 41 | await _setIntData(key: 'FontType', id: type.index); 42 | } 43 | 44 | Future getColorType() async { 45 | int? index = await _getIntData(key: 'ColorType'); 46 | if (index != null) { 47 | return ColorType.values[index]; 48 | } else { 49 | return ColorType.Verdigris; // Default we set Verdigris 50 | } 51 | } 52 | 53 | Future setColorType(ColorType type) async { 54 | await _setIntData(key: 'ColorType', id: type.index); 55 | } 56 | 57 | Future getLanguageType() async { 58 | int? index = await _getIntData(key: 'Languagetype'); 59 | if (index != null) { 60 | return LanguageType.values[index]; 61 | } else { 62 | if (applicationcontext != null) { 63 | LanguageType type = LanguageType.en; 64 | final Locale myLocale = Localizations.localeOf(applicationcontext!); 65 | if (myLocale.languageCode != '' && myLocale.languageCode.length == 2) { 66 | for (var item in LanguageType.values.toList()) { 67 | if (myLocale.languageCode == item.toString().split(".")[1]) { 68 | type = item; 69 | } 70 | } 71 | } 72 | return type; 73 | } else { 74 | return LanguageType.en; // Default we set english 75 | } 76 | } 77 | } 78 | 79 | Future setLanguageType(LanguageType language) async { 80 | await _setIntData(key: 'Languagetype', id: language.index); 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /lib/utils/text_styles.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_hotel_booking_ui/utils/themes.dart'; 3 | 4 | class TextStyles { 5 | final BuildContext context; 6 | 7 | TextStyles(this.context); 8 | 9 | TextStyle getTitleStyle() { 10 | return Theme.of(context).textTheme.headline6!.copyWith( 11 | fontSize: 24, 12 | color: AppTheme.primaryTextColor, 13 | ); 14 | } 15 | 16 | TextStyle getDescriptionStyle() { 17 | return Theme.of(context).textTheme.bodyText1!.copyWith( 18 | color: AppTheme.secondaryTextColor, 19 | ); 20 | } 21 | 22 | TextStyle getRegularStyle() { 23 | return Theme.of(context).textTheme.bodyText1!.copyWith( 24 | fontSize: 16, 25 | color: AppTheme.primaryTextColor, 26 | ); 27 | } 28 | 29 | TextStyle getBoldStyle() { 30 | return Theme.of(context).textTheme.subtitle1!.copyWith( 31 | fontSize: 14, 32 | color: AppTheme.primaryTextColor, 33 | ); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /lib/utils/themes.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_hotel_booking_ui/utils/enum.dart'; 3 | import 'package:google_fonts/google_fonts.dart'; 4 | import 'package:flutter_hotel_booking_ui/providers/theme_provider.dart'; 5 | import 'package:flutter_hotel_booking_ui/motel_app.dart'; 6 | import 'package:provider/provider.dart'; 7 | 8 | class AppTheme { 9 | static bool get isLightMode { 10 | return applicationcontext == null 11 | ? true 12 | : applicationcontext!.read().isLightMode; 13 | } 14 | 15 | // colors 16 | static Color get primaryColor { 17 | ColorType _colortypedata = applicationcontext == null 18 | ? ColorType.Verdigris 19 | : applicationcontext!.read().colorType; 20 | 21 | return getColor(_colortypedata); 22 | } 23 | 24 | static Color get scaffoldBackgroundColor => 25 | isLightMode ? Color(0xFFF7F7F7) : Color(0xFF1A1A1A); 26 | 27 | static Color get redErrorColor => 28 | isLightMode ? Color(0xFFAC0000) : Color(0xFFAC0000); 29 | 30 | static Color get backgroundColor => 31 | isLightMode ? Color(0xFFFFFFFF) : Color(0xFF2C2C2C); 32 | 33 | static Color get primaryTextColor => 34 | isLightMode ? Color(0xFF262626) : Color(0xFFFFFFFF); 35 | 36 | static Color get secondaryTextColor => 37 | isLightMode ? Color(0xFFADADAD) : Color(0xFF6D6D6D); 38 | 39 | static Color get whiteColor => Color(0xFFFFFFFF); 40 | static Color get backColor => Color(0xFF262626); 41 | 42 | static Color get fontcolor => 43 | isLightMode ? Color(0xFF1A1A1A) : Color(0xFFF7F7F7); 44 | 45 | static ThemeData get getThemeData => 46 | isLightMode ? _buildLightTheme() : _buildDarkTheme(); 47 | 48 | static TextTheme _buildTextTheme(TextTheme base) { 49 | FontFamilyType _fontType = applicationcontext == null 50 | ? FontFamilyType.WorkSans 51 | : applicationcontext!.read().fontType; 52 | return base.copyWith( 53 | headline1: getTextStyle(_fontType, base.headline1!), //f-size 96 54 | headline2: getTextStyle(_fontType, base.headline2!), //f-size 60 55 | headline3: getTextStyle(_fontType, base.headline3!), //f-size 48 56 | headline4: getTextStyle(_fontType, base.headline4!), //f-size 34 57 | headline5: getTextStyle(_fontType, base.headline5!), //f-size 24 58 | headline6: getTextStyle( 59 | _fontType, 60 | base.headline6!.copyWith( 61 | fontWeight: FontWeight.bold, 62 | ), 63 | ), //f-size 20 64 | button: getTextStyle(_fontType, base.button!), //f-size 14 65 | caption: getTextStyle(_fontType, base.caption!), //f-size 12 66 | bodyText1: getTextStyle(_fontType, base.bodyText1!), //f-size 16 67 | bodyText2: getTextStyle(_fontType, base.bodyText2!), //f-size 14 68 | subtitle1: getTextStyle( 69 | _fontType, 70 | base.subtitle1!.copyWith( 71 | fontWeight: FontWeight.bold, 72 | ), 73 | ), //f-size 16 74 | subtitle2: getTextStyle(_fontType, base.subtitle2!), //f-size 14 75 | overline: getTextStyle(_fontType, base.overline!), //f-size 10 76 | ); 77 | } 78 | 79 | // we also get some Light and Dark color variants 80 | static Color getColor(ColorType _colordata) { 81 | switch (_colordata) { 82 | case ColorType.Verdigris: 83 | return isLightMode ? Color(0xFF4FBE9F) : Color(0xFF4FBE9F); 84 | case ColorType.Malibu: 85 | return isLightMode ? Color(0xFF5DCAEC) : Color(0xFF5DCAEC); 86 | case ColorType.DarkSkyBlue: 87 | return isLightMode ? Color(0xFF458CEA) : Color(0xFF458CEA); 88 | case ColorType.BilobaFlower: 89 | return isLightMode ? Color(0xFFff5f5f) : Color(0xFFff5f5f); 90 | } 91 | } 92 | 93 | static TextStyle getTextStyle( 94 | FontFamilyType _fontFamilyType, TextStyle textStyle) { 95 | switch (_fontFamilyType) { 96 | case FontFamilyType.Montserrat: 97 | return GoogleFonts.montserrat(textStyle: textStyle); 98 | case FontFamilyType.WorkSans: 99 | return GoogleFonts.workSans(textStyle: textStyle); 100 | case FontFamilyType.Varela: 101 | return GoogleFonts.varela(textStyle: textStyle); 102 | case FontFamilyType.Satisfy: 103 | return GoogleFonts.satisfy(textStyle: textStyle); 104 | case FontFamilyType.DancingScript: 105 | return GoogleFonts.dancingScript(textStyle: textStyle); 106 | case FontFamilyType.KaushanScript: 107 | return GoogleFonts.kaushanScript(textStyle: textStyle); 108 | default: 109 | return GoogleFonts.roboto(textStyle: textStyle); 110 | } 111 | } 112 | 113 | static ThemeData _buildLightTheme() { 114 | final ColorScheme colorScheme = const ColorScheme.light().copyWith( 115 | primary: primaryColor, 116 | secondary: primaryColor, 117 | ); 118 | final ThemeData base = ThemeData.light(); 119 | 120 | return base.copyWith( 121 | colorScheme: colorScheme, 122 | primaryColor: primaryColor, 123 | scaffoldBackgroundColor: scaffoldBackgroundColor, 124 | backgroundColor: backgroundColor, 125 | canvasColor: scaffoldBackgroundColor, 126 | buttonTheme: _buttonThemeData(colorScheme), 127 | dialogTheme: _dialogTheme(), 128 | cardTheme: _cardTheme(), 129 | textTheme: _buildTextTheme(base.textTheme), 130 | primaryTextTheme: _buildTextTheme(base.textTheme), 131 | platform: TargetPlatform.iOS, 132 | visualDensity: VisualDensity.adaptivePlatformDensity, 133 | ); 134 | } 135 | 136 | static ThemeData _buildDarkTheme() { 137 | final ColorScheme colorScheme = const ColorScheme.dark().copyWith( 138 | primary: primaryColor, 139 | secondary: primaryColor, 140 | ); 141 | final ThemeData base = ThemeData.dark(); 142 | 143 | return base.copyWith( 144 | colorScheme: colorScheme, 145 | primaryColor: primaryColor, 146 | scaffoldBackgroundColor: scaffoldBackgroundColor, 147 | backgroundColor: backgroundColor, 148 | canvasColor: scaffoldBackgroundColor, 149 | buttonTheme: _buttonThemeData(colorScheme), 150 | dialogTheme: _dialogTheme(), 151 | cardTheme: _cardTheme(), 152 | textTheme: _buildTextTheme(base.textTheme), 153 | primaryTextTheme: _buildTextTheme(base.textTheme), 154 | platform: TargetPlatform.iOS, 155 | visualDensity: VisualDensity.adaptivePlatformDensity, 156 | ); 157 | } 158 | 159 | static ButtonThemeData _buttonThemeData(ColorScheme colorScheme) { 160 | return ButtonThemeData( 161 | shape: RoundedRectangleBorder( 162 | borderRadius: BorderRadius.circular(8.0), 163 | ), 164 | colorScheme: colorScheme, 165 | textTheme: ButtonTextTheme.primary, 166 | ); 167 | } 168 | 169 | static DialogTheme _dialogTheme() { 170 | return DialogTheme( 171 | shape: RoundedRectangleBorder( 172 | borderRadius: BorderRadius.circular(8.0), 173 | ), 174 | elevation: 0, 175 | backgroundColor: backgroundColor, 176 | ); 177 | } 178 | 179 | static CardTheme _cardTheme() { 180 | return CardTheme( 181 | clipBehavior: Clip.antiAlias, 182 | color: backgroundColor, 183 | shadowColor: secondaryTextColor.withOpacity(0.2), 184 | shape: RoundedRectangleBorder( 185 | borderRadius: BorderRadius.circular(8.0), 186 | ), 187 | elevation: 8, 188 | margin: const EdgeInsets.all(0), 189 | ); 190 | } 191 | 192 | static get mapCardDecoration => BoxDecoration( 193 | color: AppTheme.scaffoldBackgroundColor, 194 | borderRadius: BorderRadius.all(Radius.circular(24.0)), 195 | boxShadow: [ 196 | BoxShadow( 197 | color: Theme.of(applicationcontext!).dividerColor, 198 | offset: Offset(4, 4), 199 | blurRadius: 8.0), 200 | ], 201 | ); 202 | static get buttonDecoration => BoxDecoration( 203 | color: AppTheme.primaryColor, 204 | borderRadius: BorderRadius.all(Radius.circular(24.0)), 205 | boxShadow: [ 206 | BoxShadow( 207 | color: Theme.of(applicationcontext!).dividerColor, 208 | blurRadius: 8, 209 | offset: Offset(4, 4), 210 | ), 211 | ], 212 | ); 213 | static get searchBarDecoration => BoxDecoration( 214 | color: AppTheme.scaffoldBackgroundColor, 215 | borderRadius: BorderRadius.all(Radius.circular(38)), 216 | boxShadow: [ 217 | BoxShadow( 218 | color: Theme.of(applicationcontext!).dividerColor, 219 | blurRadius: 8, 220 | // offset: Offset(4, 4), 221 | ), 222 | ], 223 | ); 224 | 225 | static get boxDecoration => BoxDecoration( 226 | color: AppTheme.scaffoldBackgroundColor, 227 | borderRadius: BorderRadius.all(Radius.circular(16.0)), 228 | boxShadow: [ 229 | BoxShadow( 230 | color: Theme.of(applicationcontext!).dividerColor, 231 | // offset: Offset(2, 2), 232 | blurRadius: 8, 233 | ), 234 | ], 235 | ); 236 | } 237 | 238 | enum ThemeModeType { 239 | system, 240 | dark, 241 | light, 242 | } 243 | -------------------------------------------------------------------------------- /lib/utils/validator.dart: -------------------------------------------------------------------------------- 1 | class Validator { 2 | static const String _pattern = 3 | "^[a-zA-Z0-9.!#\$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,253}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,253}[a-zA-Z0-9])?)*\$"; 4 | // r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$'; 5 | static RegExp _regex = new RegExp(_pattern); 6 | 7 | static bool validateEmail(String value) { 8 | return _regex.hasMatch(value); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/widgets/common_button.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_hotel_booking_ui/widgets/tap_effect.dart'; 3 | import 'package:flutter_hotel_booking_ui/utils/text_styles.dart'; 4 | 5 | class CommonButton extends StatelessWidget { 6 | final VoidCallback? onTap; 7 | final EdgeInsetsGeometry? padding; 8 | final String? buttonText; 9 | final Widget? buttonTextWidget; 10 | final Color? textColor, backgroundColor; 11 | final bool? isClickable; 12 | final double radius; 13 | const CommonButton({ 14 | Key? key, 15 | this.onTap, 16 | this.buttonText, 17 | this.buttonTextWidget, 18 | this.textColor: Colors.white, 19 | this.backgroundColor, 20 | this.padding, 21 | this.isClickable = true, 22 | this.radius = 24, 23 | }) : super(key: key); 24 | 25 | @override 26 | Widget build(BuildContext context) { 27 | return Padding( 28 | padding: padding ?? EdgeInsets.only(), 29 | child: TapEffect( 30 | isClickable: isClickable!, 31 | onClick: onTap ?? () {}, 32 | child: SizedBox( 33 | height: 48, 34 | child: Card( 35 | shape: RoundedRectangleBorder( 36 | borderRadius: BorderRadius.circular(radius), 37 | ), 38 | color: backgroundColor ?? Theme.of(context).primaryColor, 39 | shadowColor: Colors.black12.withOpacity( 40 | Theme.of(context).brightness == Brightness.dark ? 0.6 : 0.2, 41 | ), 42 | child: Center( 43 | child: buttonTextWidget ?? 44 | Text( 45 | buttonText ?? "", 46 | style: TextStyles(context).getRegularStyle().copyWith( 47 | color: textColor, 48 | fontSize: 16, 49 | ), 50 | ), 51 | ), 52 | ), 53 | ), 54 | ), 55 | ); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /lib/widgets/tap_effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class TapEffect extends StatefulWidget { 4 | const TapEffect( 5 | {Key? key, 6 | this.isClickable = true, 7 | required this.onClick, 8 | required this.child}) 9 | : super(key: key); 10 | 11 | final bool isClickable; 12 | final VoidCallback onClick; 13 | final Widget child; 14 | 15 | @override 16 | _TapEffectState createState() => _TapEffectState(); 17 | } 18 | 19 | class _TapEffectState extends State 20 | with SingleTickerProviderStateMixin { 21 | AnimationController? animationController; 22 | DateTime tapTime = DateTime.now(); 23 | bool isProgress = false; 24 | 25 | @override 26 | void initState() { 27 | animationController = AnimationController( 28 | vsync: this, duration: const Duration(milliseconds: 800)); 29 | animationController!.animateTo(1.0, 30 | duration: const Duration(milliseconds: 0), curve: Curves.fastOutSlowIn); 31 | super.initState(); 32 | } 33 | 34 | @override 35 | void dispose() { 36 | animationController?.dispose(); 37 | super.dispose(); 38 | } 39 | 40 | Future onTapCancel() async { 41 | if (widget.isClickable) { 42 | await _onDelayed(); 43 | animationController!.animateTo(1.0, 44 | duration: const Duration(milliseconds: 240), 45 | curve: Curves.fastOutSlowIn); 46 | } 47 | isProgress = false; 48 | } 49 | 50 | Future _onDelayed() async { 51 | if (widget.isClickable) { 52 | //this logic creator like more press experience with some delay 53 | final int tapDuration = DateTime.now().millisecondsSinceEpoch - 54 | tapTime.millisecondsSinceEpoch; 55 | if (tapDuration < 120) { 56 | await Future.delayed( 57 | Duration(milliseconds: 120 - tapDuration)); 58 | } 59 | } 60 | } 61 | 62 | @override 63 | Widget build(BuildContext context) { 64 | return GestureDetector( 65 | onTap: () async { 66 | if (widget.isClickable) { 67 | await Future.delayed(const Duration(milliseconds: 280)); 68 | try { 69 | if (!isProgress) { 70 | widget.onClick(); 71 | isProgress = true; 72 | } 73 | } catch (_) {} 74 | } 75 | }, 76 | onTapDown: (TapDownDetails details) { 77 | if (widget.isClickable) { 78 | tapTime = DateTime.now(); 79 | animationController!.animateTo(0.9, 80 | duration: const Duration(milliseconds: 120), 81 | curve: Curves.fastOutSlowIn); 82 | } 83 | isProgress = true; 84 | }, 85 | onTapUp: (TapUpDetails details) { 86 | onTapCancel(); 87 | }, 88 | onTapCancel: () { 89 | onTapCancel(); 90 | }, 91 | child: AnimatedBuilder( 92 | animation: animationController!, 93 | builder: (BuildContext context, Widget? child) { 94 | return Transform.scale( 95 | scale: animationController!.value, 96 | origin: const Offset(0.0, 0.0), 97 | child: widget.child, 98 | ); 99 | }, 100 | ), 101 | ); 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/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.8.2" 11 | boolean_selector: 12 | dependency: transitive 13 | description: 14 | name: boolean_selector 15 | url: "https://pub.dartlang.org" 16 | source: hosted 17 | version: "2.1.0" 18 | characters: 19 | dependency: transitive 20 | description: 21 | name: characters 22 | url: "https://pub.dartlang.org" 23 | source: hosted 24 | version: "1.2.0" 25 | charcode: 26 | dependency: transitive 27 | description: 28 | name: charcode 29 | url: "https://pub.dartlang.org" 30 | source: hosted 31 | version: "1.3.1" 32 | clock: 33 | dependency: transitive 34 | description: 35 | name: clock 36 | url: "https://pub.dartlang.org" 37 | source: hosted 38 | version: "1.1.0" 39 | collection: 40 | dependency: transitive 41 | description: 42 | name: collection 43 | url: "https://pub.dartlang.org" 44 | source: hosted 45 | version: "1.15.0" 46 | crypto: 47 | dependency: transitive 48 | description: 49 | name: crypto 50 | url: "https://pub.dartlang.org" 51 | source: hosted 52 | version: "3.0.1" 53 | fake_async: 54 | dependency: transitive 55 | description: 56 | name: fake_async 57 | url: "https://pub.dartlang.org" 58 | source: hosted 59 | version: "1.2.0" 60 | ffi: 61 | dependency: transitive 62 | description: 63 | name: ffi 64 | url: "https://pub.dartlang.org" 65 | source: hosted 66 | version: "1.1.2" 67 | file: 68 | dependency: transitive 69 | description: 70 | name: file 71 | url: "https://pub.dartlang.org" 72 | source: hosted 73 | version: "6.1.2" 74 | flutter: 75 | dependency: "direct main" 76 | description: flutter 77 | source: sdk 78 | version: "0.0.0" 79 | flutter_lints: 80 | dependency: "direct dev" 81 | description: 82 | name: flutter_lints 83 | url: "https://pub.dartlang.org" 84 | source: hosted 85 | version: "1.0.4" 86 | flutter_localizations: 87 | dependency: "direct main" 88 | description: flutter 89 | source: sdk 90 | version: "0.0.0" 91 | flutter_test: 92 | dependency: "direct dev" 93 | description: flutter 94 | source: sdk 95 | version: "0.0.0" 96 | flutter_web_plugins: 97 | dependency: transitive 98 | description: flutter 99 | source: sdk 100 | version: "0.0.0" 101 | font_awesome_flutter: 102 | dependency: "direct main" 103 | description: 104 | name: font_awesome_flutter 105 | url: "https://pub.dartlang.org" 106 | source: hosted 107 | version: "9.2.0" 108 | google_fonts: 109 | dependency: "direct main" 110 | description: 111 | name: google_fonts 112 | url: "https://pub.dartlang.org" 113 | source: hosted 114 | version: "2.1.0" 115 | http: 116 | dependency: transitive 117 | description: 118 | name: http 119 | url: "https://pub.dartlang.org" 120 | source: hosted 121 | version: "0.13.4" 122 | http_parser: 123 | dependency: transitive 124 | description: 125 | name: http_parser 126 | url: "https://pub.dartlang.org" 127 | source: hosted 128 | version: "4.0.0" 129 | intl: 130 | dependency: transitive 131 | description: 132 | name: intl 133 | url: "https://pub.dartlang.org" 134 | source: hosted 135 | version: "0.17.0" 136 | js: 137 | dependency: transitive 138 | description: 139 | name: js 140 | url: "https://pub.dartlang.org" 141 | source: hosted 142 | version: "0.6.3" 143 | lints: 144 | dependency: transitive 145 | description: 146 | name: lints 147 | url: "https://pub.dartlang.org" 148 | source: hosted 149 | version: "1.0.1" 150 | matcher: 151 | dependency: transitive 152 | description: 153 | name: matcher 154 | url: "https://pub.dartlang.org" 155 | source: hosted 156 | version: "0.12.11" 157 | meta: 158 | dependency: transitive 159 | description: 160 | name: meta 161 | url: "https://pub.dartlang.org" 162 | source: hosted 163 | version: "1.7.0" 164 | nested: 165 | dependency: transitive 166 | description: 167 | name: nested 168 | url: "https://pub.dartlang.org" 169 | source: hosted 170 | version: "1.0.0" 171 | path: 172 | dependency: transitive 173 | description: 174 | name: path 175 | url: "https://pub.dartlang.org" 176 | source: hosted 177 | version: "1.8.0" 178 | path_provider: 179 | dependency: transitive 180 | description: 181 | name: path_provider 182 | url: "https://pub.dartlang.org" 183 | source: hosted 184 | version: "2.0.8" 185 | path_provider_android: 186 | dependency: transitive 187 | description: 188 | name: path_provider_android 189 | url: "https://pub.dartlang.org" 190 | source: hosted 191 | version: "2.0.9" 192 | path_provider_ios: 193 | dependency: transitive 194 | description: 195 | name: path_provider_ios 196 | url: "https://pub.dartlang.org" 197 | source: hosted 198 | version: "2.0.7" 199 | path_provider_linux: 200 | dependency: transitive 201 | description: 202 | name: path_provider_linux 203 | url: "https://pub.dartlang.org" 204 | source: hosted 205 | version: "2.1.4" 206 | path_provider_macos: 207 | dependency: transitive 208 | description: 209 | name: path_provider_macos 210 | url: "https://pub.dartlang.org" 211 | source: hosted 212 | version: "2.0.4" 213 | path_provider_platform_interface: 214 | dependency: transitive 215 | description: 216 | name: path_provider_platform_interface 217 | url: "https://pub.dartlang.org" 218 | source: hosted 219 | version: "2.0.1" 220 | path_provider_windows: 221 | dependency: transitive 222 | description: 223 | name: path_provider_windows 224 | url: "https://pub.dartlang.org" 225 | source: hosted 226 | version: "2.0.4" 227 | platform: 228 | dependency: transitive 229 | description: 230 | name: platform 231 | url: "https://pub.dartlang.org" 232 | source: hosted 233 | version: "3.1.0" 234 | plugin_platform_interface: 235 | dependency: transitive 236 | description: 237 | name: plugin_platform_interface 238 | url: "https://pub.dartlang.org" 239 | source: hosted 240 | version: "2.0.2" 241 | process: 242 | dependency: transitive 243 | description: 244 | name: process 245 | url: "https://pub.dartlang.org" 246 | source: hosted 247 | version: "4.2.4" 248 | provider: 249 | dependency: "direct main" 250 | description: 251 | name: provider 252 | url: "https://pub.dartlang.org" 253 | source: hosted 254 | version: "6.0.1" 255 | shared_preferences: 256 | dependency: "direct main" 257 | description: 258 | name: shared_preferences 259 | url: "https://pub.dartlang.org" 260 | source: hosted 261 | version: "2.0.11" 262 | shared_preferences_android: 263 | dependency: transitive 264 | description: 265 | name: shared_preferences_android 266 | url: "https://pub.dartlang.org" 267 | source: hosted 268 | version: "2.0.9" 269 | shared_preferences_ios: 270 | dependency: transitive 271 | description: 272 | name: shared_preferences_ios 273 | url: "https://pub.dartlang.org" 274 | source: hosted 275 | version: "2.0.8" 276 | shared_preferences_linux: 277 | dependency: transitive 278 | description: 279 | name: shared_preferences_linux 280 | url: "https://pub.dartlang.org" 281 | source: hosted 282 | version: "2.0.3" 283 | shared_preferences_macos: 284 | dependency: transitive 285 | description: 286 | name: shared_preferences_macos 287 | url: "https://pub.dartlang.org" 288 | source: hosted 289 | version: "2.0.2" 290 | shared_preferences_platform_interface: 291 | dependency: transitive 292 | description: 293 | name: shared_preferences_platform_interface 294 | url: "https://pub.dartlang.org" 295 | source: hosted 296 | version: "2.0.0" 297 | shared_preferences_web: 298 | dependency: transitive 299 | description: 300 | name: shared_preferences_web 301 | url: "https://pub.dartlang.org" 302 | source: hosted 303 | version: "2.0.2" 304 | shared_preferences_windows: 305 | dependency: transitive 306 | description: 307 | name: shared_preferences_windows 308 | url: "https://pub.dartlang.org" 309 | source: hosted 310 | version: "2.0.3" 311 | sky_engine: 312 | dependency: transitive 313 | description: flutter 314 | source: sdk 315 | version: "0.0.99" 316 | smooth_page_indicator: 317 | dependency: "direct main" 318 | description: 319 | name: smooth_page_indicator 320 | url: "https://pub.dartlang.org" 321 | source: hosted 322 | version: "1.0.0+2" 323 | source_span: 324 | dependency: transitive 325 | description: 326 | name: source_span 327 | url: "https://pub.dartlang.org" 328 | source: hosted 329 | version: "1.8.1" 330 | stack_trace: 331 | dependency: transitive 332 | description: 333 | name: stack_trace 334 | url: "https://pub.dartlang.org" 335 | source: hosted 336 | version: "1.10.0" 337 | stream_channel: 338 | dependency: transitive 339 | description: 340 | name: stream_channel 341 | url: "https://pub.dartlang.org" 342 | source: hosted 343 | version: "2.1.0" 344 | string_scanner: 345 | dependency: transitive 346 | description: 347 | name: string_scanner 348 | url: "https://pub.dartlang.org" 349 | source: hosted 350 | version: "1.1.0" 351 | term_glyph: 352 | dependency: transitive 353 | description: 354 | name: term_glyph 355 | url: "https://pub.dartlang.org" 356 | source: hosted 357 | version: "1.2.0" 358 | test_api: 359 | dependency: transitive 360 | description: 361 | name: test_api 362 | url: "https://pub.dartlang.org" 363 | source: hosted 364 | version: "0.4.3" 365 | typed_data: 366 | dependency: transitive 367 | description: 368 | name: typed_data 369 | url: "https://pub.dartlang.org" 370 | source: hosted 371 | version: "1.3.0" 372 | vector_math: 373 | dependency: transitive 374 | description: 375 | name: vector_math 376 | url: "https://pub.dartlang.org" 377 | source: hosted 378 | version: "2.1.1" 379 | win32: 380 | dependency: transitive 381 | description: 382 | name: win32 383 | url: "https://pub.dartlang.org" 384 | source: hosted 385 | version: "2.3.2" 386 | xdg_directories: 387 | dependency: transitive 388 | description: 389 | name: xdg_directories 390 | url: "https://pub.dartlang.org" 391 | source: hosted 392 | version: "0.2.0" 393 | sdks: 394 | dart: ">=2.15.1 <3.0.0" 395 | flutter: ">=2.5.0" 396 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: flutter_hotel_booking_ui 2 | description: A new Flutter project. 3 | 4 | # The following line prevents the package from being accidentally published to 5 | # pub.dev using `flutter pub publish`. This is preferred for private packages. 6 | publish_to: 'none' # Remove this line if you wish to publish to pub.dev 7 | 8 | # The following defines the version and build number for your application. 9 | # A version number is three numbers separated by dots, like 1.2.43 10 | # followed by an optional build number separated by a +. 11 | # Both the version and the builder number may be overridden in flutter 12 | # build by specifying --build-name and --build-number, respectively. 13 | # In Android, build-name is used as versionName while build-number used as versionCode. 14 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning 15 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. 16 | # Read more about iOS versioning at 17 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html 18 | version: 1.0.0+1 19 | 20 | environment: 21 | sdk: ">=2.15.1 <3.0.0" 22 | 23 | 24 | # Dependencies specify other packages that your package needs in order to work. 25 | # To automatically upgrade your package dependencies to the latest versions 26 | # consider running `flutter pub upgrade --major-versions`. Alternatively, 27 | # dependencies can be manually updated by changing the version numbers below to 28 | # the latest version available on pub.dev. To see which dependencies have newer 29 | # versions available, run `flutter pub outdated`. 30 | dependencies: 31 | flutter: 32 | sdk: flutter 33 | flutter_localizations: 34 | sdk: flutter 35 | 36 | # The following adds the Cupertino Icons font to your application. 37 | # Use with the CupertinoIcons class for iOS style icons. 38 | font_awesome_flutter: ^9.2.0 39 | smooth_page_indicator: ^1.0.0+2 40 | provider: ^6.0.1 41 | google_fonts: ^2.0.0 42 | shared_preferences: ^2.0.11 43 | 44 | dev_dependencies: 45 | flutter_test: 46 | sdk: flutter 47 | 48 | # The "flutter_lints" package below contains a set of recommended lints to 49 | # encourage good coding practices. The lint set provided by the package is 50 | # activated in the `analysis_options.yaml` file located at the root of your 51 | # package. See that file for information about deactivating specific lint 52 | # rules and activating additional ones. 53 | flutter_lints: ^1.0.0 54 | 55 | # For information on the generic Dart part of this file, see the 56 | # following page: https://dart.dev/tools/pub/pubspec 57 | 58 | # The following section is specific to Flutter. 59 | flutter: 60 | 61 | # The following line ensures that the Material Icons font is 62 | # included with your application, so that you can use the icons in 63 | # the material Icons class. 64 | uses-material-design: true 65 | 66 | # To add assets to your application, add an assets section, like this: 67 | assets: 68 | - assets/images/ 69 | - assets/json/ 70 | - lib/language/lang/language_text.json 71 | 72 | # An image asset can refer to one or more resolution-specific "variants", see 73 | # https://flutter.dev/assets-and-images/#resolution-aware. 74 | 75 | # For details regarding adding assets from package dependencies, see 76 | # https://flutter.dev/assets-and-images/#from-packages 77 | 78 | # To add custom fonts to your application, add a fonts section here, 79 | # in this "flutter" section. Each entry in this list should have a 80 | # "family" key with the font family name, and a "fonts" key with a 81 | # list giving the asset and other descriptors for the font. For 82 | # example: 83 | # fonts: 84 | # - family: Schyler 85 | # fonts: 86 | # - asset: fonts/Schyler-Regular.ttf 87 | # - asset: fonts/Schyler-Italic.ttf 88 | # style: italic 89 | # - family: Trajan Pro 90 | # fonts: 91 | # - asset: fonts/TrajanPro.ttf 92 | # - asset: fonts/TrajanPro_Bold.ttf 93 | # weight: 700 94 | # 95 | # For details regarding fonts from package dependencies, 96 | # see https://flutter.dev/custom-fonts/#from-packages 97 | -------------------------------------------------------------------------------- /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_hotel_booking_ui/motel_app.dart'; 10 | import 'package:flutter_test/flutter_test.dart'; 11 | 12 | import 'package:flutter_hotel_booking_ui/main.dart'; 13 | 14 | void main() { 15 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 16 | // Build our app and trigger a frame. 17 | await tester.pumpWidget(MotelApp()); 18 | 19 | // Verify that our counter starts at 0. 20 | expect(find.text('0'), findsOneWidget); 21 | expect(find.text('1'), findsNothing); 22 | 23 | // Tap the '+' icon and trigger a frame. 24 | await tester.tap(find.byIcon(Icons.add)); 25 | await tester.pump(); 26 | 27 | // Verify that our counter has incremented. 28 | expect(find.text('0'), findsNothing); 29 | expect(find.text('1'), findsOneWidget); 30 | }); 31 | } 32 | -------------------------------------------------------------------------------- /web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/web/favicon.png -------------------------------------------------------------------------------- /web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/web/icons/Icon-192.png -------------------------------------------------------------------------------- /web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/web/icons/Icon-512.png -------------------------------------------------------------------------------- /web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Punithraaj/Flutter_Hotel_Booking_UI/c6cd2f285b44c30a06b545797afdc0c4030c0440/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | flutter_hotel_booking_ui 33 | 34 | 35 | 36 | 39 | 103 | 104 | 105 | -------------------------------------------------------------------------------- /web/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "flutter_hotel_booking_ui", 3 | "short_name": "flutter_hotel_booking_ui", 4 | "start_url": ".", 5 | "display": "standalone", 6 | "background_color": "#0175C2", 7 | "theme_color": "#0175C2", 8 | "description": "A new Flutter project.", 9 | "orientation": "portrait-primary", 10 | "prefer_related_applications": false, 11 | "icons": [ 12 | { 13 | "src": "icons/Icon-192.png", 14 | "sizes": "192x192", 15 | "type": "image/png" 16 | }, 17 | { 18 | "src": "icons/Icon-512.png", 19 | "sizes": "512x512", 20 | "type": "image/png" 21 | }, 22 | { 23 | "src": "icons/Icon-maskable-192.png", 24 | "sizes": "192x192", 25 | "type": "image/png", 26 | "purpose": "maskable" 27 | }, 28 | { 29 | "src": "icons/Icon-maskable-512.png", 30 | "sizes": "512x512", 31 | "type": "image/png", 32 | "purpose": "maskable" 33 | } 34 | ] 35 | } 36 | --------------------------------------------------------------------------------