Navaron Bracke

manage constraints listener for ZXing

@@ -18,6 +18,9 @@ import 'package:web/web.dart' as web; @@ -18,6 +18,9 @@ import 'package:web/web.dart' as web;
18 final class ZXingBarcodeReader extends BarcodeReader { 18 final class ZXingBarcodeReader extends BarcodeReader {
19 ZXingBarcodeReader(); 19 ZXingBarcodeReader();
20 20
  21 + /// The listener for media track constraints changes.
  22 + void Function(web.MediaTrackConstraints)? _onMediaTrackConstraintsChanged;
  23 +
21 /// The internal media stream track constraints delegate. 24 /// The internal media stream track constraints delegate.
22 final MediaTrackConstraintsDelegate _mediaTrackConstraintsDelegate = const MediaTrackConstraintsDelegate(); 25 final MediaTrackConstraintsDelegate _mediaTrackConstraintsDelegate = const MediaTrackConstraintsDelegate();
23 26
@@ -184,6 +187,11 @@ final class ZXingBarcodeReader extends BarcodeReader { @@ -184,6 +187,11 @@ final class ZXingBarcodeReader extends BarcodeReader {
184 } 187 }
185 188
186 @override 189 @override
  190 + void setMediaTrackConstraintsListener(void Function(web.MediaTrackConstraints) listener) {
  191 + _onMediaTrackConstraintsChanged ??= listener;
  192 + }
  193 +
  194 + @override
187 Future<void> setTorchState(TorchState value) { 195 Future<void> setTorchState(TorchState value) {
188 switch (value) { 196 switch (value) {
189 case TorchState.unavailable: 197 case TorchState.unavailable:
@@ -234,6 +242,7 @@ final class ZXingBarcodeReader extends BarcodeReader { @@ -234,6 +242,7 @@ final class ZXingBarcodeReader extends BarcodeReader {
234 242
235 @override 243 @override
236 Future<void> stop() async { 244 Future<void> stop() async {
  245 + _onMediaTrackConstraintsChanged = null;
237 _reader?.stopContinuousDecode.callAsFunction(); 246 _reader?.stopContinuousDecode.callAsFunction();
238 _reader?.reset.callAsFunction(); 247 _reader?.reset.callAsFunction();
239 _reader = null; 248 _reader = null;