import 'package:barcode_scan2/barcode_scan2.dart'; class QRCodeBarCodeScanner { static final QRCodeBarCodeScanner _instance = QRCodeBarCodeScanner(); static QRCodeBarCodeScanner get instance => _instance; final _selectedCamera = -1; final bool _useAutoFocus = true; static final _possibleFormats = BarcodeFormat.values.toList() ..removeWhere((e) => e == BarcodeFormat.unknown); ScanResult scanResult = ScanResult(); List selectedFormats = [..._possibleFormats]; Future scanner() async { ScanOptions options = ScanOptions( strings: { "cancel": "Back", "flash_on": "Flash on", "flash_off": "Flash off", }, restrictFormat: selectedFormats, useCamera: _selectedCamera, // autoEnableFlash: _autoEnableFlash, android: AndroidOptions( // aspectTolerance: _aspectTolerance, useAutoFocus: _useAutoFocus, ), ); try { scanResult = await BarcodeScanner.scan(options: options); } on Error catch (e) { throw (e.toString()); } return scanResult; } }