rfid_kit: Zebra RFID for Flutter
I open-sourced the hardware layer of a production warehouse app as a Flutter plugin on pub.dev: Zebra RFID readers, RFID label printers and barcode scanners behind one clean Dart API.
- RFID inventory and Geiger-counter locate across several tags at once
- Close-range confirm mode that tells the right bin from its neighbour
- One shared reader session with a recovery cooldown after a failed connect



Project Overview
Every Flutter team shipping on Zebra handhelds rebuilds the same native bridge, then spends weeks learning the SDK's failure modes in the field. rfid_kit packages the device layer I built and hardened for a production warehouse app: vendor-neutral RfidReader and LabelPrinter interfaces, Kotlin bridges to the Zebra RFID API3 and Link-OS SDKs, and the behaviour that took real field failures to get right. It ships with a demo app, unit tests and full setup documentation.
Requirements & Features
- RFID inventory and Geiger-counter locate across several tags at once
- Close-range confirm mode that tells the right bin from its neighbour
- One shared reader session with a recovery cooldown after a failed connect
- Zebra printers over Wi-Fi, Bluetooth and BLE, with automatic pairing
- RFID encode + print, raw ZPL and printer calibration
- Hardware scan trigger (DataWedge) streamed straight into Flutter
- Native crash guard that keeps the app alive when the Zebra SDK throws
- Built-in simulator reader and printer for ordinary phones, emulators and tests
Challenges I Solved
- Readers that stopped answering after open/close churn: one shared session, plus a 30 s cooldown after a failed connect
- A locate meter that read 100% beside the wrong pallet: in-reader EPC filtering, lower transmit power and a median-smoothed dBm window measured in the field
- Zebra SDK threads crashing the whole app: an opt-in crash guard that records the trace and lets the vendor thread die alone
- Proprietary SDKs in an open-source package: the plugin compiles against the app's own copy and stops the build with clear setup steps when it is missing
- Flutter's move to built-in Kotlin: one Gradle script that builds on both Flutter 3.35 (AGP 8) and Flutter 3.44 (AGP 9)
What I Delivered
A published Flutter plugin (Dart API + Kotlin bridges), a demo app, unit tests and setup documentation, released under the MIT license.
Results
- Published on pub.dev with 160/160 pub points
- Behaviour field-tested on Zebra TC22R handhelds and ZT411 printers in a production warehouse
- Builds on Flutter 3.35 and 3.44, including minified release builds
- 25 unit tests covering the reader session, device selection and printer errors
Technology Stack
- Client
- Open source (MIT)
- Completed
- 2026
- Platform
- iOS & Android
- Duration
- Extracted from a 4-month production build
rfid_kit: Zebra RFID for Flutter screenshots
5 screens from the shipped product. Click any shot to enlarge it.
Demo app: Locate meter Demo app: Inventory Demo app: Print pub.dev package page GitHub repository
Want something like rfid_kit: Zebra RFID for Flutter?
I scope in 48 hours and ship in weeks — not quarters. Tell me what you're building.


