@@ -24,15 +24,24 @@ class navigator {
24
24
static Future <MediaStream > getDisplayMedia (
25
25
Map <String , dynamic > mediaConstraints) async {
26
26
final nav = HTML .window.navigator;
27
- final mediaDevices = nav.mediaDevices;
28
- final jsMediaDevices = JS .JsObject .fromBrowserObject (mediaDevices);
29
- if (jsMediaDevices.hasProperty (getDisplayMedia)) {
27
+ final jsMediaDevices =
28
+ JS .JsObject .fromBrowserObject (JS .context[ 'navigator' ][ ' mediaDevices' ] );
29
+ if (jsMediaDevices.hasProperty (" getDisplayMedia" )) {
30
30
final JS .JsObject arg = JS .JsObject .jsify ({"video" : true });
31
- JS .JsObject getDisplayMediaPromise =
31
+ JS .JsObject jsPromise =
32
32
jsMediaDevices.callMethod ('getDisplayMedia' , [arg]);
33
- final HTML .MediaStream jsStream =
34
- await HTML .promiseToFuture (getDisplayMediaPromise);
35
- return MediaStream (jsStream);
33
+ var completer = new Completer <MediaStream >();
34
+ jsPromise.callMethod ('then' , [
35
+ (r) {
36
+ completer.complete (MediaStream (r as HTML .MediaStream ));
37
+ }
38
+ ]);
39
+ jsPromise.callMethod ('catch' , [
40
+ (e) {
41
+ completer.completeError (e);
42
+ }
43
+ ]);
44
+ return completer.future;
36
45
} else {
37
46
final HTML .MediaStream jsStream = await nav.getUserMedia (
38
47
video: {"mediaSource" : 'screen' },
0 commit comments