A comprehensive Flutter application with Augmented Reality capabilities, featuring a layered architecture, internationalization, and modern development practices.
Features β’ Quick Start β’ Documentation β’ Architecture β’ Contributing
Flutter AR App is a production-ready mobile application that demonstrates best practices in Flutter development with advanced features including:
- β¨ Augmented Reality with ARCore
- π± Clean Architecture with Riverpod
- π Full internationalization (English & Russian)
- π Push notifications via Firebase
- πΎ Advanced caching system
- πΈ Media capture and management
- π QR code scanning
- π Performance monitoring
-
Augmented Reality (AR)
- ARCore integration for Android devices
- Real-time 3D object placement and viewing
- Device compatibility checking
- Performance optimization across device tiers
-
Media Management
- Photo and video capture
- Gallery with system integration
- Video recording with custom parameters
- Media caching and offline access
-
Smart Caching
- Local content caching with TTL policies
- 500MB storage limit with automatic cleanup
- Cache management UI
- Offline content access
-
QR Code Scanner
- Multiple format support (JSON, URL, simple ID)
- Scan history tracking
- Direct content access
- Error handling and validation
-
Push Notifications
- Firebase Cloud Messaging integration
- Deep linking support
- Customizable notification preferences
- Background and foreground handling
-
Onboarding Flow
- Interactive 5-step introduction
- Permission requests handling
- AR safety guidelines
- Replay functionality
-
Internationalization
- Full English and Russian support
- Dynamic language switching
- Cultural content adaptation
- Localized notifications
-
Performance Monitoring
- Real-time FPS tracking
- CPU/GPU usage monitoring
- Battery drain analysis
- Memory usage tracking
- Debug overlay (development mode)
# Required
- Flutter SDK 3.16.0+
- Dart SDK 3.0.0+
- Android Studio / VS Code
- Android device with ARCore support (API 24+)
- JDK 11+- Clone the repository
git clone https://github.com/your-username/flutter-ar-app.git
cd flutter-ar-app- Install dependencies
flutter pub get- Set up environment variables
cp .env.example .env
# Edit .env with your configuration- Configure Firebase
- Create a Firebase project
- Download
google-services.json - Place in
android/app/ - Update
firebase_options.dart
- Generate code
flutter packages pub run build_runner build --delete-conflicting-outputs- Run the app
flutter runFor detailed setup instructions, see the Quick Start Guide.
- Project Description - Complete overview in English and Russian
- Quick Start Guide - Setup and first launch
- Documentation Index - Complete documentation catalog
- Caching & QR Implementation - Caching and QR scanner details
- Testing & Performance - Testing infrastructure and performance
- Onboarding & Notifications - User onboarding and FCM
- Testing Guide - Testing practices and guidelines
- QA Procedures - Quality assurance methodology
- Troubleshooting Guide - Common issues and solutions
- Manual QA Scenarios - Step-by-step test scenarios
βββββββββββββββββββββββββββββββββββββββββββ
β Presentation Layer (UI) β
β ββββββββββββ¬βββββββββββ¬ββββββββββββββ β
β β Pages β Widgets β Providers β β
β ββββββββββββ΄βββββββββββ΄ββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββ
β Domain Layer (Business Logic) β
β ββββββββββββ¬βββββββββββ¬ββββββββββββββ β
β β Entities β Use CasesβRepositories β β
β ββββββββββββ΄βββββββββββ΄ββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββ
β Data Layer β
β ββββββββββββ¬βββββββββββ¬ββββββββββββββ β
β β Repos β Services βData Sources β β
β ββββββββββββ΄βββββββββββ΄ββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββ
lib/
βββ core/ # Core functionality
β βββ config/ # App configuration
β βββ di/ # Dependency injection
β βββ l10n/ # Localization
β βββ router/ # Navigation
β βββ theme/ # App theming
βββ data/ # Data layer
β βββ datasources/ # Data sources
β βββ repositories/ # Repository implementations
β βββ services/ # Services
βββ domain/ # Business logic
β βββ entities/ # Business models
β βββ repositories/ # Repository interfaces
β βββ usecases/ # Use cases
βββ presentation/ # UI layer
β βββ pages/ # Screen widgets
β βββ providers/ # State management
β βββ widgets/ # Reusable components
βββ l10n/ # Localization files
Core:
- Flutter 3.16.0+ / Dart 3.0+
- Clean Architecture
- SOLID Principles
State Management:
- Riverpod 2.4.9
Dependency Injection:
- GetIt 7.6.4
- Injectable 2.3.2
Navigation:
- Go Router 12.1.3
Backend:
- Firebase Core 2.24.2
- Firebase Messaging 14.7.9
- Firebase Analytics 10.7.4
AR & Media:
- AR Flutter Plugin 0.7.3
- Camera 0.10.5+5
- Video Player 2.8.1
Storage:
- Flutter Secure Storage 9.0.0
- Shared Preferences 2.2.2
Networking:
- Dio 5.4.0
Performance:
- Battery Plus 5.0.2
- Device Info Plus 9.1.1
- Performance Monitor 0.4.0
# All tests
flutter test
# With coverage
flutter test --coverage
# Integration tests
flutter test integration_test/
# Specific test file
flutter test test/unit/qr_service_test.dart- β Unit Tests - Business logic and services
- β Widget Tests - UI components
- β Integration Tests - End-to-end workflows
- β Performance Tests - Device tier optimization
Flagship Devices: Samsung Galaxy S23 Ultra, Pixel 7 Pro, OnePlus 11
Mid-Tier Devices: Samsung Galaxy A54, Pixel 7a, OnePlus Nord 3
Low-End Devices: Samsung Galaxy A14, Redmi Note 11, Moto G Play
flutter build apk --debug# APK
flutter build apk --release
# App Bundle (recommended for Play Store)
flutter build appbundle --release
# Split APKs by architecture (smaller size)
flutter build apk --split-per-abi --release- APK:
build/app/outputs/flutter-apk/app-release.apk - App Bundle:
build/app/outputs/bundle/release/app-release.aab
| Metric | Flagship | Mid-Tier | Low-End |
|---|---|---|---|
| App Launch | <2s | <3s | <5s |
| FPS | >55 | >30 | >15 |
| Memory | <500MB | <400MB | <300MB |
| Battery (30min) | <15% | <20% | <25% |
When modifying models, repositories, or providers:
flutter packages pub run build_runner build --delete-conflicting-outputsflutter analyzeflutter format .- Create entity in
domain/entities/ - Define repository interface in
domain/repositories/ - Create use case in
domain/usecases/ - Implement repository in
data/repositories/ - Create provider in
presentation/providers/ - Build UI in
presentation/pages/orpresentation/widgets/ - Add localization strings to
l10n/app_en.arbandl10n/app_ru.arb - Write tests for each layer
- Update documentation
- π¬π§ English (en)
- π·πΊ Russian (ru)
- Add keys to
lib/l10n/app_en.arb - Add translations to
lib/l10n/app_ru.arb - Use in code:
AppLocalizations.of(context).yourKey
- Create
lib/l10n/app_[locale].arb - Add locale to
supportedLocalesinmain.dart - Update locale provider
- Camera - AR functionality and media capture
- Storage - Saving and accessing media files
- Internet - Firebase services and content download
- Notifications - Optional, user-controlled
ENV=development|production
API_BASE_URL=https://your-api.com
ENABLE_LOGGING=true|false
ENABLE_AR_FEATURES=true|falseARCore not working:
- Verify device supports ARCore
- Install ARCore from Play Store
- Check camera permissions
Build failures:
flutter clean
cd android && ./gradlew clean && cd ..
flutter pub get
flutter runFirebase issues:
- Verify
google-services.jsonis inandroid/app/ - Check Firebase configuration in console
- Ensure correct package name
For more solutions, see Troubleshooting Guide.
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow the existing code style
- Write tests for new features
- Update documentation
- Ensure all tests pass
- Follow clean architecture principles
This project is licensed under the MIT License - see the LICENSE file for details.
- ARCore integration
- Push notifications
- Performance monitoring
- Caching system
- QR scanner
- iOS ARKit support
- Advanced AR features (object recognition, tracking)
- Cloud storage integration
- Social features
- Additional language support
- Web version (limited AR)
- Desktop support
- π Check Documentation
- π Search Issues
- π¬ Create a new Issue
- π§ Contact the team
Built with:
- Flutter - UI framework
- ARCore - Augmented reality
- Firebase - Backend services
- Riverpod - State management
- Lines of Code: ~15,000+
- Test Coverage: 80%+
- Supported Devices: 100+ ARCore-compatible devices
- Languages: 2 (English, Russian)
- Minimum Android Version: 7.0 (API 24)
Made with β€οΈ using Flutter