discoverDevices method

Future<List<Map<String, dynamic>>> discoverDevices()

Busca dispositivos disponibles para compartir

Implementation

Future<List<Map<String, dynamic>>> discoverDevices() async {
  if (!_isInitialized) {
    await initialize();
  }

  try {
    final result = await _channel.invokeMethod('discoverDevices');
    if (result is List) {
      // Conversión segura de tipos mixtos desde Java
      return result.map((item) {
        if (item is Map) {
          // Convertir Map<Object?, Object?> a Map<String, dynamic>
          final Map<String, dynamic> convertedMap = {};
          item.forEach((key, value) {
            if (key is String) {
              convertedMap[key] = value;
            }
          });
          return convertedMap;
        }
        return <String, dynamic>{};
      }).toList();
    }
    return [];
  } catch (e) {
    _errorController.add('Error buscando dispositivos: $e');

    // Si es un MissingPluginException, usar fallback
    if (e.toString().contains('MissingPluginException')) {
      return [
        {
          "id": "shareplay_group",
          "name": "Compartir con Grupo",
          "type": "shareplay",
          "isConnected": false
        }
      ];
    }

    return [];
  }
}