Skip to main content

flutter_freedome 4.0.0 copy "flutter_freedome: ^4.0.0" to clipboard
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 (see doc/migration-to-freedome_client.md); services, provider and FlutterFreeDome implemented over freedome_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_fx and re-exported unchanged; presets are data.
  • Additive: FlutterFreeDome.configure(...), FlutterFreeDome.client, compat FreeDomeClient(serverUrl, appName, on…) (churyavzrosliy API), exports of calibration_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 iOS QuantumSilencePlugin.swift (now in freedome_device_fx); the package joins the freedome_dart pub 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.dart parts of the 24 @freezed / json_serializable models (freezed 4, json_serializable 6) and committed them; @freezed classes are declared abstract class as 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_storage up 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 (deprecated withOpacity, unused imports, dangling doc comments, …).
  • Fixes without API changes: FlutterFreeDome.version returns 3.0.0 (was a stale 2.0.0+1); FreeDomeProvider.initialize() works again after reset() (late-final re-assignment); re-initialising FreeDomeContentService no longer duplicates the demo library; getUsageStats()['mostPlayedContent'] is null while 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-generated linux/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.0
  • provider: ^6.1.1 - state management
  • dio: ^5.4.0 - HTTP client
  • socket_io_client: ^2.0.3+1 - WebSocket connections
  • shared_preferences: ^2.2.2 - local settings storage
  • flutter_secure_storage: ^9.0.0 - secure token storage
  • connectivity_plus: ^5.0.2 - network monitoring
Additional dependencies
  • isar: ^3.1.0+1 - local database
  • sqflite: ^2.3.0 - SQLite for structured data
  • sensors_plus: ^4.0.2 - device sensors
  • just_audio: ^0.9.37 - audio playback
  • permission_handler: ^11.3.0 - permissions
  • device_info_plus: ^10.1.0 - device information
Dev dependencies
  • build_runner: ^2.4.7 - code generation
  • freezed: ^2.4.6 - immutable classes
  • json_serializable: ^6.7.1 - JSON serialisation
  • mockito: ^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+
  • 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