UHF RFID Scanner

pub package License: MIT Platform

Flutter plugin for UHF RFID handheld scanners. Communicate with RFID hardware over method channels to scan tags, control antenna power, and decode SGTIN-96 EPCs to EAN-13 barcodes.

Supported Devices

Device Status
NewLand MT93 ✅ Supported
Urovo DT610 🔜 Coming Soon

Features

  • Connect / Disconnect — Power on/off the UHF RFID module
  • Tag Scanning — Start/stop inventory scan with real-time tag stream
  • Tag Data — EPC, RSSI, read count, and TID for each tag
  • Power Control — Adjust antenna read/write power (5–33 dBm)
  • SGTIN-96 Decoding — Automatically decode SGTIN-96 EPC to EAN-13 barcode

Installation

Add to your pubspec.yaml:

dependencies:
  uhf_rfid_scanner: ^1.0.2

Or install via command line:

flutter pub add uhf_rfid_scanner

Usage

import 'package:uhf_rfid_scanner/rfid.dart';

final rfid = Rfid();

// Connect to the RFID module
await rfid.connect();

// Set antenna power (value in dBm × 100, e.g. 3000 = 30 dBm)
await rfid.setPower(3000, 3000);

// Listen for scanned tags
rfid.onTagsRead.listen((tags) {
  for (var tag in tags) {
    print('EPC: ${tag.epc}');
    print('RSSI: ${tag.rssi}');
    print('Read Count: ${tag.readCount}');
    if (tag.ean != null) {
      print('EAN-13: ${tag.ean}');
    }
  }
});

// Start scanning
await rfid.startScan();

// Stop scanning
await rfid.stopScan();

// Disconnect
await rfid.disconnect();

API Reference

Rfid class

Method Return Type Description
connect() Future<bool> Powers on the RFID module
disconnect() Future<bool> Powers off the RFID module
startScan() Future<bool> Starts tag inventory
stopScan() Future<bool> Stops tag inventory
setPower(int readPower, int writePower) Future<void> Sets antenna power (range: 500–3300)
onTagsRead Stream<List<UHFTag>> Stream of scanned tags

UHFTag class

Field Type Description
epc String Electronic Product Code (hex)
rssi int Signal strength
readCount int Number of times the tag was read
tid String? Tag identifier (if available)
ean String? EAN-13 barcode (auto-decoded from SGTIN-96 EPC)

Sgtin96Decoder

Method Description
Sgtin96Decoder.decode(String epcHex) Decodes a 24-char SGTIN-96 hex string to EAN-13. Returns null if not a valid SGTIN-96.

Platform Support

Platform Supported
Android ✅ (min SDK 24)
iOS
Web

Requirements

  • Physical NewLand MT93 device (RFID hardware is not available on emulators)
  • Android API 24+
  • The NewLand UHF SDK libraries are bundled with this plugin

Contributing

Contributions are welcome! Please open an issue or submit a pull request on GitHub.

License

This project is licensed under the MIT License — see the LICENSE file for details.

Libraries

rfid
Flutter plugin for UHF RFID handheld scanners.
rfid_method_channel
rfid_platform_interface