aves/lib/widgets/dialogs/cast_dialog.dart
Thibault Deckers fe46a1d388 Revert "upnp2 test"
This reverts commit 902ceca268.
2023-10-27 18:19:20 +03:00

61 lines
1.7 KiB
Dart

import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/dialogs/aves_dialog.dart';
import 'package:dlna_dart/dlna.dart';
import 'package:flutter/material.dart';
class CastDialog extends StatefulWidget {
static const routeName = '/dialog/cast';
const CastDialog({super.key});
@override
State<CastDialog> createState() => _CastDialogState();
}
class _CastDialogState extends State<CastDialog> {
final DLNAManager _dlnaManager = DLNAManager();
final Map<String, DLNADevice> _seenRenderers = {};
static const String upnpDeviceTypeMediaRenderer = 'urn:schemas-upnp-org:device:MediaRenderer:1';
@override
void initState() {
super.initState();
_dlnaManager.start().then((deviceManager) {
deviceManager.devices.stream.listen((devices) {
_seenRenderers.addAll(Map.fromEntries(devices.entries.where((kv) => kv.value.info.deviceType == upnpDeviceTypeMediaRenderer)));
setState(() {});
});
});
}
@override
void dispose() {
_dlnaManager.stop();
super.dispose();
}
@override
Widget build(BuildContext context) {
return AvesDialog(
title: context.l10n.castDialogTitle,
scrollableContent: [
if (_seenRenderers.isEmpty)
const Padding(
padding: EdgeInsets.all(16),
child: Center(
child: CircularProgressIndicator(),
),
),
..._seenRenderers.values.map((dev) => ListTile(
title: Text(dev.info.friendlyName),
onTap: () => Navigator.maybeOf(context)?.pop<DLNADevice>(dev),
)),
],
actions: const [
CancelButton(),
],
);
}
}