Navaron Bracke

fix missing isClosed checks

... ... @@ -119,9 +119,11 @@ class MobileScannerController extends ValueNotifier<MobileScannerState> {
void _setupListeners() {
_barcodesSubscription = MobileScannerPlatform.instance.barcodesStream
.listen((BarcodeCapture? barcode) {
if (!_barcodesController.isClosed && barcode != null) {
_barcodesController.add(barcode);
if (_barcodesController.isClosed || barcode == null) {
return;
}
_barcodesController.add(barcode);
});
_torchStateSubscription = MobileScannerPlatform.instance.torchStateStream
... ...
... ... @@ -113,7 +113,9 @@ class MobileScannerWeb extends MobileScannerPlatform {
try {
// Clear the existing barcodes.
_barcodesController.add(const BarcodeCapture());
if (!_barcodesController.isClosed) {
_barcodesController.add(const BarcodeCapture());
}
// Listen for changes to the media track settings.
_barcodeReader.setMediaTrackSettingsListener(
... ...
... ... @@ -187,13 +187,15 @@ final class ZXingBarcodeReader extends BarcodeReader {
_reader as JSAny?,
_reader?.videoElement as JSAny?,
(Result? result, JSAny? error) {
if (!controller.isClosed && result != null) {
controller.add(
BarcodeCapture(
barcodes: [result.toBarcode],
),
);
if (controller.isClosed || result == null) {
return;
}
controller.add(
BarcodeCapture(
barcodes: [result.toBarcode],
),
);
}.toJS,
);
};
... ...