scan_tally library

Continuous barcode scanning for stock counts, receiving and shipping.

This library is pure Dart (no Flutter import): duplicate filtering, counting sessions with undo, check digits, GS1 parsing, the keyboard wedge state machine and tone synthesis. For the Flutter widgets (keyboard wedge listener, feedback player, flash overlay), import package:scan_tally/scan_tally_flutter.dart instead.

Classes

CheckDigit
GS1 check digit helpers for EAN-13, EAN-8, UPC-A, UPC-E, GTIN-14 and SSCC.
DedupePolicy
How repeated reads of the same code are turned into counts.
FrameConfirmation
Requires a code to be read in frames consecutive camera frames before it counts, to filter misreads from blurry images.
Gs1AiDefinition
The definition of a GS1 application identifier (AI).
Gs1Data
The GS1 element strings of one barcode.
Gs1Date
A GS1 date (YYMMDD) with the "day 00" rule applied.
Gs1Element
One element string: an application identifier and its value.
Gs1Parser
Parses GS1-128, GS1 DataMatrix, GS1 QR and GS1 DataBar data.
ScanAccepted
The code counted.
ScanCode
A scanned code, as passed to the validator and carried by events.
ScanDeduplicator
The duplicate filter used by ScanSession, as a small synchronous state machine.
ScanDuplicate
The code was scanned again within the cooldown and did not count.
ScanEntry
The count of one key in a ScanSession.
ScanEntryChange
One entry changed by a ScanOperation.
ScanEvent
Something that happened to a scanned code.
ScanFeedback
Which feedback channels are on.
ScanFeedbackPlayer
Plays sound and vibration for scan results.
ScanFrame
The codes a source saw at one moment: one camera frame, or one hardware trigger.
ScanOperation
A change to the counts, kept so it can be undone.
ScanRead
One barcode value seen in a ScanFrame.
ScanRejected
The code did not count because it is invalid.
ScanSession
A counting session: turns scans from any ScanSource into per-code counts.
ScanSource
Anything that produces scans: a camera plugin adapter, a keyboard wedge listener, a test.
ScanSourceController
A ScanSource fed by hand, e.g. from a plugin callback or in tests.
ScanTones
The built-in feedback tones and a tiny WAV synthesizer.
ScanVerdict
The app's answer to a scanned code.
ToneSegment
A part of a feedback tone: a sine wave of frequency Hz, or silence when frequency is 0.
WedgeAssembler
Joins fast key presses into barcode values.
WedgeConfig
Settings of a keyboard wedge scanner, i.e. a hardware scanner that "types" the barcode as key presses (Zebra DataWedge keystroke output, Honeywell keyboard wedge, USB/Bluetooth HID scanners).
WedgeStep
What a key did in the WedgeAssembler.

Enums

CheckDigitPolicy
When ScanSession checks GTIN check digits.
DedupeDecision
The result of ScanDeduplicator.check.
Gs1ValueFormat
How the value of an application identifier is formatted.
ScanFeedbackKind
The three kinds of scan feedback.
ScanOperationKind
Kinds of changes that ScanSession.undoLast can revert.
ScanOrigin
Where a read came from.
ScanRejectReason
Why a code was rejected.
ScanSymbology
The barcode type of a read, as far as the source knows it.
WedgeDiscardReason
Why a burst of keys was dropped.
WedgeTerminator
Keys that can end a scan of a keyboard wedge scanner.

Typedefs

ScanValidator = FutureOr<ScanVerdict> Function(ScanCode code)
Decides whether a scanned code counts. May be asynchronous (a database lookup).