frosty/lib/services/cast_state.dart
kaoru dbf606c1da Add Google Cast support with local HLS relay
- Add Cast receiver configuration and Android glue
- Proxy and rewrite HLS playback for Chromecast
- Surface cast state and controls in the Flutter UI
2026-06-10 12:55:48 -04:00

32 lines
926 B
Dart

class CastState {
final bool isCasting;
final String? receiverName;
final Duration? latency;
const CastState({required this.isCasting, this.receiverName, this.latency});
const CastState.disconnected()
: isCasting = false,
receiverName = null,
latency = null;
int? get latencySeconds => latency?.inSeconds;
factory CastState.fromMethodChannelPayload(Object? payload) {
if (payload is! Map) return const CastState.disconnected();
final isCasting = payload['isCasting'] == true;
final receiverName = payload['receiverName'];
final latencyMs = payload['latencyMs'];
return CastState(
isCasting: isCasting,
receiverName: receiverName is String && receiverName.trim().isNotEmpty
? receiverName.trim()
: null,
latency: latencyMs is num && latencyMs >= 0
? Duration(milliseconds: latencyMs.round())
: null,
);
}
}