devsnack
Documentation

Flutter E-Commerce UI Kit documentation

Run it, point it at your own accounts, ship it under your own brand. Written against version 1.1.0 of the download you get on CodeCanyon.

$11 on CodeCanyon
  • Version v1.1.0
  • Updated Apr 2026
  • Platform Flutter
  • Stack Flutter · Material 3
On this page
01

Introduction

A premium, production-ready e-commerce mobile app template built with Flutter. Light & dark mode, deep checkout flow with promos & shipping options, a write-a-review composer, reusable component library, Provider state management, and Material Design 3.

  • 25+ beautiful screens
  • 10 state providers
  • 14+ data models
  • Light & dark theme modes

Key features

Everything you need to build a professional e-commerce mobile application.

Deep checkout flow
Shipping method picker, promo & coupon codes (percent / fixed / free-shipping), tax calculation, order notes, and real order persistence into My Orders.
Light & dark mode
System-aware theme switching with a matched dark palette — every screen and component works in both modes out of the box.
Premium design system
Refined monochromatic aesthetic with tonal layering, diffused shadows, and centralized design tokens (spacing, radii, shadows, motion).
Reusable component library
Six production-ready widgets (AppButton, AppInput, AppCard, AppChip, AppSection, AppScaffold) that drop into any screen without rewriting styling.
Write & read reviews
Full-screen review composer with a star picker, live character counter, and input validation — plus the read experience with sorting and rating filters.
Clean architecture
Well-organized codebase with separation of concerns: Models, DataSources, Repositories, Providers, and Screens — with dependency injection throughout.
Material Design 3
Modern UI following Google’s Material Design 3 guidelines with dynamic color system.
Google Maps integration
Real-time order tracking with map visualization, custom markers, and route display.
Ready to customize
Mock JSON data makes it easy to connect your own backend API with minimal changes.

What’s included

A comprehensive set of screens covering all e-commerce needs.

Home & discovery
Banner carousel slider
Category navigation
Product grid with filters
Sort by price, rating, newest
Search & browse
Real-time product search
Recent searches history
Product details with variants
Read & write reviews with star picker
Cart & checkout
Cart management & multi-select
Shipping method picker (Standard / Express / Priority)
Promo & coupon codes with validation
Tax, order notes & order persistence
Orders & tracking
Ongoing/completed orders
Order status tracking
Google Maps integration
Driver info & contact
Account management
User profile editing
Address management
Payment methods
Notifications center
Authentication
Login screen
Social login buttons
Forgot password flow
Form validation
02

Tech stack

Built with modern and reliable technologies.

  • Flutter 3.x
  • Dart 3.x
  • Provider
  • Material 3
  • Dark mode
  • Google Maps
  • Plus Jakarta Sans
  • SVG support
03

Requirements

Make sure you have the following tools installed:

Flutter SDK 3.10.4 or higher
Download from flutter.dev
Dart SDK 3.10.4 or higher
Included with Flutter SDK
Android Studio / VS Code
With Flutter and Dart plugins installed
Android SDK / Xcode
For Android or iOS development respectively
Google Maps API key (optional)
Required for order tracking map feature
04

Installation

Follow these steps to get started.

  1. 01

    Extract the project

    Extract the downloaded zip file to your desired location.

    terminal
    cd path/to/e_commerce_ui_template
  2. 02

    Install dependencies

    Run the following command to install all required packages:

    terminal
    flutter pub get

    This will install the following dependencies:

    • provider — State management
    • flutter_svg — SVG rendering
    • google_fonts — Custom fonts
    • google_maps_flutter — Maps integration
    • share_plus — Native sharing
    • intl — Internationalization
    • http — HTTP requests
    • uuid — Unique ID generation
  3. 03

    Configure Google Maps (optional)

    To enable the order tracking map feature and Places autocomplete, add your Google Maps API key — see Google Maps (optional).
  4. 04

    Run the app

    Connect a device or start an emulator, then run:

    terminal
    flutter run

    Or use your IDE’s run button to launch the app.

    Success! The app should now be running on your device or emulator.

05

Google Maps (optional)

To enable the order tracking map feature and Places autocomplete, you need to add your Google Maps API key in multiple locations.

Note
The app will work without Google Maps configuration, but the tracking map screen and address picker will not display properly.
  1. 01

    Update environment config

    Edit lib/core/config/env.dart and replace the API key:

    lib/core/config/env.dart
    class Env {
      Env._();
    
      /// Google Maps API Key
      /// Used for Google Maps SDK and Places API
      static const String googleMapsApiKey = 'YOUR_API_KEY_HERE';
    }
    Warning
    Security: For production apps, consider using environment variables or a secure secrets manager instead of hardcoding API keys. Add this file to .gitignore to prevent committing sensitive data.
  2. 02

    Configure Android

    Edit android/app/src/main/AndroidManifest.xml and add your API key:

    android/app/src/main/AndroidManifest.xml
    <manifest ...>
        <application ...>
            <meta-data
                android:name="com.google.android.geo.API_KEY"
                android:value="YOUR_API_KEY_HERE"/>
        </application>
    </manifest>
  3. 03

    Configure iOS

    Edit ios/Runner/AppDelegate.swift and add your API key:

    ios/Runner/AppDelegate.swift
    import GoogleMaps
    
    @main
    @objc class AppDelegate: FlutterAppDelegate {
      override func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
      ) -> Bool {
        GMSServices.provideAPIKey("YOUR_API_KEY_HERE")
        GeneratedPluginRegistrant.register(with: self)
        return super.application(application, didFinishLaunchingWithOptions: launchOptions)
      }
    }
06

Project structure

Understanding the codebase organization.

e_commerce_ui_template/
lib/
├── config/
│   └── routes/                      # Route configuration
│       └── app_routes.dart          # Route definitions
├── core/
│   ├── config/
│   │   └── env.dart                 # API keys & environment
│   └── utils/                       # Utilities
│       ├── currency_formatter.dart  # Price formatting
│       └── json_loader.dart         # JSON file loader
├── data/
│   ├── datasources/local/           # Local data sources
│   ├── models/                      # Data models
│   ├── providers/                   # State providers
│   └── repositories/                # Repository layer
├── screens/                         # Feature screens
│   ├── account/
│   ├── address/
│   ├── auth/
│   ├── carts/
│   ├── checkout/
│   ├── discover/
│   ├── favorites/
│   ├── notification/
│   ├── orders/
│   ├── payment_methods/
│   ├── product_details/
│   ├── product_reviews/
│   ├── search/
│   └── main_screen.dart             # Bottom nav container
├── theme/                           # App theming
│   └── app_theme.dart               # Material 3 theme
├── widgets/                         # Reusable widgets
└── main.dart                        # App entry point

assets/
├── icons/                           # SVG icons
├── images/                          # Product images
└── mock_data/                       # JSON mock data
    ├── products.json
    ├── categories.json
    ├── carts.json
    ├── favorites.json
    ├── addresses.json
    ├── payment_methods.json
    ├── orders.json
    ├── notifications.json
    ├── reviews.json
    └── banner.json
07

Architecture

Built with scalable and maintainable architecture patterns.

JSON FilesLocalDataSourceRepository ProviderScreen UI

Model layer

Data classes with fromJson() factory constructors for JSON deserialization.

lib/data/models/
class ProductModel {
  final String id;
  final String name;

  factory ProductModel.fromJson(
    Map<String, dynamic> json) {
    return ProductModel(
      id: json['id'],
      name: json['name'],
    );
  }
}

DataSource layer

Loads JSON data and maps to models. Replace with API calls for production.

lib/data/datasources/local/
class ProductLocalDataSource {
  Future<List<ProductModel>>
    getProducts() async {
    final jsonList = await JsonLoader
      .loadJsonList('products.json');
    return jsonList
      .map(ProductModel.fromJson)
      .toList();
  }
}

Repository layer

Abstraction layer with dependency injection for easy testing and swapping implementations.

lib/data/repositories/
class ProductRepository {
  final ProductLocalDataSource
    _localDataSource;

  ProductRepository({
    ProductLocalDataSource?
      localDataSource})
    : _localDataSource =
      localDataSource ??
      ProductLocalDataSource();
}

Provider layer

State management using ChangeNotifier. Exposes data and loading states to UI.

lib/data/providers/
class ProductProvider
  extends ChangeNotifier {
  List<ProductModel> _products = [];
  bool _isLoading = false;

  Future<void> loadProducts() async {
    _isLoading = true;
    notifyListeners();
    _products = await _repository
      .getProducts();
    _isLoading = false;
    notifyListeners();
  }
}
08

Shopping screens

Detailed breakdown of every screen and functionality.

Discover / home screen

The main landing screen featuring product discovery and browsing capabilities.

Banner carousel
Auto-sliding image carousel showcasing featured products and promotions
Category navigation
Horizontal scrollable category list with icons for quick filtering
Product grid
Responsive grid displaying products with image, name, rating, and price
Filtering
Filter products by price range, categories, and ratings
Sorting
Sort by relevance, price (low-high, high-low), newest, or ratings
Notification badge
Shows unread notification count in the app bar

Product details screen

Comprehensive product view with all purchase-related actions.

Image gallery
Full-screen product image carousel with pagination indicators
Product info
Title, rating (clickable to reviews), and price display
Size/variant selection
Selectable product variants with stock availability indicators
Quantity selector
Increment/decrement controls with maximum quantity limits
Description
Expandable product description text
Add to cart
Bottom bar with total price calculation and add to cart button
Favorite toggle
Heart button to add/remove from wishlist
Share product
Share product via native share sheet

Product reviews screen

Customer reviews and ratings with filtering capabilities.

Average rating
Large display of overall product rating
Rating distribution
Visual chart showing breakdown of 1-5 star ratings
Review cards
Individual reviews with user avatar, name, date, rating, and comment
Helpful count
Shows how many users found each review helpful
Filter by stars
Filter reviews to show only specific star ratings
Sort reviews
Sort by most recent, most helpful, highest or lowest rated

Search screen

Product search with history and real-time results.

Search input
Text field with real-time search as you type
Recent searches
List of previous search queries with quick re-search
Clear history
Clear individual searches or all search history
Search results
Product grid showing matching items
Empty state
Friendly message when no results found

Favorites screen

Wishlist management for saved products.

Favorites grid
Grid view of all favorited products
Product cards
Shows image, name, rating, and price
Quick remove
Remove from favorites with single tap
Navigation
Tap to view full product details
Empty state
Message prompting users to add favorites
09

Cart and checkout

Cart screen

Shopping cart with item management and checkout preparation.

Cart items list
List of products with image, name, size, and price
Quantity controls
Increment/decrement buttons for each item
Item selection
Checkbox to select/deselect items for checkout
Delete item
Remove products from cart
Cart summary
Shows selected item count and subtotal
Checkout button
Proceeds to checkout with selected items

Checkout screen

Complete checkout flow with shipping and payment.

Shipping address
Display selected address with option to change
Payment method
Display selected payment method with option to change
Order items
List of items being purchased
Order summary
Subtotal, shipping fee, tax, and total calculation
Place order
Final button to complete purchase

Order success screen

Confirmation page after successful order placement.

Success animation
Visual confirmation of successful order
Order details
Order number and summary information
Navigation options
Continue shopping or view orders
10

Orders and tracking

My orders screen

Order history with ongoing and completed orders.

Tab navigation
Switch between Ongoing and Completed orders
Order cards
Order number, status, item count, total, and delivery date
Status badges
Color-coded status (pending, processing, shipped, delivered, cancelled)
Track order
Button to view real-time order tracking
Reorder
Quick reorder button for completed orders

Track order screen

Real-time order tracking with Google Maps integration.

Google Maps
Interactive map showing delivery route
Custom markers
SVG markers for warehouse, driver, and destination
Route visualization
Polylines showing completed and pending routes
Tracking timeline
Step-by-step status from order placed to delivered
Driver info
Driver name, avatar, rating, and distance
Contact driver
Call and message buttons for driver contact
11

Account screens

Account screen

User profile and settings hub.

Profile section
Avatar, name, and email display
Account menu
My Orders, Account Details, Addresses, Payments
Settings menu
Notifications preferences
Support menu
FAQs and Help Center links
About menu
About Us, Terms & Conditions, Privacy Policy
Logout
Sign out button

Edit profile screen

User profile editing with photo management.

Avatar editor
Take photo, choose from gallery, or remove photo
Profile form
Edit name, email, and phone number
Change password
Dialog with current, new, and confirm password fields
Save changes
Submit button with validation

Address management

Complete address CRUD operations with map integration.

Address list
All saved addresses with label, recipient, and details
Default address
Mark any address as default for checkout
Add address
Form with map picker and place search
Edit address
Modify existing address details
Delete address
Remove address with confirmation dialog
Address labels
Home, Office, Parents, or Other categorization

Payment methods

Manage credit cards and PayPal accounts.

Payment list
All saved payment methods with masked details
Card brands
Visual icons for Visa, Mastercard, and others
Default payment
Set any method as default for checkout
Add credit card
Form with cardholder name, number, expiry, CVV
Add PayPal
Link PayPal account by email
Delete payment
Remove payment method with confirmation

Notifications screen

Notification center with categorized alerts.

Notification list
All notifications with type icon, title, message, and time
Notification types
Order, Promo, Payment, and System categories
Unread indicator
Visual dot for unread notifications
Mark as read
Tap to mark individual notification as read
Mark all read
Button to mark all notifications as read
Swipe to delete
Dismissible notification items
12

Authentication

Login and password recovery flows.

Login form
Email and password with validation
Password visibility
Toggle to show/hide password
Social login
Google and Apple sign-in buttons
Forgot password
Password reset flow
Sign up link
Navigation to registration
13

State management

9 providers managing all app state with the Provider pattern.

ProductProvider
Manages products, banners, filtering, and sorting state
CategoryProvider
Handles product category data and selection
CartProvider
Cart items, selection, and quantity management
FavoritesProvider
Wishlist/favorites management with toggle functionality
PaymentMethodsProvider
CRUD operations for payment methods
AddressProvider
Address management with default selection
OrderProvider
Ongoing and completed orders state
NotificationProvider
Notifications with read/unread status
ReviewProvider
Product reviews, ratings, filtering, and sorting
14

Data models

10 data models with JSON serialization support.

ModelDescriptionJSON file
ProductModel
Product with variants, images, rating, and price
products.json
CategoryModel
Product category with name and icon
categories.json
CartItemModel
Cart item with product, size, and quantity
carts.json
FavoriteItemModel
Favorited product reference
favorites.json
PaymentMethodModel
Credit card or PayPal payment method
payment_methods.json
AddressModel
Shipping address with all location details
addresses.json
OrderModel
Order with items, status, and delivery info
orders.json
NotificationModel
Notification with type, message, and read status
notifications.json
ReviewModel
Product review with user, rating, and comment
reviews.json
ProductFilterModel
Filter criteria for product search
N/A (runtime only)
15

Customization

How to customize the template for your needs.

Change theme colors

Edit lib/theme/app_theme.dart to customize the color scheme. The app uses Material 3 color system.

lib/theme/app_theme.dart
colorScheme: ColorScheme.fromSeed(
  seedColor: Colors.purple, // Change this
),

Update mock data

Modify JSON files in assets/mock_data/ to change products, categories, and other content.

assets/mock_data/
{
  "id": "1",
  "name": "Your Product",
  "price": 99.99
}

Connect backend API

Replace LocalDataSource classes with API calls. The repository pattern makes this easy:

lib/data/repositories/
class ProductRepository {
  // Replace LocalDataSource
  // with ApiDataSource
}

Replace images

Add your product images to assets/images/ and update references in the JSON mock data files.

Configure maps

Add your Google Maps API key as shown in Google Maps (optional). Customize map markers in the track order screen.

Change fonts

The app uses Google Fonts (Montserrat). Change the font in lib/theme/app_theme.dart:

lib/theme/app_theme.dart
textTheme: GoogleFonts
  .montserratTextTheme(),
16

Troubleshooting

Common issues and solutions.

Flutter SDK version error

If you get SDK version errors, make sure you have Flutter 3.10.4 or higher:

terminal
flutter --version

Upgrade Flutter if needed:

terminal
flutter upgrade

Dependency resolution issues

Try cleaning and getting dependencies again:

terminal
flutter clean
flutter pub get

Google Maps not showing

Make sure you’ve:

  • Added your Google Maps API key correctly
  • Enabled Maps SDK for Android/iOS in Google Cloud Console
  • Added billing to your Google Cloud project

iOS build errors

If you encounter iOS build issues:

terminal
cd ios
pod deintegrate
pod install
cd ..
flutter run

Android Gradle issues

Try invalidating caches or updating Gradle:

terminal
cd android
./gradlew clean
cd ..
flutter run
17

Changelog

Every version published so far. Updates are free for the life of the item.

v1.1.0 · Apr 2026
Design system redesign, light and dark mode with system-aware switching, design tokens, reusable components, enhanced checkout with shipping methods, promo codes, tax and order notes, write-a-review, Plus Jakarta Sans typography.
v1.0.0
Initial release with 20+ screens, Provider state management, Material 3 theme, Google Maps, mock JSON data and full documentation.
18

Support and licensing

If you have any questions or issues, feel free to reach out:

You can also contact us through CodeCanyon for any questions about this template.

What support covers

  • Six months of support from purchase, extendable at checkout
  • Support covers bugs in the template and questions about how it is put together
  • It does not cover custom feature work, third-party API changes or store review outcomes
  • The Regular licence covers one free end product. Charging users for the app itself needs the Extended licence