Thank you for Purchasing



BookMyTix - Flutter Flight Booking App UI Kit

Version 1.0.1


  • Created : 25 Apr 2025
  • Latest Update : 5 May 2025

What is BookMyTix?


banner

BookMyTix is a modern, high-quality UI kit designed to help developers quickly build cross-platform flight booking applications. With a clean and user-friendly interface, this template includes all the essential screens needed for a smooth booking experience — from flight search, filtering, and selection to passenger details, seat choice, and confirmation. Built with Flutter, it ensures seamless performance on both Android and iOS devices, making it a perfect solution for travel agencies, airline companies, or travel startups.

What's Inside?
This template features a fully customizable design, responsive layouts, dark and light mode support, and reusable components to speed up development. Whether you're creating a full-featured airline app or a simple travel booking platform, this Flutter template provides a strong foundation with clean code and well-organized structure. Start your travel app project with confidence and deliver a polished, professional user experience.

Template Feature


  • Flutter. Full source code (Dart)
  • Premium designs. Simple and elegant theme color along with dark and light mode
  • 40+ Screens with 100+ Widgets Ready-to-use UI screens, reusable and easy to customized.
  • Various sample screens Home, Flights, Booking, Payment, and many more.
  • Responsive design Support tablet screen
  • Cross-platform support. iOS, Android and Mobile Web
  • Clean architecture & modular design Fully customizable and developer-friendly code structure
  • SVG vector icons, illustrations and font icons.
  • Documentation. Well documented for customization
  • And many more...

Files and Folder Structure


flight_app                          
  ├── README.md
  ├── analysis_options.yaml
  ├── android
  ├── assets          # FONTS AND STATIC LOCAL IMAGES LIKE ILLUSTRATIONS, BANNERS, AND LOGOS
  │   ├── fonts
  │   └── images
  ├── ios
  ├── lib    # THE MAIN FLUTTER SOURCE
  │   ├── app         # HANDLE APP ROUTING FOR EACH SCREEN CATEGORY
  │   │   ├── app_link.dart
  │   │   ├── app_routes.dart
  │   │   ├── routes_auth.dart
  │   │   ├── routes_booking.dart
  │   │   ├── routes_flight.dart
  │   │   ├── routes_payment.dart
  │   │   ├── routes_profile.dart
  │   │   └── routes_ui_collection.dart
  │   ├── constants   # CONSTANT VARIABLES FOR IMAGES, APP NAME, AND ALSO SAMPLE DUMMY DATA
  │   │   ├── dummy_api.dart
  │   │   └── img_api.dart
  │   ├── main.dart
  │   ├── models      # OBJECT STRUCTURE AND DUMMY DATA COLLECTION
  │   │   ├── airport.dart
  │   │   ├── booking.dart
  │   │   ├── category.dart
  │   │   ├── chat.dart
  │   │   ├── city.dart
  │   │   ├── company.dart
  │   │   ├── faq.dart
  │   │   ├── flight_package.dart
  │   │   ├── flight_route.dart
  │   │   ├── general_list.dart
  │   │   ├── list_item.dart
  │   │   ├── news.dart
  │   │   ├── notification.dart
  │   │   ├── plane.dart
  │   │   ├── promo.dart
  │   │   ├── rating.dart
  │   │   ├── reward.dart
  │   │   ├── rewards_history.dart
  │   │   ├── transaction.dart
  │   │   ├── trip.dart
  │   │   ├── user.dart
  │   │   └── voucher.dart
  │   ├── screens       # APP SCREENS AS INDIVIDUAL PAGES OR VIEWS. IT'S CONTAIN RELATED WIDGETS
  │   │   ├── auth
  │   │   ├── booking
  │   │   ├── explore
  │   │   ├── flight
  │   │   ├── home.dart
  │   │   ├── intro
  │   │   ├── messages
  │   │   ├── not_found.dart
  │   │   ├── orders
  │   │   ├── payment
  │   │   ├── profile
  │   │   ├── promo
  │   │   ├── sample_ui
  │   │   └── search
  │   ├── ui              # APP LAYOUT AND THEMING LIKE COLORS, TYPOGRAPHY, AND GLOBAL STYLE
  │   │   ├── layouts
  │   │   └── themes
  │   ├── utils           # FLUTTER UTILITIES AND HELPERS FUNCTIONS
  │   │   ├── animated_slide_horizontal.dart
  │   │   ├── bottom_draggable_sheet.dart
  │   │   ├── check_platforms.dart
  │   │   ├── col_row.dart
  │   │   ├── custom_tooltip.dart
  │   │   ├── expanded_section.dart
  │   │   ├── gallery_viewer.dart
  │   │   ├── grabber_icon.dart
  │   │   ├── image_viewer.dart
  │   │   ├── no_data.dart
  │   │   ├── picker.dart
  │   │   ├── placeholder.dart
  │   │   ├── push_screen.dart
  │   │   └── shimmer_preloader.dart
  │   └── widgets           # FLUTTER WIDGET COLLECTION
  │       ├── action_header
  │       ├── alert_info
  │       ├── app_button
  │       ├── app_input
  │       ├── booking
  │       ├── bottom_nav
  │       ├── cards
  │       ├── chat
  │       ├── counter
  │       ├── decorations
  │       ├── explore
  │       ├── flight
  │       ├── home
  │       ├── notifications
  │       ├── payment
  │       ├── profile
  │       ├── promo
  │       ├── review
  │       ├── search_filter
  │       ├── settings
  │       ├── stepper
  │       ├── tab_menu
  │       ├── title
  │       └── user
  ├── linux
  ├── macos
  ├── pubspec.lock
  ├── pubspec.yaml
  ├── web
  └── windows
                          

Environment Setup


Prerequisites




Windows


1. Install Android Studio
  1. Download Android Studio
  2. Run the Installer
    • Run the downloaded installer executable (e.g., android-studio-ide-<version>-windows.exe).
  3. Follow Installation Wizard
    • Follow the instructions in the installation wizard.
    • Choose a custom installation location if needed.
    • Select the components you want to install (Android Studio, Android Virtual Device, etc.).
  4. Start Android Studio
    • Once the installation is complete, launch Android Studio.
  5. Install SDK Components
    • Android Studio will prompt you to install additional SDK components and tools. Allow it to download and install them.
  6. Set up Emulator (Optional)
    • If you plan to use an emulator, you can create one through the AVD (Android Virtual Device) Manager in Android Studio.

2. Install VS Code
  1. Visual Studio Code 1.86 or later with the Flutter extension for VS Code.
  2. Once it is downloaded, run the installer (VSCodeUserSetup-{version}.exe)

    By default, VS Code is installed under C:\Users\{Username}\AppData\Local\Programs\Microsoft VS Code.


3. Install Flutter SDK
  1. Download Flutter SDK
  2. Visit the official Flutter download page for the  latest version for Windows.
  3. Extract Flutter Archive
  4. Extract the downloaded Flutter zip file to a location on your machine. For example, ‘C:\dev’.
  5. Add Flutter to System Path:
    • Add the flutter\bin directory to your system’s PATH variable.
      • Right-click on “This PC” or “Computer” on your desktop or in File Explorer.
      • Select “Properties” -> “Advanced system settings” -> “Environment Variables.”
      • In the “System variables” section, find and select the “Path” variable, then click “Edit.”
      • Click “New” and add the path to the bin directory inside the Flutter directory.
  6. Verify Flutter Installation
    • Open a new Command Prompt and run ‘flutter doctor’ to check for any dependencies that need to be installed or configured.
  7. Launch VS Code. To integrate Flutter with VS Code, please try to create new project

  8. To open the Command Palette, press Control + Shift + P.

  9. In the Command Palette, type flutter.

  10. Select Flutter: New Project.

  11. VS Code prompts you to locate the Flutter SDK on your computer.

    1. If you have the Flutter SDK installed, click Locate SDK.

    2. If you do not have the Flutter SDK installed, click Download SDK.

      This option sends you the Flutter install page if you have not installed Git for Windows as directed in the development tools prerequisites.

      1. VS Code places you in your user profile to start. Choose a different location.

        Consider %USERPROFILE% or C:\dev.

      2. Click Clone Flutter.

        While downloading Flutter, VS Code displays this pop-up notification:

        Downloading the Flutter SDK. This may take a few minutes.

        This download takes a few minutes. If you suspect that the download has hung, click Cancel then start the installation again.

      3. Once it finishes downloading Flutter, the Output panel displays.

        Checking Dart SDK version...
        Downloading Dart SDK from the Flutter engine ...
        Expanding downloaded archive...

        When successful, VS Code displays this pop-up notification:

        Initializing the Flutter SDK. This may take a few minutes.

        While initializing, the Output panel displays the following:

        
                  Building flutter tool...
                  Running pub upgrade...
                  Resolving dependencies...
                  Got dependencies.
                  Downloading Material fonts...
                  Downloading Gradle Wrapper...
                  Downloading package sky_engine...
                  Downloading flutter_patched_sdk tools...
                  Downloading flutter_patched_sdk_product tools...
                  Downloading windows-x64 tools...
                  Downloading windows-x64/font-subset tools...

        This process also runs flutter doctor -v. At this point in the procedure, ignore this output. Flutter Doctor might show errors that don't apply to this quick start.

        When the Flutter install succeeds, VS Code displays this pop-up notification:

        Do you want to add the Flutter SDK to PATH so it's accessible
                                              in external terminals?
      4. Click Add SDK to PATH.

        When successful, a notification displays:

        The Flutter SDK was added to your PATH
      5. VS Code may display a Google Analytics notice.

        If you agree, click OK.

      6. To enable flutter in all PowerShell windows:

        1. Close, then reopen all PowerShell windows.
        2. Restart VS Code.
  12. When prompted Which Flutter template?, ignore it. Press Esc.

  13. Agree to Android licenses. Before you can use Flutter and after you install all prerequisites, agree to the licenses of the Android SDK platform.
    1. Open an elevated console window.

    2. Run the following command to enable signing licenses.

      C:> flutter doctor --android-licenses

      If you accepted the Android Studio licenses at another time, this command returns:

      [========================================] 100% Computing updates...
                                        All SDK package licenses accepted.

      You can skip the next step.

    3. Before agreeing to the terms of each license, read each with care.

Mac OS


1. Install Android Studio
  1. Download Android Studio
  2. Open the DMG file
    • Open the downloaded DMG file.
    • Drag and drop Android Studio into the “Applications” folder.
  3. Run Android Studio
    • Open the “Applications” folder and launch Android Studio.
  4. Set up Android Studio
    • Complete the Android Studio Setup Wizard.
    • Android Studio may prompt you to install additional components and SDKs. Follow the instructions to install them.

2. Install Xcode
  1. Open the App Store and sign in.

  2. Search for Xcode.

  3. Click Install.

    The Xcode installer takes up 6+ GB of storage. The download might take some time.

  4. To configure the command-line tools to use the installed version of Xcode, use the following commands.

    sudo sh -c 'xcode-select -s /Applications/Xcode.app/Contents/Developer && xcodebuild -runFirstLaunch'

    Use this path for the latest version of Xcode. If you need to use a different version, specify that path instead.

  5. Sign the Xcode license agreement.

    sudo xcodebuild -license
3. Install VS Code
  1. Download Visual Studio Code 1.86 or later with the Flutter extension for VS Code.
  2. Open the browser's download list and locate the downloaded app or archive.

  3. If archive, extract the archive contents. Use double-click for some browsers or select the 'magnifying glass' icon with Safari.

  4. Drag Visual Studio Code.app to the Applications folder, making it available in the macOS Launchpad.

  5. Open VS Code from the Applications folder, by double clicking the icon.

  6. Add VS Code to your Dock by right-clicking on the icon, located in the Dock, to bring up the context menu and choosing Options, Keep in Dock.


4. Install Flutter SDK
  1. Download Flutter SDK
  2. Extract Flutter Archive
    • Open a terminal and navigate to the directory where the archive was downloaded.
    • Extract the archive using the following command tar xf flutter_macos_<version>.tar.xz (replace flutter_macos_<version>.tar.xz with the actual filename)
  3. Move to Installation Location
    • Move the extracted folder to a location of your choice. For example : sudo mv flutter /YOUR_DIRECTORY
  4. Add Flutter to System Path
    • Add the flutter/bin directory to your system’s PATH variable.
  5. Verify Flutter Installation
    • Open a new terminal and run: flutter doctor
  6. Launch VS Code. To integrate Flutter with VS Code, please try to create new project

  7. To open the Command Palette, press Control + Shift + P.

  8. In the Command Palette, type flutter.

  9. Select Flutter: New Project.

  10. When the Select Folder for Flutter SDK dialog displays, choose where you want to install Flutter.

    VS Code places you in your user profile to start. Choose a different location.

    Consider ~/development/

  11. Click Clone Flutter.

    While downloading Flutter, VS Code displays this pop-up notification:

    Downloading the Flutter SDK. This may take a few minutes.

    This download takes a few minutes. If you suspect that the download has hung, click Cancel then start the installation again.

  12. Once it finishes downloading Flutter, the Output panel displays.

    Checking Dart SDK version...
    Downloading Dart SDK from the Flutter engine ...
    Expanding downloaded archive...

    When successful, VS Code displays this pop-up notification:

    Initializing the Flutter SDK. This may take a few minutes.

    While initializing, the Output panel displays the following:

    Building flutter tool...
    Running pub upgrade...
    Resolving dependencies...
    Got dependencies.
    Downloading Material fonts...
    Downloading Gradle Wrapper...
    Downloading package sky_engine...
    Downloading flutter_patched_sdk tools...
    Downloading flutter_patched_sdk_product tools...
    Downloading windows-x64 tools...
    Downloading windows-x64/font-subset tools...

    This process also runs flutter doctor -v. At this point in the procedure, ignore this output. Flutter Doctor might show errors that don't apply to this quick start.

    When the Flutter install succeeds, VS Code displays this pop-up notification:

    Do you want to add the Flutter SDK to PATH so it's accessible
                                    in external terminals?
  13. VS Code may display a Google Analytics notice.

    If you agree, click OK.

  14. To enable flutter in all Terminal windows:

    1. Close, then reopen all Terminal windows.
    2. Restart VS Code.
  15. Install CocoaPods. If your apps depend on Flutter plugins with native iOS code, install CocoaPods. This program bundles various dependencies across Flutter and iOS code.
  16. Install cocoapods following the CocoaPods install guide.

    sudo gem install cocoapods
  17. Launch your preferred text editor.

  18. Open the Zsh environmental variable file ~/.zshenv in your text editor.

  19. Copy the following line and paste it at the end of your ~/.zshenv file.

    bash
    export PATH=$HOME/.gem/bin:$PATH
  20. Save your ~/.zshenv file.

  21. To apply this change, restart all open terminal sessions.

Linux


1. Install Android Studio
  • Download Android Studio
  • Extract the Archive
    • Open a terminal and navigate to the directory where the archive was downloaded.
    • Extract the archive using the following command tar -xvzf android-studio-ide-<version>-linux.tar.gz (replace android-studio-ide-<version>-linux.tar.gz with the actual filename)
  • Move to Installation Location
    • Move the extracted folder to a location of your choice. For example: sudo mv android-studio /YOUR_DIRECTORY
  • Run Android Studio Setup
    • Navigate to the bin directory inside the Android Studio folder: cd /YOUR_DIRECTORY/android-studio/bin
    • Run ‘./studio.sh’ to start the Android Studio setup
  • Follow Installation Wizard
    • Follow the instructions in the setup wizard to complete the installation.
    • Choose a custom installation location if needed.

2. Install VS Code
  1. The easiest way to install Visual Studio Code for Debian/Ubuntu based distributions is to download and install the .deb package (64-bit), either through the graphical software center if it's available, or through the command line with:

    sudo apt install ./<file>.deb
                                  
    # If you're on an older Linux distribution, you will need to run this instead:
    # sudo dpkg -i <file>.deb
    # sudo apt-get install -f # Install dependencies
    
    Note

    Other binaries are also available on the VS Code download page.

    When you install the .deb package, it prompts to install the apt repository and signing key to enable auto-updating using the system's package manager.

  2. To automatically install the apt repository and signing key, such as on a non-interactive terminal, run the following command first:

    echo "code code/add-microsoft-repo boolean true" | sudo debconf-set-selections
                                  
  3. To manually install the apt repository:

    1. Run the following script:

      sudo apt-get install wget gpg
      wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
      sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg
      echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" |sudo tee /etc/apt/sources.list.d/vscode.list > /dev/null
      rm -f packages.microsoft.gpg
                                    
    2. Then update the package cache and install the package using:

      sudo apt install apt-transport-https
      sudo apt update
      sudo apt install code # or code-insiders
      

3. Install Flutter SDK
  • Download Flutter SDK
  • Extract Flutter Archive
    • Open a terminal and navigate to the directory where the archive was downloaded.
    • Extract the archive using the following command tar xf flutter_linux_<version>.tar.xz (replace flutter_linux_<version>.tar.xz with the actual filename)
  • Move to Installation Location
    • Move the extracted folder to a location of your choice. For example: sudo mv flutter /YOUR_DIRECTORY
  • Add Flutter to System Path
    • Add the flutter/bin directory to your system’s PATH variable.
  • Verify Flutter Installation
    • Open a new terminal and run: flutter doctor
  • Launch VS Code. To integrate Flutter with VS Code, please try to create new project

  • To open the Command Palette, press Control + Shift + P.

  • In the Command Palette, type flutter.

  • Select Flutter: New Project.

  • VS Code prompts you to locate the Flutter SDK on your computer.

    1. If you have the Flutter SDK installed, click Locate SDK.

    2. If you do not have the Flutter SDK installed, click Download SDK.

      This option sends you the Flutter install page if you have not installed Git as directed in the development tools prerequisites.

      1. When the Select Folder for Flutter SDK dialog displays, choose where you want to install Flutter.

        VS Code places you in your user profile to start. Choose a different location.

        Consider ~/development/

      2. Click Clone Flutter.

        While downloading Flutter, VS Code displays this pop-up notification:

        Downloading the Flutter SDK. This may take a few minutes.

        This download takes a few minutes. If you suspect that the download has hung, click Cancel then start the installation again.

      3. Once it finishes downloading Flutter, the Output panel displays.

        Checking Dart SDK version...
        Downloading Dart SDK from the Flutter engine ...
        Expanding downloaded archive...

        When successful, VS Code displays this pop-up notification:

        Initializing the Flutter SDK. This may take a few minutes.

        While initializing, the Output panel displays the following:

        Building flutter tool...
        Running pub upgrade...
        Resolving dependencies...
        Got dependencies.
        Downloading Material fonts...
        Downloading Gradle Wrapper...
        Downloading package sky_engine...
        Downloading flutter_patched_sdk tools...
        Downloading flutter_patched_sdk_product tools...
        Downloading windows-x64 tools...
        Downloading windows-x64/font-subset tools...

        This process also runs flutter doctor -v. At this point in the procedure, ignore this output. Flutter Doctor might show errors that don't apply to this quick start.

        When the Flutter install succeeds, VS Code displays this pop-up notification:

        Do you want to add the Flutter SDK to PATH so it's accessible
                                              in external terminals?
      4. VS Code may display a Google Analytics notice.

        If you agree, click OK.

      5. To enable flutter in all Terminal windows:

        1. Close, then reopen all Terminal windows.
        2. Restart VS Code.
  • When prompted Which Flutter template?, ignore it. Press Esc. You can create a test project after checking your development setup.

  • Agree to Android licenses. Before you can use Flutter and after you install all prerequisites, agree to the licenses of the Android SDK platform.
    1. Open an elevated console window.

    2. Run the following command to enable signing licenses.

      flutter doctor --android-licenses

      If you accepted the Android Studio licenses at another time, this command returns:

      [========================================] 100% Computing updates...
                                        All SDK package licenses accepted.

      You can skip the next step.

    3. Before agreeing to the terms of each license, read each with care.

Installation and Running App


Install Dependencies


BookMyTix is built on Flutter. To begin, it’s essential to verify that your Flutter and Integrated Development Environment (IDE) setup has been configured accurately
  • Connect to the internet
  • Execute the command flutter doctor in your terminal. If any issues arise during this process, make sure to address and resolve them promptly.
  • Then open your project. Once the project is open, VS Code may prompt you to install the dependencies. Click Install Dependencies
  • If not, you can run the flutter pub get from the terminal in the project directory to fetch the dependencies.
  • And for the another way, you can open pubspec.yaml
  • Click icon on top right corner
  • Wait until dependencies installation finish
  • After the dependencies are installed, you should be able to run the app.

Run and Debug App

  • Using VS Code's built-in debugging features, such as setting breakpoints.
  • Open lib/main.dart
  • Click menu Run > Start Debuging (F5)
    run
  • Selecting a target device. When a Flutter project is open in VS Code, you should see a set of Flutter specific entries in the status bar, including a Flutter SDK version and a device name (or the message No Devices)
    device

Build & Deployment


Build Android

  1. Open Terminal Console
  2. Run the following command to build the APK
    flutter build apk
  3. Wait until finish. And the APK built result will be placed inbuild/app/outputs/flutter-apk/app-release.apk
  4. This command will compile your Flutter code and generate the APK file. You can find the APK in the build/app/outputs/flutter-apk directory inside your project folder. The APK file will be named something like app-release.apk or app-debug.apk.
  5. By using the above command, you will get a larger merged apk with this. But you can split them with this command
    flutter build apk --target-platform android-arm,android-arm64,android-x64 --split-per-abi
  6. With this command, Flutter will generate three APKs, use one of them which is compatible with your device.
  7. When you're ready to prepare a release version of your app, for example to publish to the Google Play Store, this page can help. Before publishing, you might want to put some finishing touches on your app. This guide explains how to perform the following tasks:
  8. For more deploying documentations please follow this documentation: https://docs.flutter.dev/deployment/android       
build

Build iOS

  1. Open Explorer File in VS Code. Right click on the ios folder
    ios
  2. It will open Xcode. On Left Sidebar click Runner. And then choose tab Signing & Capabilities > All
  3. Expand Signing, then Select Team
    xcode
  4. Open terminal and locate to your project.
  5. Run the following command to build the Runner.app
    flutter build ios
  6. Wait until finish. And the Runner.app built result will be placed in build/ios/iphoneos/Runner.app runner
  7. There is no general way to generate apps for iOS. Apple doesn’t allow you to install apps like this. If you want to install it on your iOS device, then you have to deploy it on TestFlight or AppStore. For deploying it, please follow this documentation: https://docs.flutter.dev/deployment/ios 


Build and Deploy Web

  1. Open terminal and locate to your project.
  2. Run the following command to build the web app:
    flutter build web
  3. Wait until finish. And the APK built result will be placed in build/web web
  4. To deploy it, copy all files inside web/ folder to your web server or cloud hosting
  5. When you are ready to deploy your app, upload the buld web release to Vercel or a similar service. Here are a few possibilities, but there are many others:
  6. Example with Vercel. Open terminal and locate your project, go to build/web, and run this command:
    vercel deploy --prod
  7. Follow the instruction and wait until deployment finish.
    vercel
  8. Open production link in browser

Troublehooting


Here's most common error problem when build and debug the project

  • The NDK version 29.0.13113456 can be install manually by going into android studio -> SDK manager -> SDK tools. Select the show package detail checkbox.
  • You will be able to see all the NDK versions available.
  • More details: https://developer.android.com/studio/projects/install-ndk#specific-version
studio
  • This issue sometimes appear when build Android App or Debuging in Android Device or Emulator.
  • Open Explorer File in VS Code. Right click on the android folder
    studio
  • In Android studio will show notification on the right bottom to upgrade AGP
    studio
  • Click Start AGP Upgrade Assistant
  • It will download and install Graddle library and take sometime. Wait until finish.
  • Run build or debug again
  • Fixed by updating flutter and cocoa pods to the latest version.
  •                                       
    flutter clean
    rm -Rf ios/Pods
    rm -Rf ios/.symlinks
    rm -Rf ios/Flutter/Flutter.framework
    rm -Rf ios/Flutter/Flutter.podspec
    flutter pub get
    cd ios
    pod install # (or on an M1+ mac: arch -x86_64 pod install)
    cd ..
    flutter build ios
    flutter run
                                          
                                        
  • Accept the latest apple developer agreement by logging with Account Holder credentials in to https://developer.apple.com
  • Open ios/ folder in Xcode. On Left Sidebar click Runner. And then choose tab Signing & Capabilities > All Expand Signing, then Select Team
  • it will auto generate all certificates. But note that they all are created virtually, so cannot see anywhere in your account or keychain, then also you are able to run or install application in your device.
  • Try run buid or debug the project again


Basic Code Structure


Main

/lib/main.dart We know that any programming language has the main entry point. This means that this is where our program first gets programmatically executed. So in dart we also have this, main () function.

code   code

This template uses GetX, so we added "Get" before your MaterialApp, turning it into GetMaterialApp. This does not modify the MaterialApp of the Flutter, GetMaterialApp is not a modified MaterialApp, it is just a pre-configured Widget, which has the default MaterialApp as a child. GetMaterialApp is necessary for routes, snackbars, internationalization, bottomSheets, dialogs, and high-level apis related to routes and absence of context. See more references about GetX

Change App Logo and Name


To change App logo and App Icon you need to follow these steps :

App Logo
  • Go to <project>/assets/images/ and replace app_logo.png with your own logo.
  • Recomended size is 1024x1024 pixels



App Icon

You can generate your app icon using this site appicon.co

  • For Android go to /android/app/src/main/res and replace all mipmap folders with your <generated icon>/android folder.
  • For iOS go to /ios/Runner/Assets.xcassets and replace AppIcon.appiconset with your generated Assets.xcassets folder.



App Name

You need to set your app name in three different places.

  • Go to <project>/lib/constants/app_const.dart and set the value of branding.name
    // Project
    Company branding = Company(
      id: '1',
      name: 'Flight App',
      // rest code
    );
  • Change the value of label from <project>/android/app/src/main/AndroidManifest.xml
    android:label="YOUR_APP_NAME"
  • Change the value of CFBundleName from <project>/iOS/Runner/info.plist
    
    <key>CFBundleDisplayName</key>
    <string>YOUR_APP_NAME</string>
    <key>CFBundleName</key>
    <string>YOUR_APP_NAME</string>                         
                                



Change App Package
  1. First, you have to find out the existing package name.
  2. You can find it out from the top of the android/app/src/main/AndroidManifest.xml file.
  3. Now right-click on the project folder and click on replace in the path. You will get a popup window with two input boxes. In the first box, you have to put the existing package name that you saw in the AndroidManifest.xml file previously and write down your preferred package name in the second box
  4. And then click on the Replace All button.

Create Widgets and Screen


Create new widget

  1. Open VS Code and create new dart file in lib/widgets. For example my_widget.dart
  2. Open the file, then start type stl then pres crtl or control + space. Then the autocomplete options will show and choose Flutter Stateless Widget or Flutter Stateful Widget
    stl
    Here's the references for Flutter Widget type: https://docs.flutter.dev/ui/interactivity#stateful-and-stateless-widgets
  3. In this documentation, lets choose Flutter Stateless Widget. And will autometically generated this code
                            
    // lib/widgets/my_widget.dart
    
    import 'package:flutter/material.dart';
    
    class MyWidget extends StatelessWidget {
      const MyWidget({super.key});
    
      @override
      Widget build(BuildContext context) {
        return const Placeholder();
      }
    }
                            
                          
  4. Start build your widget inside Widget build
                            
    // lib/widgets/my_widget.dart
    
    import 'package:flutter/material.dart';
    
    class MyWidget extends StatelessWidget {
      const MyWidget({super.key});
    
      @override
      Widget build(BuildContext context) {
        return Container(
          padding: const EdgeInsets.all(16.0),
          color: Colors.blue,
          child: const Text(
            'Hello, World!',
            style: TextStyle(color: Colors.white, fontSize: 18),
          ),
        );
      }
    }
                            
                          



Create new screen

  1. Basically screen is widget. The screen contain some related widgets and it's registered to the application routing.
  2. Open VS Code and create new dart file in lib/screens. For example my_screen.dart
  3. Open the file, then start type stl then pres crtl or control + space. Then the autocomplete options will show and choose Flutter Stateless Widget or Flutter Stateful Widget
    stl
    Here's the references for Flutter Widget type: https://docs.flutter.dev/ui/interactivity#stateful-and-stateless-widgets
  4. Choose Flutter Stateless Widget. And use Scaffold widget to enable the basic screen layout like AppBar, BottomNav, Back Nav, Action Button, Drawer, etc. Don't forget to add MyWidget that we created before to this screen
                            
    // lib/screens/my_screen.dart
    
    import 'package:flutter/material.dart';
    import 'package:flight_app/widgets/my_widget.dart';
    
    class MyScreen extends StatelessWidget {
      const MyScreen({super.key});
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: const Text('My Widget'),
          ),
          body: const MyWidget()
        );
    }                        
                            
                          
  5. Registering screen to app router. Open lib/app/app_routes.dart. Then add new routing to MyScreen with '/myscreen' path
                            
    import 'package:flight_app/screens/my_screen.dart';
    
    final List<GetPage> appRoutes = [
      GetPage(
        name: '/myscreen',
        page: () => GeneralLayout(content: MyScreen()),
      ),
      // rest code
    ]
                            
                          
    You can also put the string path to lib/app/app_link
  6. Now you can navigate to the MyScreen from anywhere. Example for navigation to the MyScreen when button onPress/onTap
                            
    FilledButton(
      onPressed: () {
        Get.toNamed('/myscreen');
        // You can also use AppLink if you already registered the route path to lib/app/app_link.dart
        // Get.toNamed(AppLink.myScreen);
      },
      child: Text('Go to My Screen'),
    )
                            
                          

Theme and Layout


Theme Data

/lib/ui/themes/theme_data.dart

Theme Data class defines the configuration of the overall visual Theme for a MaterialApp or a widget subtree within the app. The MaterialApp theme property can be used to configure the appearance of the entire app. Widget subtrees within an app can override the app's theme by including a Theme widget at the top of the subtree.

Theme Data can handle dynamic color base on Dark on Light Mode Device. All Theme Data values, can be accessed from /lib/ui/themes/theme_palette.dart with colorScheme(context)


import 'package:flight_app/ui/themes/theme_palette.dart';

Container(
  height: 100,
  padding: EdgeInsets.all(spacingUnit(2)),
  decoration: BoxDecoration(
    color: colorScheme(context).primaryContainer,
  ),
  child: const Text('Lorem ipsum dolor')
),
                    

The background color will adapt to the device light/dark mode. The primary color will be lighten on light mode and darken when dark mode



Theme Button

/lib/ui/themes/theme_button.dart

This is a global styling for variant buttons style including sizes and colors


import 'package:flight_app/ui/themes/theme_button.dart';

FilledButton(
  onPressed: () {},
  style: ThemeButton.btnBig.merge(ThemeButton.primary),
  child: const Text('SAVE', style: ThemeText.subtitle2)
),
                  

button


Theme Spacing

/lib/ui/themes/theme_spacing.dart
  • Spacing unit uses for padding, margin, and other spacing to make ui consistent. The spacing unit base on 8px, that mean if you use spacingUnit(3) it's equal 24px

    
        import 'package:flight_app/ui/themes/theme_spacing.dart';
    
        Container(
          height: 100,
          padding: EdgeInsets.all(spacingUnit(3)),
          child: const Text('Lorem ipsum dolor')
        ),                    
                          
  • Vertical Spacing is a Blank Space Widget uses for vertical separator between section.
    • VSpaceShort(): 16px
    • VSpace(): 24px
    • VSpaceBig(): 48px
    
    import 'package:flight_app/ui/themes/theme_spacing.dart';
    
    Column(
      children: [
        const MyWidget(),
        const VSpace(),
        const OtherWidget(),
      ]
    );
                          



Theme Breakpoints

/lib/ui/themes/theme_breakpoints.dart

Theme Breakpoints is helper class to check screen size and layout constraint

  • ThemeSize: This class has static values that defined every common screen sizes
    
    class ThemeSize {
      static double xs = 480;
      static double sm = 600;
      static double md = 768;
      static double lg = 960;
      static double xl = 1280;
      static double xxl = 1536;
    }                      
                          

    Example usage:

    
    import 'package:flight_app/ui/themes/theme_breakpoints.dart';
    
    ConstrainedBox(
      constraints: BoxConstraints(
        maxWidth: ThemeSize.sm 
      ),         
    )
                          
  • ThemeBreakpoints: This class is used to check screen size. It has 2 type, up to check minimum size of screen and down to check maximum size of screen. In this template mostly using up for Mobile First Responsive.
    
    import 'package:flight_app/ui/themes/theme_breakpoints.dart'; 
    
    Container(
      height: ThemeBreakpoints.mdUp(context) ? 280 : 320, 
    )
                          
  • ThemeConstraint: This class similiar like ThemeBreakpoints, but it has constraint parameter. You can use it with LayoutBuilder to get and set the constraint value.
    
    import 'package:flight_app/ui/themes/theme_breakpoints.dart'; 
    
    LayoutBuilder(
      builder: (context, constraints) {
        return Container(
          height: ThemeConstraint.mdUp(constraints) ? 280 : 320, 
        )
      }
    );
                          
  • ThemeConstraint: This class similiar like ThemeBreakpoints, but it has constraint parameter. You can use it with LayoutBuilder to get and set the constraint value.
    
    import 'package:flight_app/ui/themes/theme_breakpoints.dart'; 
    
    LayoutBuilder(
      builder: (context, constraints) {
        return Container(
          height: ThemeConstraint.mdUp(constraints) ? 280 : 320, 
        )
      }
    );
                          



Theme Radius and Shadow

/lib/ui/themes/theme_radius.dart and /lib/ui/themes/theme_shadow.dart
shade
  • Theme Radius is a BorderRadiusGeomentry using BorderRadius.circular which has same radius value on each corner
    
    import 'package:flight_app/ui/themes/theme_radius.dart';
    
    Container(
      decoration: BoxDecoration(
        borderRadius: ThemeRadius.small,
        color: Colors.amber,
      ),
    )
                          
  • Theme Shadow is the global style for shadow shadeSoft, shadeMedium, and shadeHard
    
    import 'package:flight_app/ui/themes/theme_shadow.dart';                      
    
    Container(
      width: 180,
      decoration: BoxDecoration(
        color: colorScheme(context).surface,
        borderRadius: ThemeRadius.medium,
        boxShadow: [ThemeShade.shadeSoft(context)],
      ),
    )
                          



Layout

This template has 2 layouts Home Layout and General Layout

  • Home Layout has Bottom Menu for main app navigation.
    layout
    
        import 'package:flight_app/ui/layouts/home_layout.dart';
    
        GetPage(
          name: AppLink.myTicket,
          page: () => const HomeLayout(content: OrderList()),
          transition: Transition.fadeIn,
          transitionDuration: const Duration(milliseconds: pageTransitionDuration)
        ),                      
                              
  • General Layout doesn't have any additional widget, just blank layout with constraint maxWidth: 1024 and minHeight: 480
    layout
    
    import 'package:flight_app/ui/layouts/general_layout.dart';
    
    GetPage(
      name: AppLink.formSample,
      page: () => const GeneralLayout(content: FormInputCollection()),
    ),                   
                          

Font and Color


Font

/lib/ui/themes/theme_text.dart

Theme text is used for Typography styling


import 'package:flight_app/ui/themes/theme_text.dart';

Column(children: {
  Text('Title', style: style: ThemeText.title),
  Text('Title2', style: style: ThemeText.title2),
  Text('Subtitle', style: style: ThemeText.subtitle),
  Text('Subtitl2', style: style: ThemeText.subtitle2),
  Text('Paragraph', style: style: ThemeText.paragraph),
  Text('Paragraph Bold', style: style: ThemeText.paragraphBold),
  Text('Caption', style: style: ThemeText.caption),
})
                    
font

Color

/lib/ui/themes/theme_palette.dart

ThemePalette object is a color palette collection: primary, secondary, tertiary.


import 'package:flight_app/ui/themes/theme_palette.dart';

Container(
  height: 100,
  padding: EdgeInsets.all(spacingUnit(2)),
  decoration: BoxDecoration(
    color: ThemePalette.primaryMain,
  ),
  child: const Text('Lorem ipsum dolor')
),
                    

color

Install Dependencies

You can get flutter dependencies from https://pub.dev/


  • Find dependencies you want from https://pub.dev/ or from VS Code
  • In VS Code, click search on the top, and type ">"
  • Some option will show, choose Dart: Add Dependency
  • Type package name, then press Enter. It will download the dependecy and listed in the pubspec.yaml
pub

The another way, you can copy and paste the dependency name with spesific version to pubspec.yaml, then save and it will automatically download the dependency. If not you can run flutter pub dev

External Reference

Here's some external reference of library that we used




Sources and Credit


Fonts :
Ubuntu

Preview Images Used
Unsplash
Pixabay
randomuser.me

Note: All images are just used for Preview Purpose Only. They are not part of the template and NOT included in the final purchase files.


Credits
Name Package Repository License
carousel_slider https://pub.dev/packages/carousel_slider MIT
change_case https://pub.dev/packages/change_case MIT
cupertino_icons https://pub.dev/packages/cupertino_icons MIT
flutter https://github.com/flutter/flutter BSD-3-Clause license
flutter_form_builder https://pub.dev/packages/flutter_form_builder MIT
flutter_markdown https://pub.dev/packages/flutter_markdown BSD-3-Clause
flutter_sticky_header https://pub.dev/packages/flutter_sticky_header MIT
flutter_svg https://pub.dev/packages/flutter_svg MIT
flutter_svg_provider https://pub.dev/packages/flutter_svg_provider Apache-2.0
flutter_timer_countdown: ^1.0.7 https://pub.dev/packages/flutter_timer_countdown MIT
font_awesome_flutter https://pub.dev/packages/font_awesome_flutter MIT
form_builder_validators https://pub.dev/packages/form_builder_validators BSD-3-Clause
get https://pub.dev/packages/get MIT
intl https://pub.dev/packages/intl BSD-3-Clause
overlay_tooltip https://pub.dev/packages/overlay_tooltip BSD-3-Clause
photo_view https://pub.dev/packages/photo_view MIT
pinput https://pub.dev/packages/pinput MIT
scroll_to_hide https://pub.dev/packages/scroll_to_hide MIT
shared_preferences https://pub.dev/packages/shared_preferences BSD-3-Clause
shimmer https://pub.dev/packages/shimmer BSD-3-Clause
url_launcher https://pub.dev/packages/url_launcher BSD-3-Clause
zoom_tap_animation https://pub.dev/packages/zoom_tap_animation MIT

Online Suport


If you have any questions about customization of this template wich are not covered in the documentation feel free to ask a question in the comment section or contact me directly via e-mail form on my profile page.

A product by Ilham Meidi Brata



Enjoy and don’t forget to rate my template.

Thank you very much!

Change Log


Version 1.0.1 – 5 May, 2025
Add splash screen for web version
Version 1.0 – 25 Apr, 2025
BookMyTix released