barcode_scan 3.0.1

Flutter Android iOS

A flutter plugin for scanning 2D barcodes and QRCodes via camera.

GitHub license GitHub stars Pub GitHub forks

Barcode Scanner #

A flutter plugin for scanning 2D barcodes and QR codes.

This provides a simple wrapper for two commonly used iOS and Android libraries:

iOS: https://github.com/mikebuss/MTBBarcodeScanner

Android: https://github.com/dm77/barcodescanner

Features #

  • [x] Scan 2D barcodes
  • [x] Scan QR codes
  • [x] Control the flash while scanning
  • [x] Permission handling

Getting Started #

Android #

For Android, you must do the following before you can use the plugin:

  • Add the camera permission to your AndroidManifest.xml

    <uses-permission android:name="android.permission.CAMERA" />

  • This plugin is written in Kotlin. Therefore, you need to add Kotlin support to your project. See installing the Kotlin plugin.

Edit your project-level build.gradle file to look like this:

buildscript {
    ext.kotlin_version = '1.3.61'
    // ...
    dependencies {
        // ...
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}
// ...

Edit your app-level build.gradle file to look like this:

apply plugin: 'kotlin-android'
// ...
dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    // ...
}

Now you can depend on the barcode_scan plugin in your pubspec.yaml file:

dependencies:
    # ...
    barcode_scan: any

Click "Packages get" in Android Studio or run flutter packages get in your project folder.

iOS #

To use on iOS, you must add the the camera usage description to your Info.plist

<dict>
    <!-- ... -->
    <key>NSCameraUsageDescription</key>
    <string>Camera permission is required for barcode scanning.</string>
    <!-- ... -->
</dict>

Usage #


import 'package:barcode_scan/barcode_scan.dart';

void main() async {
  var result = await BarcodeScanner.scan();
  
  print(result.type); // The result type (barcode, cancelled, failed)
  print(result.rawContent); // The barcode content
  print(result.format); // The barcode format (as enum)
  print(result.formatNote); // If a unknown format was scanned this field contains a note
}

Advanced usage #

You can pass options to the scan method:


import 'package:barcode_scan/barcode_scan.dart';

void main() async {
  
  var options = ScanOptions(
    // set the options
  );

  var result = await BarcodeScanner.scan(options: options);
  
  // ...
}

Supported options #

OptionTypeDescriptionSupported by
strings.cancelStringThe cancel button text on iOSiOS only
strings.flash_onStringThe flash on button textiOS + Android
strings.flash_offStringThe flash off button textiOS + Android
restrictFormatBarcodeFormat[]Restrict the formats which are recognizediOS + Android
useCameraintThe index of the camera which is used for scanning (See BarcodeScanner.numberOfCameras)iOS + Android
autoEnableFlashboolEnable the flash when start scanningiOS + Android
android.aspectTolerancedoubleEnable the flash when start scanningAndroid only
android.useAutoFocusboolEnable the flash when start scanningAndroid only

Development setup #

Setup protobuf #

Mac:

$ brew install protobuf
$ brew install swift-protobuf

Windows / Linux: https://github.com/protocolbuffers/protobuf#protocol-compiler-installation

Activate the protobuf dart plugin: $ pub global activate protoc_plugin

Install theProtobuf Support plugin for IDEA / Android Studio or vscode-proto3 for VS Code

If you changed the protos.proto you've to execute the ./generate_proto.sh to update the dart / swift sources

Common problems #

Android "Could not find org.jetbrains.kotlin:kotlin-stdlib-jre..." #

Change org.jetbrains.kotlin:kotlin-stdlib-jre to org.jetbrains.kotlin:kotlin-stdlib-jdk (StackOverflow)

253
likes
80
pub points
98%
popularity

Publisher

mintware.de

A flutter plugin for scanning 2D barcodes and QRCodes via camera.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

flutter, protobuf

More

Packages that depend on barcode_scan