flutter_freedome 4.0.0
flutter_freedome: ^4.0.0 copied to clipboard
Deprecated facade of the Freedome SDK (freedome_client): the flutter_freedome 3.0.0 API over the real network. New code: freedome_client.
Changelog #
4.0.0 - 2026-11-06 #
Deprecated facade over the Freedome SDK (03f 2.SDK.17; API-diff vs 3.0.0: 0 removals / changes).
- Every 3.0.0 symbol kept and
@Deprecated(seedoc/migration-to-freedome_client.md); services, provider andFlutterFreeDomeimplemented overfreedome_client/freedome_admin/freedome_flutter/freedome_device_fx— real network, no simulated domes, no process-wide singletons (one shared connection). - The 18 legacy command types are mapped onto contract operations; unmapped ones throw
UnsupportedError(logged once).getSocket()returns null. - Quantum fog / silence moved to
freedome_device_fxand re-exported unchanged; presets are data. - Additive:
FlutterFreeDome.configure(...),FlutterFreeDome.client, compatFreeDomeClient(serverUrl, appName, on…)(churyavzrosliy API), exports ofcalibration_models.dart/offline_models.dart(types already used in the 3.0.0 signatures). - Removed internals:
src/fog,src/stubs, the Linux quantum-fog sources and the iOSQuantumSilencePlugin.swift(now infreedome_device_fx); the package joins thefreedome_dartpub workspace.
Unreleased #
Completion of the published 3.0.0 source (recovered from the pub.dev archive; public API unchanged — verified by API-diff against the published 3.0.0 dump: 0 removals / changes).
- Generated the never-shipped
*.freezed.dart/*.g.dartparts of the 24@freezed/ json_serializable models (freezed 4, json_serializable 6) and committed them;@freezedclasses are declaredabstract classas freezed 3+ requires (they only have factory constructors, so nothing changes for users). - Licence: NativeMindNONC (workspace LICENSE). Homepage https://freedome.nativemind.us, repository
gitlab.com/FreeDome108/freedome_dart(packages/flutter_freedome). - SDK: Dart ^3.8.0, Flutter >=3.32.0. Dependencies brought up to date (
flutter_secure_storageup to 11.x,json_annotation^4.12.0); unused dependencies removed (dio, web_socket_channel, sqflite, connectivity_plus, logger, vector_math, sensors_plus, just_audio, audio_session, device_info_plus, permission_handler, path_provider, flutter_localizations, intl; dev: coverage). flutter analyze: 0 issues (deprecatedwithOpacity, unused imports, dangling doc comments, …).- Fixes without API changes:
FlutterFreeDome.versionreturns3.0.0(was a stale2.0.0+1);FreeDomeProvider.initialize()works again afterreset()(late-final re-assignment); re-initialisingFreeDomeContentServiceno longer duplicates the demo library;getUsageStats()['mostPlayedContent']isnullwhile nothing has been played. - Tests made green (152): harness fixes (Provider wrapper, mocked platform storage / plugin channels, no
dispose()of singletons between tests) and archive cases that called a never-published API re-targeted to the published one. - README and CHANGELOG translated to English (pub.dev English-content check; README code examples unchanged); README footer with licence and commercial-use contact; iOS / macOS podspec homepage / author filled in; example app: SDK constraints, lints and its widget test fixed.
- Removed archive debris:
coverage/,pubspec.yaml.backup, Magento leftovers (doc/{auth,cart,catalog,orders, SUMMARY}.md,ios|macos/flutter_magento.podspec,ios|macos/Classes/FlutterMagentoPlugin.swift), app-generatedlinux/flutter/.
Entries up to 2.0.0+1 were published in Russian; they are translated below. The published history has no separate 3.0.0 entry.
2.0.0+1 - 2025-01-27 #
🔄 Dependency updates (2025) #
- socket_io_client updated to ^3.1.2 for compatibility with current WebSocket connections
- All main dependencies updated to their 2025 versions
- SDK requirement raised to >=3.5.0 to use new language features
- Flutter requirement raised to >=3.24.0 for the latest features
🐛 Fixes #
- Resolved export conflicts between packages
- Fixed the duplicated types DomeSystemType and FreeDomePermission
- Improved compatibility with newer Flutter SDKs
📦 Dependency changes #
- Replaced path dependencies with hosted versions for publishing
- Updated dev dependencies for compatibility with newer versions
1.0.1 - 2025-09-19 #
🔄 Dependency updates #
- web_socket_channel updated to ^3.0.3 for compatibility with new projects
- device_info_plus updated to ^12.1.0
- connectivity_plus updated to ^6.0.5 for better network handling
- HTTP dependencies updated (dio ^5.4.3, http ^1.2.1)
🐛 Fixes #
- Resolved dependency version conflicts when integrating into existing projects
- Improved compatibility with Flutter 3.16+
1.0.0 - 2025-09-19 #
🎉 First release of Flutter FreeDome #
✨ New features
🎭 Guest mode
- Automatic discovery of FreeDome dome systems on the local network
- Content playback from any Flutter app on the dome screen
- Basic settings: projection volume and brightness
- Simple API for quick integration:
FlutterFreeDome.quickPlay() - Ready-made UI widgets for connection and playback control
🔧 Admin mode
- Authentication with roles (Guest, Operator, Admin, Superadmin)
- Full calibration of audio and video systems
- Projector management: brightness, contrast and alignment
- Audio channel calibration with microphones and Room EQ Wizard
- System administration with metrics monitoring and diagnostics
- Vendor support (Digistar, DomeMaster, IMAX Dome)
🏗️ Architecture and API
- Modular structure: core, guest and admin modules
- FreeDomeProvider — main entry point (Provider pattern)
- ConnectionService — connections and system discovery
- AuthService — authentication and roles
- ContentService — content library and playback
- CalibrationService — calibration (admins only)
- SystemService — system management (admins only)
📱 Ready-made widgets
- FreeDomeConnectionWidget — connection to domes
- FreeDomeContentPlayer — content player with controls
- FreeDomeStatusIndicator — connection status indicator
- FreeDomeDetailedStatus — detailed system information
🎯 Content support
- Interactive content from Flutter apps
- Real-time content (streaming, WebRTC)
- Multiple projection formats (Equirectangular, Fisheye, Fulldome, Cubemap)
- Content library with search and management
- Playlists with several playback modes
🔒 Security
- Permission system with fine-grained access control
- Secure token storage in FlutterSecureStorage
- JWT authentication with password hashing
- Sessions with automatic extension and logging
🌐 Platform support
- ✅ Android (API 21+)
- ✅ iOS (iOS 11.0+)
- ✅ Web (Chrome, Firefox, Safari)
- ✅ Windows (Windows 10+)
- ✅ macOS (macOS 10.14+)
- ✅ Linux (Ubuntu 18.04+)
🛠️ Infrastructure
- Code generation with Freezed and JsonSerializable
- Testing with unit and integration tests
- Documentation with usage examples
- Example app showing all features
📦 Dependencies
Main dependencies
flutter: >=3.10.0provider: ^6.1.1- state managementdio: ^5.4.0- HTTP clientsocket_io_client: ^2.0.3+1- WebSocket connectionsshared_preferences: ^2.2.2- local settings storageflutter_secure_storage: ^9.0.0- secure token storageconnectivity_plus: ^5.0.2- network monitoring
Additional dependencies
isar: ^3.1.0+1- local databasesqflite: ^2.3.0- SQLite for structured datasensors_plus: ^4.0.2- device sensorsjust_audio: ^0.9.37- audio playbackpermission_handler: ^11.3.0- permissionsdevice_info_plus: ^10.1.0- device information
Dev dependencies
build_runner: ^2.4.7- code generationfreezed: ^2.4.6- immutable classesjson_serializable: ^6.7.1- JSON serialisationmockito: ^5.4.4- mocks for tests
🎯 Usage examples
Quick start
// The simplest way
await FlutterFreeDome.quickPlay(
appName: 'MyApp',
contentName: 'My content',
appData: {'type': 'visualization'},
);
Full integration
// Initialisation
final freedome = FreeDomeProvider();
await freedome.initialize();
// Connect to a dome
await freedome.connectToNearestDome();
// Play content
await freedome.playAppContent(
appName: 'StarrySkr',
contentName: 'Starry sky',
appData: {'type': 'starfield'},
);
Admin mode
// Authentication
await freedome.authenticateAsAdmin(
username: 'admin',
password: 'password',
);
// Audio calibration
await freedome.calibration?.startAudioCalibration();
// System diagnostics
final health = await freedome.system?.getSystemHealth();
📋 System requirements
Minimum
- Flutter 3.10.0+
- Dart 3.0.0+
- FreeDome Core 2.0+
Recommended
- Flutter 3.16.0+
- Dart 3.2.0+
- FreeDome Core 2.5+
🔄 Migration
First release, no migration needed.
🐛 Known issues
- A full projector calibration cycle can take up to 30 minutes
- WebSocket connections may need to reconnect after long inactivity
- Some old FreeDome Core versions (< 2.0) may have limited compatibility
🙏 Thanks
Thanks to everyone who helped with the first version:
- the FreeDome team for API support
- the Flutter community for great libraries
- the beta testers for their feedback
Documentation: https://pub.dev/packages/flutter_freedome Source code (at the time): https://github.com/nativemind/flutter_freedome Support: support@nativemind.ru