Showing
3 changed files
with
24 additions
and
2 deletions
| @@ -18,7 +18,14 @@ final class MediaTrackConstraintsDelegate { | @@ -18,7 +18,14 @@ final class MediaTrackConstraintsDelegate { | ||
| 18 | 18 | ||
| 19 | final MediaStreamTrack track = tracks.first; | 19 | final MediaStreamTrack track = tracks.first; |
| 20 | 20 | ||
| 21 | - final MediaTrackCapabilities capabilities = track.getCapabilities(); | 21 | + final MediaTrackCapabilities capabilities; |
| 22 | + | ||
| 23 | + if (track.getCapabilitiesNullable != null) { | ||
| 24 | + capabilities = track.getCapabilities(); | ||
| 25 | + } else { | ||
| 26 | + capabilities = MediaTrackCapabilities(); | ||
| 27 | + } | ||
| 28 | + | ||
| 22 | final MediaTrackSettings settings = track.getSettings(); | 29 | final MediaTrackSettings settings = track.getSettings(); |
| 23 | final JSArray<JSString>? facingModes = capabilities.facingModeNullable; | 30 | final JSArray<JSString>? facingModes = capabilities.facingModeNullable; |
| 24 | 31 |
| 1 | import 'dart:js_interop'; | 1 | import 'dart:js_interop'; |
| 2 | import 'package:web/web.dart'; | 2 | import 'package:web/web.dart'; |
| 3 | 3 | ||
| 4 | +/// This extension provides nullable properties for [MediaStreamTrack], | ||
| 5 | +/// for cases where the properties are not supported by all browsers. | ||
| 6 | +extension NullableMediaStreamTrackCapabilities on MediaStreamTrack { | ||
| 7 | + /// The `getCapabilities` function is not supported on Firefox. | ||
| 8 | + @JS('getCapabilities') | ||
| 9 | + external JSFunction? get getCapabilitiesNullable; | ||
| 10 | +} | ||
| 11 | + | ||
| 4 | /// This extension provides nullable properties for [MediaTrackCapabilities], | 12 | /// This extension provides nullable properties for [MediaTrackCapabilities], |
| 5 | /// for cases where the properties are not supported by all browsers. | 13 | /// for cases where the properties are not supported by all browsers. |
| 6 | extension NullableMediaTrackCapabilities on MediaTrackCapabilities { | 14 | extension NullableMediaTrackCapabilities on MediaTrackCapabilities { |
| @@ -125,7 +125,14 @@ class MobileScannerWeb extends MobileScannerPlatform { | @@ -125,7 +125,14 @@ class MobileScannerWeb extends MobileScannerPlatform { | ||
| 125 | } | 125 | } |
| 126 | 126 | ||
| 127 | final MediaStreamTrack videoTrack = tracks.first; | 127 | final MediaStreamTrack videoTrack = tracks.first; |
| 128 | - final MediaTrackCapabilities capabilities = videoTrack.getCapabilities(); | 128 | + final MediaTrackCapabilities capabilities; |
| 129 | + | ||
| 130 | + if (videoTrack.getCapabilitiesNullable != null) { | ||
| 131 | + capabilities = videoTrack.getCapabilities(); | ||
| 132 | + } else { | ||
| 133 | + capabilities = MediaTrackCapabilities(); | ||
| 134 | + } | ||
| 135 | + | ||
| 129 | final JSArray<JSString>? facingModes = capabilities.facingModeNullable; | 136 | final JSArray<JSString>? facingModes = capabilities.facingModeNullable; |
| 130 | 137 | ||
| 131 | // TODO: this is an empty array on MacOS Chrome, where there is no facing mode, but one, user facing camera. | 138 | // TODO: this is an empty array on MacOS Chrome, where there is no facing mode, but one, user facing camera. |
-
Please register or login to post a comment