quicui 2.0.2
quicui: ^2.0.2 copied to clipboard
Over-the-air (OTA) updates for Flutter apps. Download and install code updates instantly with QuicUI Code Push system.
QuicUI - Code Push for Flutter #
A Flutter plugin for Over-The-Air (OTA) updates using QuicUI Code Push system. Deploy code updates to your Flutter applications instantly.
Features #
- 🚀 Over-the-air updates: Deploy updates instantly
- 🔒 Secure patching: Uses BsDiff binary patching with signature verification
- 📦 Small patch sizes: Only downloads differences between versions
- ✅ Rollback support: Automatic rollback on update failures
- 🎯 Targeted releases: Deploy to specific versions or user segments
- 📊 Update tracking: Monitor patch installation and success rates
Installation #
Add this to your package's pubspec.yaml file:
dependencies:
quicui: ^2.0.0
Then run:
flutter pub get
Usage #
Basic Setup #
import 'package:quicui/quicui.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// Initialize QuicUI Code Push
final quicui = QuicUICodePush(
appId: 'com.yourcompany.app',
clientSecret: 'your-client-secret',
appVersion: '1.0.0',
);
await quicui.initialize();
runApp(MyApp());
}
Check for Updates #
// Create QuicUI instance
final quicui = QuicUICodePush(
appId: 'com.yourcompany.app',
clientSecret: 'your-client-secret',
appVersion: '1.0.0',
);
await quicui.initialize();
// Check if an update is available
final updateAvailable = await quicui.checkForUpdates();
if (updateAvailable != null) {
print('Update available: ${updateAvailable.version}');
}
Download and Install Update #
// Download and install the update
final success = await quicui.downloadAndInstall(updateInfo);
if (success) {
print('Update installed! Restart app to apply.');
// Show restart prompt to user
}
Full Update Flow #
Future<void> checkAndApplyUpdates() async {
try {
final quicui = QuicUICodePush(
appId: 'com.yourcompany.app',
clientSecret: 'your-client-secret',
appVersion: '1.0.0',
);
await quicui.initialize();
// Check for updates
final patchInfo = await quicui.checkForUpdates();
if (patchInfo != null) {
print('Update ${patchInfo.version} available');
// Download and install
final success = await quicui.downloadAndInstall(patchInfo);
if (success) {
// Show dialog to restart
showRestartDialog();
}
}
} catch (e) {
print('Update failed: $e');
}
}
Configuration Options #
final quicui = QuicUICodePush(
appId: 'com.yourcompany.app',
clientSecret: 'your-client-secret',
appVersion: '1.0.0',
// Optional: Verify patch signatures
publicKey: 'your-rsa-public-key',
// Optional: Auto-check on app start
autoCheckOnStart: true,
// Optional: Custom update check interval (in seconds)
checkIntervalSeconds: 3600, // 1 hour
// Optional: Maximum patch size
maxPatchSize: 10 * 1024 * 1024, // 10 MB
);
await quicui.initialize();
Platform Support #
| Platform | Support | Status |
|---|---|---|
| Android | ✅ Full | Production ready |
| iOS | 🚧 WIP | Coming soon |
| Web | ❌ No | Not applicable |
| Desktop | ❌ No | Not yet supported |
Example #
See the example directory for a complete working app demonstrating:
- Update checking
- Progress tracking
- Installation flow
- Error handling
Run the example:
cd example
flutter run
Contributing #
Contributions are welcome! Please read our Contributing Guide first.
License #
This project is licensed under the BSD 3-Clause License - see the LICENSE file for details.
Resources #
Support #
- 📧 Email: support@quicui.dev
- 💬 Discord: Join our community
- 🐛 Bug reports: GitHub Issues
Made with ❤️ by the QuicUI Team