mediaDevices.enumerateDevices () генерирует ошибку времени выполнения в браузере - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь захватить звук с источника входного сигнала через веб-приложение в браузере, используя Dart 2.7.0 SDK. Я хочу иметь возможность идентифицировать доступные аудиоисточники в системе, чтобы пользователь мог выбирать среди них (а не полагаться исключительно на источник по умолчанию):

captureAudio() async{
   List<MediaDeviceInfo> sources = await window.navigator.mediaDevices.enumerateDevices();

    // Do more stuff here

    // Note that there are numerous differences in media APIs between those listed
    // for Dart and the JavaScript APIs shown on MDN. Those differences may or may not
    // have any effect on this error
}

Строка кода выше компилируется успешно, но генерирует ошибку в Chrome 79.0.3945.88, обслуживаемую из Webdev в Webstorm 2019.3.1, в режиме отладки или нет (примечание: MDN показывает, что соответствующий вызов метода JS должен работать в Chrome):

Uncaught (in promise) Error: Type 'List<dynamic>' should be 'List<MediaDeviceInfo>' to implement expected type 'FutureOr<List<MediaDeviceInfo>>'.
DartError                   dart_sdk.js:5172
throw_                      dart_sdk.js:3880
castError                   dart_sdk.js:3840
cast                        dart_sdk.js:4159
check_FutureOr              dart_sdk.js:27380
(anonymous function)        dart_sdk.js:52085
Async call from Promise.then
promiseToFuture             dart_sdk.js:52087
[dartx.enumerateDevices]    dart_sdk.js:79203
captureAudio                capturewebaudio.dart:51
runBody                     dart_sdk.js:32202
_async                      dart_sdk.js:32230
captureAudio                capturewebaudio.dart:50
(anonymous function)        capturewebaudio.dart:40
_checkAndCall               dart_sdk.js:4084
dcall                       dart_sdk.js:4089
(anonymous function)        dart_sdk.js:97072

Документация по Dart для этой топики c по существу не существует, и, учитывая различия в API-интерфейсах Dart и JS, я не уверен, каково разрешение этой проблемы.

1 Ответ

0 голосов
/ 12 января 2020

Это похоже на ошибку в Dart SDK. См. Ошибку 39627 в списке проблем Dart SDK. Исправление проходит через процесс разработки.

...