AudioDevice.fromMap constructor

AudioDevice.fromMap(
  1. Map<String, dynamic> map
)

Implementation

factory AudioDevice.fromMap(Map<String, dynamic> map) {
  final String protocolString = map['protocol'] as String? ?? 'unknown';

  AudioProtocol protocol;
  switch (protocolString) {
    case 'bluetooth_a2dp': // 네이티브에서 이 문자열을 보내줘야 함
      protocol = AudioProtocol.bluetoothA2dp;
      break;
    case 'bluetooth_hfp':  // 네이티브에서 이 문자열을 보내줘야 함
      protocol = AudioProtocol.bluetoothHfp;
      break;
    case 'bluetooth_le':
      protocol = AudioProtocol.bluetoothLe;
      break;
    case 'wired':
      protocol = AudioProtocol.wired;
      break;
    case 'speaker':
      protocol = AudioProtocol.speaker;
      break;
    case 'earpiece':
      protocol = AudioProtocol.earpiece;
      break;
    case 'airplay':
      protocol = AudioProtocol.airplay;
      break;
    case 'wifi':
      protocol = AudioProtocol.wifi;
      break;
    default:
    // 혹시 모를 예외나 단순히 "bluetooth"라고만 올 경우를 대비
      if (protocolString.contains('bluetooth')) {
        protocol = AudioProtocol.bluetoothA2dp; // 기본값은 A2DP로 가정
      } else {
        protocol = AudioProtocol.unknown;
      }
  }

  return AudioDevice(
    name: map['name'] as String? ?? 'Unknown',
    protocol: protocol,
    address: map['address'] as String?,
    isConnected: map['isConnected'] as bool? ?? true,
  );
}