LaraClassifier Flutter App

Complete Classified Ads Mobile Application for Android & iOS — Built with Flutter & LaraClassifier Backend

Version 1.0.0 • Flutter 3.38 • Dart 3.10

Overview

LaraClassifier Flutter App is a full-featured, cross-platform classified ads mobile application built with Flutter 3.38. It serves as the official mobile companion for the LaraClassifier Laravel web application, connecting seamlessly via RESTful APIs to provide a native mobile experience on both Android and iOS.

The app features Material 3 design, full dark mode support, 17 languages with RTL, and a clean Service-Provider-Screen architecture that is easy to extend and maintain.

Note: This Flutter app requires a running LaraClassifier (v14+) backend instance with the REST API enabled.

Requirements

ToolVersionNotes
Flutter SDK3.38+Install Flutter
Dart SDK3.10+Included with Flutter
Android StudioLatestFor Android builds and emulator
Xcode15+For iOS builds (macOS only)
LaraClassifierv14+Backend with REST API enabled

Platform Requirements

PlatformMinimum Version
AndroidAPI 21 (Android 5.0 Lollipop)
iOSiOS 12.0+
Important: macOS is required for iOS builds. You can develop and build for Android on Windows, macOS, or Linux.

Installation

1

Extract the Package

Extract the downloaded ZIP file from CodeCanyon to your preferred location on your computer.

2

Install Flutter Dependencies

Open your terminal, navigate to the project folder, and run:

cd lara_app
flutter pub get
3

Generate App Icons & Splash Screen

Run these commands to generate the native app icon and splash screen from your logo:

dart run flutter_launcher_icons
dart run flutter_native_splash:create
4

Verify Your Setup

Make sure all required tools are properly installed:

flutter doctor

Ensure all items show a green checkmark (✓).

5

Run the App

Connect a device or start an emulator, then run:

flutter run

Configuration

1. API Configuration (Required)

Open lib/core/constants/api_constants.dart and update the following values:

abstract class ApiConstants {
  // Change this to your LaraClassifier backend URL
  static const String baseUrl = 'https://your-domain.com';

  // Your API token from LaraClassifier admin panel
  static const String apiToken = 'YOUR_API_TOKEN_HERE';
}
Critical: The baseUrl must point to your live LaraClassifier installation (e.g., https://example.com). The apiToken can be found in your LaraClassifier admin panel under Settings > General > API.

2. App Name

The app display name is configured in these files:

PlatformFileProperty
Androidandroid/app/src/main/AndroidManifest.xmlandroid:label
iOSios/Runner/Info.plistCFBundleDisplayName & CFBundleName

3. Package Name / Bundle ID

PlatformFileProperty
Androidandroid/app/build.gradle.ktsapplicationId & namespace
iOSXcode project settingsPRODUCT_BUNDLE_IDENTIFIER

App Icon & Splash Screen

Custom App Icon

Replace assets/images/logo.png with your own logo image (recommended: 1024 × 1024 PNG), then regenerate:

dart run flutter_launcher_icons

Configuration is in pubspec.yaml under the flutter_launcher_icons section:

flutter_launcher_icons:
  android: "launcher_icon"
  ios: true
  image_path: "assets/images/logo.png"
  min_sdk_android: 21
  adaptive_icon_background: "#FFFFFF"
  adaptive_icon_foreground: "assets/images/logo.png"
  remove_alpha_ios: true

Custom Splash Screen

The splash screen also uses assets/images/logo.png. Customize colors in pubspec.yaml:

flutter_native_splash:
  color: "#FFFFFF"          # Background color
  image: "assets/images/logo.png"
  android_12:
    color: "#FFFFFF"
    image: "assets/images/logo.png"
  ios: true
  android: true

Then regenerate:

dart run flutter_native_splash:create

Build & Run

Development

# Run on connected device or emulator
flutter run

# Run in release mode
flutter run --release

Android Production Build

# AAB for Google Play Store (recommended)
flutter build appbundle --release

# APK for direct distribution
flutter build apk --release

Output location: build/app/outputs/bundle/release/app-release.aab

Signing: For release builds, configure your keystore in android/app/build.gradle.kts. See the Flutter Android deployment guide.

iOS Production Build

flutter build ios --release

Then open ios/Runner.xcworkspace in Xcode to archive and submit to App Store Connect.

Project Structure

lib/
├── main.dart                  # App entry point
├── core/
│   ├── constants/             # API URLs, colors, spacing
│   ├── router/                # GoRouter navigation config
│   ├── theme/                 # Material 3 light/dark themes
│   └── utils/                 # Logger utility
├── models/                    # 27 data models
├── providers/                 # 12 state providers (ChangeNotifier)
├── services/                  # 21 API service classes (Dio)
├── screens/                   # 31 UI screens
│   ├── auth/                  # Login, Register, Forgot Password, Verification
│   ├── categories/            # Category browsing & posts
│   ├── contact/               # Contact form
│   ├── home/                  # Dashboard / Home
│   ├── messages/              # Threads & Chat
│   ├── onboarding/            # First-launch onboarding
│   ├── packages/              # Packages & Payments
│   ├── pages/                 # Static pages
│   ├── posts/                 # Post CRUD, Search, Detail, Image Viewer
│   ├── profile/               # User profile, My Posts, Saved
│   ├── settings/              # Settings, About, Language, Country
│   └── splash/                # Splash & Country selection
└── widgets/                   # Reusable UI components
    ├── cards/                 # Post, Category, Thread cards
    ├── common/                # Shared widgets
    ├── forms/                 # Form components
    └── home/                  # Home screen sections

Architecture

The app uses a clean Service → Provider → Screen architecture:

LayerResponsibility
ServicesHandle HTTP requests via Dio — one service per API resource
ProvidersManage state with ChangeNotifier — one provider per domain
ScreensUI layer consuming providers — organized by feature
ModelsData classes with fromJson factory constructors
WidgetsReusable UI components shared across screens

Features

17 Languages + RTL
Dark Mode (Material 3)
Login & Register
Email/Phone Verification
Forgot/Reset Password
Browse Categories
Sub-Category Filtering
Post Creation (Multi-Step)
Post Editing
Custom Fields per Category
Image Upload (Camera/Gallery)
Full-Screen Image Gallery
Search with Pagination
Advanced Filters
In-App Messaging
Saved Posts
Saved Searches
Promotion Packages
Subscription Packages
Payment Integration
WhatsApp Contact
Social Links
User Profile Management
Report Content
Connectivity Monitoring
Onboarding Flow
Native Splash Screen
Pull-to-Refresh
Infinite Scroll
Shimmer Loading
Static Pages
Settings API-Driven

Localization

The app ships with 17 languages. Translation files are located in assets/translations/:

CodeLanguageCodeLanguage
enEnglisharArabic
frFrenchesSpanish
deGermanptPortuguese
itItalianruRussian
zhChinesejaJapanese
trTurkishthThai
hiHindibnBengali
heHebrewroRomanian
kaGeorgian

Adding a New Language

1

Create a new JSON file in assets/translations/ (e.g., ko.json for Korean)

2

Copy all keys from en.json and translate the values

3

Add the locale to supportedLocales in lib/main.dart:

Locale('ko'),

API Reference

All API endpoints are defined in lib/core/constants/api_constants.dart. The app communicates with the following LaraClassifier REST API endpoints:

CategoryEndpoints
AuthenticationLogin, Register, Logout, Forgot/Reset Password, Verification
PostsCRUD, Search, Similar Posts, Offline, Repost, Report
CategoriesList, Detail, Sub-categories, Custom Fields
CountriesList, Cities, Administrative Divisions
UsersProfile, Update, Photo, Stats, Security
MessagesThreads, Create Thread, Messages
SavedSaved Posts, Saved Searches
PackagesPromotion & Subscription packages
PaymentsPayment methods, Create payment
SettingsApp settings, Feature flags
OtherGenders, Post Types, User Types, Report Types, Captcha, Contact, Static Pages

Customization

Theme Colors

Edit lib/core/constants/app_colors.dart:

abstract class AppColors {
  static const Color primary = Color(0xFF1565C0);     // Main brand color
  static const Color primaryLight = Color(0xFF5E92F3); // Lighter variant
  static const Color background = Color(0xFFF5F5F5);   // Background
  static const Color surface = Color(0xFFFFFFFF);       // Card/surface
  // ... more colors
}

Spacing & Sizing

Edit lib/core/constants/app_spacing.dart to adjust spacing values, border radii, and button heights.

Full Theme

Edit lib/core/theme/app_theme.dart for complete Material 3 theme customization including AppBar, Cards, Inputs, Buttons, Navigation Bar, and more.

Dependencies

PackagePurpose
providerState management
dioHTTP client for API calls
go_routerNavigation and routing
easy_localizationMulti-language support
flutter_secure_storageSecure token persistence
cached_network_imageImage caching & loading
shimmerSkeleton loading effects
flutter_htmlHTML content rendering
image_pickerCamera and gallery access
share_plusShare content to other apps
url_launcherOpen URLs, WhatsApp, maps
intl_phone_fieldPhone input with country picker
connectivity_plusNetwork connectivity monitoring
photo_viewFull-screen image zoom gallery
package_info_plusApp version information
font_awesome_flutterSocial media icons

Troubleshooting

API Connection Failed

  • Verify baseUrl in api_constants.dart is correct and reachable
  • Ensure your server has CORS configured for mobile clients
  • Check that X-AppApiToken matches your LaraClassifier admin settings

Images Not Loading

  • Ensure your server's image URLs are publicly accessible
  • If using a local server, the device must be on the same network
  • Check that the URL scheme is https:// for production

Clean Build

flutter clean
flutter pub get
dart run flutter_launcher_icons
dart run flutter_native_splash:create
flutter run

iOS Specific

  • Run cd ios && pod install if dependencies fail
  • Ensure Xcode is updated to the latest version
  • Set iOS deployment target to 12.0 in Xcode

Android Specific

  • Ensure minSdk is 21 or higher
  • Update Gradle wrapper if prompted
  • For release builds, configure signing keys in build.gradle.kts

Changelog

v1.0.0 — Initial Release

  • Full classified ads browsing with categories, sub-categories, and filters
  • Post creation and editing with multi-step form and custom fields
  • Image upload from camera and gallery with full-screen gallery viewer
  • User authentication with email/phone verification
  • In-app messaging system
  • Saved posts and saved searches
  • Promotion and subscription packages with payment integration
  • 17 languages with full RTL support
  • Dark mode with Material 3
  • Native splash screen and adaptive app icons
  • WhatsApp integration, connectivity monitoring, onboarding flow

Support

If you need help with this product, please use one of the following methods:

  • CodeCanyon Comments: Leave a comment on the item page
  • Email: Contact us at the email provided on our Envato profile
Tip: Before reaching out, please check the Troubleshooting section above. Most common issues are covered there.

© 2026 LaraClassifier Flutter App. All rights reserved.
This item is sold exclusively on CodeCanyon. Unauthorized distribution is prohibited.