File tree Expand file tree Collapse file tree 3 files changed +31
-8
lines changed Expand file tree Collapse file tree 3 files changed +31
-8
lines changed Original file line number Diff line number Diff line change @@ -13,6 +13,17 @@ import 'package:web/web.dart';
1313abstract class BarcodeReader {
1414 const BarcodeReader ();
1515
16+ /// Whether the video feed is paused
17+ bool ? get paused =>
18+ throw UnimplementedError ('paused has not been implemented.' );
19+
20+ /// Pause the barcode reader.
21+ void pause () => throw UnimplementedError ('pause() has not been implemented.' );
22+
23+ /// Pause the barcode reader.
24+ Future <void > resume () =>
25+ throw UnimplementedError ('resume() has not been implemented.' );
26+
1627 /// Whether the scanner is currently scanning for barcodes.
1728 bool get isScanning {
1829 throw UnimplementedError ('isScanning has not been implemented.' );
@@ -128,11 +139,6 @@ abstract class BarcodeReader {
128139 throw UnimplementedError ('start() has not been implemented.' );
129140 }
130141
131- /// Pause the barcode reader.
132- Future <void > pause () {
133- throw UnimplementedError ('pause() has not been implemented.' );
134- }
135-
136142 /// Stop the barcode reader and dispose of the video stream.
137143 Future <void > stop () {
138144 throw UnimplementedError ('stop() has not been implemented.' );
Original file line number Diff line number Diff line change @@ -263,6 +263,16 @@ class MobileScannerWeb extends MobileScannerPlatform {
263263 @override
264264 Future <MobileScannerViewAttributes > start (StartOptions startOptions) async {
265265 if (_barcodeReader != null ) {
266+ if (_barcodeReader! .paused ?? false ) {
267+ await _barcodeReader? .resume ();
268+ return MobileScannerViewAttributes (
269+ // The torch of a media stream is not available for video tracks.
270+ // See https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints#instance_properties_of_video_tracks
271+ currentTorchMode: TorchState .unavailable,
272+ size: _barcodeReader? .videoSize ?? Size .zero,
273+ );
274+ }
275+
266276 throw const MobileScannerException (
267277 errorCode: MobileScannerErrorCode .controllerAlreadyInitialized,
268278 errorDetails: MobileScannerErrorDetails (
@@ -365,7 +375,7 @@ class MobileScannerWeb extends MobileScannerPlatform {
365375 @override
366376 Future <void > pause () async {
367377 _barcodesSubscription? .pause ();
368- await _barcodeReader? .pause ();
378+ _barcodeReader? .pause ();
369379 }
370380
371381 @override
Original file line number Diff line number Diff line change @@ -169,8 +169,15 @@ final class ZXingBarcodeReader extends BarcodeReader {
169169 }
170170
171171 @override
172- Future <void > pause () async {
173- _reader? .videoElement? .pause ();
172+ bool ? get paused => _reader? .videoElement? .paused;
173+
174+ @override
175+ void pause () => _reader? .videoElement? .pause ();
176+
177+ @override
178+ Future <void > resume () async {
179+ final result = _reader? .videoElement? .play ();
180+ await result? .toDart;
174181 }
175182
176183 @override
You can’t perform that action at this time.
0 commit comments