scanwedge 1.0.4 copy "scanwedge: ^1.0.4" to clipboard
scanwedge: ^1.0.4 copied to clipboard

PlatformAndroid

A Flutter plugin to communicate with the Zebra Datawedge

Scanwedge #

Scanwedge is a Flutter plugin for Android devices that have hardware barcode scanner functionality.
Currently it supports Honeywell, Datalogic, Newland and Zebra devices.
This will only work for these Android devices, but it will not have any negative impact on other devices.
Code inspired by sample code from Honeywell, Zebra and ofcourse the Flutter community. Thanks to @M-Ahal for adding Newland support.

Getting Started #

Commands #

Command Description
createProfile Created a new scanner profile, input is a ProfileModel
disableScanner Disables the scanner, for Honeywell devices it will still "read" but not send the result
enableScanner Enables the scanner
initialize Requests and initialize the Scanwedge, this must be called before using the Scanwedge
isDeviceSupported Returns true if it's a supported device, if this is false the other methods will be ignored when called
manufacturer Returns the manufacturer of the device
modelName Returns the modelname of the device
osVersion Returns the OS version on the device
packageName Returns the package name of the host application, this will also be used as default package name in [ScanProfile] if not set
productName Returns the productname of the device
supportedDevice Returns a [SupportedDevice] object with the information if the device is supported and the type
stream Request a stream of barcode scans, returns barcodes scanned with the [ScanResult]
toggleScanning Triggers a scan (SOFTTRIGGER)
getBatteryStatus Returns the battery status of the device. This function might be removed from this package in the future

Creating a new basic profile #

final _scanwedgePlugin = await Scanwedge.initialize();

//Creating a new profile with the name TestProfile that only reads CODE128 barcodes with the length between 5 and 10
_scanwedgePlugin.createProfile(ProfileModel(profileName: 'TestProfile', enabledBarcodes: [BarcodeTypes.code128.create(minLength: 5, maxLength: 10)]))

ProfileModel #

This class sets the scan profile

ProfileModel({
    required String profileName,                      // The name of the profile
    List<BarcodeConfig>? enabledBarcodes,             // A list of [BarcodeConfig] that will be enabled in the profile
    bool keepDefaults = true,                         // If true, the default enabled barcodes from the hardware used will be kept (together with [enabledBarcodes])
});

ZebraProfileModel #

This class is a extended version of [ProfileModel] that adds more configuration options if the device is a Zebra device (will also work with other devices but then ignore the extra configuration) The extra options are: [aimType] - The type of aim, see [AimTypes], default is [AimType.trigger] [enableKeyStroke] - Enable sending scans to keyboard buffer (this is default set to false)

HoneywellProfileModel #

This currently have no extra configuration options, so should use [ProfileModel] instead

SupportedDevice #

This class is returned when calling [supportedDevice]

enum SupportedDevice { zebra, honeywell, invalid }

BarcodeConfig #

Possibility to set configuration related to barcode scanning.

BarcodeConfig({
    required BarcodeTypes barcodeType,  // The [BarcodeTypes]
    int? minLength,                     // The minimum length of the barcode, ignored if null. Not all barcode types support this so check hardware vendor for the appropriate barcode type
    int? maxLength,                     // The maximum length of the barcode, ignored if null. Not all barcode types support this so check hardware vendor for the appropriate barcode type
});

Listening for scan events #

To receive the scan events you can listen to the Stream

final _scanwedgePlugin=ScanwedgeChannel();
@override build()=>Card(
    child: Column(
        mainAxisSize: MainAxisSize.min,
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
            const Text('Last scan:'),
            StreamBuilder(
                stream: _scanwedgePlugin.stream,
                builder: ((context, snapshot) => Text(
                        snapshot.hasData
                            ? snapshot.data.toString()
                            : snapshot.hasError
                                ? snapshot.error.toString()
                                : 'Scan something',
                        style: Theme.of(context).textTheme.titleMedium,
                    ))),
        ]
    )
);

AimTypes

This is a enum that sets the aim type for the scanner on Zebra devices

trigger
timedHold
timedRelease
pressAndRelease
presentation
continuousRead
pressAndSustain
pressAndContinue
timedContinuous

BarcodeTypes

aztec,
codabar,
code128,
code39,
code93,
datamatrix,
ean128,
ean13,
ean8,
gs1DataBar,
gs1DataBarExpanded,
i2of5,
mailmark,
maxicode,
pdf417,
qrCode,
upca,
upce0,
manual,     // Used for marking a barcode as manual input
unknown     // This is when it receives a unknown barcode, then check the [ScanResult.hardwareBarcodeType] for the actual barcode type
9
likes
150
points
450
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin to communicate with the Zebra Datawedge

Repository (GitHub)

Documentation

API reference

License

Apache-2.0 (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on scanwedge