Navaron Bracke

fix getCapabilities for Firefox

... ... @@ -18,7 +18,14 @@ final class MediaTrackConstraintsDelegate {
final MediaStreamTrack track = tracks.first;
final MediaTrackCapabilities capabilities = track.getCapabilities();
final MediaTrackCapabilities capabilities;
if (track.getCapabilitiesNullable != null) {
capabilities = track.getCapabilities();
} else {
capabilities = MediaTrackCapabilities();
}
final MediaTrackSettings settings = track.getSettings();
final JSArray<JSString>? facingModes = capabilities.facingModeNullable;
... ...
import 'dart:js_interop';
import 'package:web/web.dart';
/// This extension provides nullable properties for [MediaStreamTrack],
/// for cases where the properties are not supported by all browsers.
extension NullableMediaStreamTrackCapabilities on MediaStreamTrack {
/// The `getCapabilities` function is not supported on Firefox.
@JS('getCapabilities')
external JSFunction? get getCapabilitiesNullable;
}
/// This extension provides nullable properties for [MediaTrackCapabilities],
/// for cases where the properties are not supported by all browsers.
extension NullableMediaTrackCapabilities on MediaTrackCapabilities {
... ...
... ... @@ -125,7 +125,14 @@ class MobileScannerWeb extends MobileScannerPlatform {
}
final MediaStreamTrack videoTrack = tracks.first;
final MediaTrackCapabilities capabilities = videoTrack.getCapabilities();
final MediaTrackCapabilities capabilities;
if (videoTrack.getCapabilitiesNullable != null) {
capabilities = videoTrack.getCapabilities();
} else {
capabilities = MediaTrackCapabilities();
}
final JSArray<JSString>? facingModes = capabilities.facingModeNullable;
// TODO: this is an empty array on MacOS Chrome, where there is no facing mode, but one, user facing camera.
... ...