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.
Requirements
| Tool | Version | Notes |
|---|---|---|
| Flutter SDK | 3.38+ | Install Flutter |
| Dart SDK | 3.10+ | Included with Flutter |
| Android Studio | Latest | For Android builds and emulator |
| Xcode | 15+ | For iOS builds (macOS only) |
| LaraClassifier | v14+ | Backend with REST API enabled |
Platform Requirements
| Platform | Minimum Version |
|---|---|
| Android | API 21 (Android 5.0 Lollipop) |
| iOS | iOS 12.0+ |
Installation
Extract the Package
Extract the downloaded ZIP file from CodeCanyon to your preferred location on your computer.
Install Flutter Dependencies
Open your terminal, navigate to the project folder, and run:
cd lara_app
flutter pub get
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
Verify Your Setup
Make sure all required tools are properly installed:
flutter doctor
Ensure all items show a green checkmark (✓).
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';
}
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:
| Platform | File | Property |
|---|---|---|
| Android | android/app/src/main/AndroidManifest.xml | android:label |
| iOS | ios/Runner/Info.plist | CFBundleDisplayName & CFBundleName |
3. Package Name / Bundle ID
| Platform | File | Property |
|---|---|---|
| Android | android/app/build.gradle.kts | applicationId & namespace |
| iOS | Xcode project settings | PRODUCT_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
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:
| Layer | Responsibility |
|---|---|
| Services | Handle HTTP requests via Dio — one service per API resource |
| Providers | Manage state with ChangeNotifier — one provider per domain |
| Screens | UI layer consuming providers — organized by feature |
| Models | Data classes with fromJson factory constructors |
| Widgets | Reusable UI components shared across screens |
Features
Localization
The app ships with 17 languages. Translation files are located in assets/translations/:
| Code | Language | Code | Language |
|---|---|---|---|
| en | English | ar | Arabic |
| fr | French | es | Spanish |
| de | German | pt | Portuguese |
| it | Italian | ru | Russian |
| zh | Chinese | ja | Japanese |
| tr | Turkish | th | Thai |
| hi | Hindi | bn | Bengali |
| he | Hebrew | ro | Romanian |
| ka | Georgian |
Adding a New Language
Create a new JSON file in assets/translations/ (e.g., ko.json for Korean)
Copy all keys from en.json and translate the values
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:
| Category | Endpoints |
|---|---|
| Authentication | Login, Register, Logout, Forgot/Reset Password, Verification |
| Posts | CRUD, Search, Similar Posts, Offline, Repost, Report |
| Categories | List, Detail, Sub-categories, Custom Fields |
| Countries | List, Cities, Administrative Divisions |
| Users | Profile, Update, Photo, Stats, Security |
| Messages | Threads, Create Thread, Messages |
| Saved | Saved Posts, Saved Searches |
| Packages | Promotion & Subscription packages |
| Payments | Payment methods, Create payment |
| Settings | App settings, Feature flags |
| Other | Genders, 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
| Package | Purpose |
|---|---|
provider | State management |
dio | HTTP client for API calls |
go_router | Navigation and routing |
easy_localization | Multi-language support |
flutter_secure_storage | Secure token persistence |
cached_network_image | Image caching & loading |
shimmer | Skeleton loading effects |
flutter_html | HTML content rendering |
image_picker | Camera and gallery access |
share_plus | Share content to other apps |
url_launcher | Open URLs, WhatsApp, maps |
intl_phone_field | Phone input with country picker |
connectivity_plus | Network connectivity monitoring |
photo_view | Full-screen image zoom gallery |
package_info_plus | App version information |
font_awesome_flutter | Social media icons |
Troubleshooting
API Connection Failed
- Verify
baseUrlinapi_constants.dartis correct and reachable - Ensure your server has CORS configured for mobile clients
- Check that
X-AppApiTokenmatches 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 installif dependencies fail - Ensure Xcode is updated to the latest version
- Set iOS deployment target to 12.0 in Xcode
Android Specific
- Ensure
minSdkis 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
© 2026 LaraClassifier Flutter App. All rights reserved.
This item is sold exclusively on CodeCanyon. Unauthorized distribution is prohibited.