From 01145bf36c791bc701608bb1152755ad8d5859da Mon Sep 17 00:00:00 2001 From: MOHAMMAD RASIM Date: Tue, 3 Jan 2023 04:55:41 +0300 Subject: [PATCH] Fix Audio output list is empty in android (#231) This used to throw a state error under android becuase the audio output list is empty --- lib/src/hardware/hardware.dart | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/src/hardware/hardware.dart b/lib/src/hardware/hardware.dart index 129a729..a55c774 100644 --- a/lib/src/hardware/hardware.dart +++ b/lib/src/hardware/hardware.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:collection/collection.dart'; import 'package:flutter_webrtc/flutter_webrtc.dart' as rtc; class MediaDevice { @@ -34,11 +35,11 @@ class Hardware { rtc.navigator.mediaDevices.ondevicechange = _onDeviceChange; enumerateDevices().then((devices) { selectedAudioInput ??= - devices.where((element) => element.kind == 'audioinput').first; + devices.firstWhereOrNull((element) => element.kind == 'audioinput'); selectedAudioOutput ??= - devices.where((element) => element.kind == 'audiooutput').first; + devices.firstWhereOrNull((element) => element.kind == 'audiooutput'); selectedVideoInput ??= - devices.where((element) => element.kind == 'videoinput').first; + devices.firstWhereOrNull((element) => element.kind == 'videoinput'); }); } @@ -124,11 +125,11 @@ class Hardware { dynamic _onDeviceChange(dynamic _) async { var devices = await enumerateDevices(); selectedAudioInput ??= - devices.where((element) => element.kind == 'audioinput').first; + devices.firstWhereOrNull((element) => element.kind == 'audioinput'); selectedAudioOutput ??= - devices.where((element) => element.kind == 'audiooutput').first; + devices.firstWhereOrNull((element) => element.kind == 'audiooutput'); selectedVideoInput ??= - devices.where((element) => element.kind == 'videoinput').first; + devices.firstWhereOrNull((element) => element.kind == 'videoinput'); onDeviceChange.add(devices); } }