scanAllDlnaDevices function

Future<List<DiscoveredDevice>> scanAllDlnaDevices({
  1. Duration scanDuration = const Duration(seconds: 3),
  2. dynamic onDeviceFound(
    1. DiscoveredDevice
    )?,
})

Scan for all DLNA devices (including Renderers and Media Servers) onDeviceFound 回調函數,當找到新裝置時調用

Implementation

Future<List<DiscoveredDevice>> scanAllDlnaDevices({
  Duration scanDuration = const Duration(seconds: 3),
  Function(DiscoveredDevice)? onDeviceFound,
}) async {
  final logger = AppLogger();
  await logger.info('info.start_all_dlna_scan', tag: 'SSDP');

  // 使用 Future.wait 同時掃描兩種裝置
  final results = await Future.wait([
    scanDlnaRendererDevices(
      scanDuration: scanDuration,
      onDeviceFound: onDeviceFound,
    ),
    scanDlnaMediaServerDevices(
      scanDuration: scanDuration,
      onDeviceFound: onDeviceFound,
    ),
  ]);

  final renderers = results[0];
  final mediaServers = results[1];

  final devices = [...renderers, ...mediaServers];
  await logger.info(
    'info.all_dlna_scan_complete',
    tag: 'SSDP',
    params: {'count': devices.length},
  );
  return devices;
}