quicui_firebase 1.0.0
quicui_firebase: ^1.0.0 copied to clipboard
A Flutter Firebase plugin providing real-time synchronization, offline-first support, and intelligent conflict resolution for Firestore.
quicui_firebase #
A production-ready Firebase Firestore integration plugin for QuicUI with real-time synchronization, offline-first architecture, and comprehensive callback action system support.
๐ฏ Features #
โจ Complete Firestore Integration
- Full CRUD operations (Create, Read, Update, Delete)
- Complex query building with 10+ filter types
- Batch operations and transactions
- Auto-ID generation and custom document IDs
- Collection and subcollection support
๐ Real-Time Synchronization
- Live Firestore stream listeners
- Automatic connection state monitoring
- Connection loss detection and recovery
- Real-time document, collection, and query updates
- 13 event types with filtering
โก Offline-First Architecture
- Automatic offline operation queue
- Intelligent conflict resolution
- Automatic sync on reconnection
- Configurable sync intervals (default: 30s)
- Event history tracking (max 100 events)
๐ฎ QuicUI Callback Integration
- Event-driven callback system
- 13 event types (CRUD, sync, connection, custom)
- Multi-callback support per event
- Event filtering with AND logic
- CallbackAction integration for UI updates
๐ Production-Ready
- 5 comprehensive exception types
- Comprehensive error handling and recovery
- Thread-safe operations
- Memory-efficient implementation
- Immutable data models with Equatable support
๐ Extensive Testing
- 148+ unit and integration tests
- Edge case coverage
- Performance benchmarks (1000+ events in <5 seconds)
- Memory validation
๐ Complete Documentation
- 1,500+ LOC documentation
- 50+ code examples
- Getting started guide
- API reference
- Migration guides
๐ Quick Start #
Installation #
Add to your pubspec.yaml:
dependencies:
quicui_firebase: ^1.0.0
Initialize Firebase #
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:quicui_firebase/quicui_firebase.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// Initialize Firebase
await Firebase.initializeApp();
// Initialize QuicUI Firebase plugin
const config = FirebaseConfig(
enableOfflinePersistence: true,
enableRealtimeSync: true,
syncInterval: Duration(seconds: 30),
);
await FirebaseInitializer.initialize(config);
runApp(const MyApp());
}
Basic CRUD Operations #
final dataSource = FirebaseDataSource('users');
// Create
final userId = await dataSource.create({
'name': 'John Doe',
'email': 'john@example.com',
});
// Read
final user = await dataSource.read(userId);
// Update
await dataSource.update(userId, {'name': 'Jane Doe'});
// Delete
await dataSource.delete(userId);
// Stream real-time updates
dataSource.streamCollection().listen((users) {
print('Users: $users');
});
Query Building #
final query = FirebaseDataSource('users')
.query()
.where('age', isGreaterThan: 18)
.where('status', isEqualTo: 'active')
.orderBy('createdAt', descending: true)
.limit(10)
.build();
final results = await query.fetch();
query.stream().listen((results) {
print('Query results: $results');
});
Real-Time Sync #
// Setup sync manager
final syncManager = SyncManager(
dataSource: dataSource,
syncInterval: const Duration(seconds: 30),
);
await syncManager.initialize();
// Monitor sync state
syncManager.syncStatusStream.listen((status) {
print('Sync status: $status');
});
// Automatic offline queue management
// Operations are queued when offline and synced when online
Callback Events #
// Register callback for document creation
FirebaseEventManager.instance.registerCallback(
FirebaseEventType.DOCUMENT_CREATED,
(event) {
print('Document created: ${event.data}');
// Trigger QuicUI actions or UI updates
},
);
// Register with event filtering
FirebaseEventManager.instance.registerCallback(
FirebaseEventType.DOCUMENT_UPDATED,
(event) {
print('User updated: ${event.metadata['collection']}');
},
filters: [
CallbackFilter(
filterType: FilterType.equals,
field: 'collection',
value: 'users',
),
],
);
// Available events:
// - DOCUMENT_CREATED, DOCUMENT_UPDATED, DOCUMENT_DELETED
// - COLLECTION_MODIFIED, BATCH_OPERATION_COMPLETED
// - SYNC_STARTED, SYNC_COMPLETED, SYNC_FAILED
// - CONNECTION_ONLINE, CONNECTION_OFFLINE
// - ERROR_OCCURRED, INITIALIZATION_COMPLETE, CUSTOM
๐ Architecture #
Component Overview #
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ QuicUI Firebase Plugin โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ User Application / UI โ โ
โ โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ FirebaseDataSource (CRUD, Queries) โ โ
โ โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโฌโโโโโโโโดโโโโโโโโฌโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ โ โ
โ โผ โผ โผ โผ โ
โ Online Offline RealTimeManager CallbackManager
โ Direct Queue (Streams) (Events) โ
โ โ โ โ โ โ
โ โโโโโโโโโโดโโโโโโโโฌโโโโโโโโดโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Firebase Firestore / Cloud โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Key Classes #
| Class | Purpose |
|---|---|
FirebaseInitializer |
Safe Firebase initialization |
FirebaseDataSource |
Main CRUD and query interface |
QueryBuilder |
Fluent query building API |
RealTimeManager |
Stream-based synchronization |
SyncManager |
Offline queue and sync management |
FirebaseEventManager |
Central event dispatch system |
FirebaseCallbackManager |
Event subscription management |
๐ Statistics #
- Total Lines of Code: ~9,200 LOC (100% of 8,000 target)
- Test Coverage: 148+ tests (347% of original target)
- Documentation: 1,500+ LOC with 50+ examples
- Example Applications: 3 production-ready apps
- Supported Platforms: Android, iOS, Linux, macOS, Windows, Web
๐ Documentation #
- API Reference - Complete API documentation
- Getting Started - Step-by-step guide
- Examples - Working example applications
- GitHub Wiki - Extended guides
๐ก Example Applications #
The plugin includes three production-ready example applications:
1. Todo List Application #
- CRUD operations with real-time updates
- Add, edit, delete, and toggle functionality
- Firestore serialization best practices
Location: examples/lib/todo_example.dart
2. Real-Time Chat Application #
- Real-time messaging
- Collection/subcollection handling
- Message status tracking
- Auto-scroll and list management
Location: examples/lib/chat_example.dart
3. Analytics Dashboard #
- Real-time statistics
- Chart visualization
- Alert system with severity levels
- Responsive grid layout
Location: examples/lib/dashboard_example.dart
๐งช Testing #
Run all tests:
flutter test
Run specific test file:
flutter test test/integration_test.dart
Run with coverage:
flutter test --coverage
Test Coverage #
- 28 Integration Tests - Real-world scenarios and workflows
- 35+ Edge Case Tests - Boundary conditions and error cases
- Performance Benchmarks - Validates 1000+ events in <5 seconds
- Memory Validation - Ensures efficient resource usage
๐ง Requirements #
- Flutter: >=3.10.0
- Dart: >=3.0.0 <4.0.0
- Firebase Core: ^4.2.0
- Cloud Firestore: ^6.0.3
๐ฆ Dependencies #
firebase_core: ^4.2.0
cloud_firestore: ^6.0.3
firebase_auth: ^6.1.1
quicui: ^1.0.4
logger: ^2.6.2
equatable: ^2.0.7
intl: ^0.20.2
๐ฏ Advanced Features #
Batch Operations #
await dataSource.batchWrite([
{'operation': 'set', 'data': {'name': 'John'}},
{'operation': 'update', 'id': 'doc1', 'data': {'age': 30}},
{'operation': 'delete', 'id': 'doc2'},
]);
Transactions #
final transaction = await firestore.runTransaction((txn) async {
// Transactional operations
return result;
});
Event Filtering #
FirebaseEventManager.instance.registerCallback(
FirebaseEventType.DOCUMENT_UPDATED,
(event) { /* ... */ },
filters: [
CallbackFilter(
filterType: FilterType.greaterThan,
field: 'amount',
value: 100,
),
CallbackFilter(
filterType: FilterType.equals,
field: 'status',
value: 'pending',
),
],
);
Conflict Resolution #
syncManager.setConflictResolver((local, remote) {
// Custom conflict resolution logic
return local.timestamp > remote.timestamp ? local : remote;
});
๐ฆ Supported Platforms #
| Platform | Support |
|---|---|
| Android | โ |
| iOS | โ |
| Linux | โ |
| macOS | โ |
| Windows | โ |
| Web | โ |
๐ License #
This project is licensed under the MIT License - see the LICENSE file for details.
๐ค Contributing #
Contributions are welcome! Please visit GitHub Repository to:
- Report issues
- Submit feature requests
- Create pull requests
๐ฎ Support #
For questions, issues, or feedback:
- GitHub Issues: https://github.com/Ikolvi/QuicUIFirebase/issues
- GitHub Discussions: https://github.com/Ikolvi/QuicUIFirebase/discussions
๐ Best Practices #
- Initialize Early - Call
FirebaseInitializer.initialize()inmain() - Use Streams - Prefer
streamCollection()over polling - Offline Support - Enable
enableOfflinePersistence: true - Error Handling - Use try-catch for all database operations
- Immutable Models - Extend
Equatablefor data models - Batch Operations - Use batches for multiple writes
- Query Optimization - Index frequently queried fields
- Monitor Performance - Use sync status callbacks to track sync health
๐ Performance Characteristics #
- 1000 events: <5 seconds
- Event history: Max 100 events (configurable)
- Offline queue: Unlimited capacity with exponential backoff
- Memory usage: ~2-3 MB base + stream overhead
- Sync latency: 30 seconds default (configurable)
QuicUI Firebase v1.0.0 - Production-ready Firebase plugin for QuicUI
Status: โ Feature-Complete | โ Fully Tested | โ Fully Documented
๐ฆ View on pub.dev ๐ GitHub Repository