Skip to main content

freedome_flutter 1.0.1 copy "freedome_flutter: ^1.0.1" to clipboard
freedome_flutter: ^1.0.1 copied to clipboard

Flutter glue for freedome_client: UI-kit port bindings, secure token store, prefs cache and outbox, Bonjour discovery, lifecycle hooks and the dome sound engine.

freedome_flutter #

Flutter glue for freedome_client: the platform pieces a Flutter app needs to keep a dome connection healthy.

Piece Port it implements Backed by
SecureTokenStore, SecurePinStore TokenStore, PinStore flutter_secure_storage (Keychain / Keystore / libsecret)
PrefsCacheStore, PrefsOutboxStore CacheStore, OutboxStore shared_preferences (small JSON only)
BonsoirDomeDiscovery DomeDiscovery (_freedome._tcp) bonsoir (Bonjour / NSD)
FreedomeLifecycleBinding network + foreground / background → networkAvailable / networkLost / enterBackground / resume connectivity_plus, WidgetsBindingObserver
import 'package:flutter/widgets.dart' hide ConnectionState; // freedome_client has its own ConnectionState
import 'package:freedome_client/freedome_client.dart';
import 'package:freedome_flutter/freedome_flutter.dart';

final domes = await BonsoirDomeDiscovery().scan();
final client = FreedomeClient(
  endpoint: domes.first.endpoint,
  credentials: const PairingCredentials(app: 'net.nativemind.myapp', deviceName: 'Phone'),
  tokenStore: SecureTokenStore(),
  pinStore: SecurePinStore(),
  cache: PrefsCacheStore(),
  outbox: PrefsOutboxStore(),
);
final lifecycle = FreedomeLifecycleBinding(client);
await client.open();

Platform setup #

iOS (ios/Runner/Info.plist) — local network permission and the Bonjour type:

<key>NSLocalNetworkUsageDescription</key>
<string>Finds Freedome domes on your network.</string>
<key>NSBonjourServices</key>
<array>
  <string>_freedome._tcp</string>
</array>

macOS (macos/Runner/*.entitlements): com.apple.security.network.client = true (and the same Info.plist keys).

Android (android/app/src/main/AndroidManifest.xml):

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

Bonsoir uses NsdManager, which needs no multicast lock. Domes on a plain-HTTP LAN endpoint additionally need a network-security config that allows cleartext to the dome's address (or TLS with a pinned certificate, preferred).

Linux: libsecret-1-dev for the secure store; Avahi for discovery.

UI-kit port bindings arrive with 4.SDK.9 and FreedomeSoundEngine with 3.SDK.3.

Licence: NativeMindNONC (see LICENSE); commercial use → NativeMind sales. Support: support@freedome.nativemind.net.

0
likes
150
points
--
downloads

Documentation

API reference

Publisher

unverified uploader

Flutter glue for freedome_client: UI-kit port bindings, secure token store, prefs cache and outbox, Bonjour discovery, lifecycle hooks and the dome sound engine.

Homepage
Repository (GitLab)

License

unknown (license)

Dependencies

bonsoir, clock, connectivity_plus, flutter, flutter_secure_storage, freedome_admin, freedome_client, nativemind_freedome, nativemind_sound, shared_preferences

More

Packages that depend on freedome_flutter