imin_hardware_plugin 1.0.6
imin_hardware_plugin: ^1.0.6 copied to clipboard
A comprehensive Flutter plugin for controlling iMin POS device hardware features including printer, display, cashbox, light, NFC, RFID, scanner, MSR, electronic scale, serial port, segment display, fl [...]
iMin Hardware Plugin #
A comprehensive Flutter plugin for controlling iMin POS device hardware features.
Features #
| Module | Description |
|---|---|
| 📺 Display | Secondary display control |
| 💰 Cashbox | Cash drawer control |
| 💡 Light | LED indicator lights |
| 💳 NFC | NFC card reading |
| 📷 Scanner | Barcode/QR code scanner |
| 💳 MSR | Magnetic stripe reader |
| ⚖️ Scale | Electronic scale (Android 13+) |
| 🔌 Serial | Serial port communication |
| 🔢 Segment | Digital tube display |
| 🪟 Floating Window | Overlay window |
| 📸 Camera | Camera scanning (ZXing + ML Kit) |
| 📡 RFID | RFID tag operations |
| 📱 Device | Device information |
Supported Devices #
iMin D4, M2-Pro, Swan, Swift, Crane, Lark, Falcon series
Installation #
From pub.dev #
dependencies:
imin_hardware_plugin: ^1.0.0
From Git #
dependencies:
imin_hardware_plugin:
git:
url: https://github.com/iminsoftware/FlutterApiTest.git
ref: main
Then run:
flutter pub get
Quick Start #
import 'package:imin_hardware_plugin/imin_hardware_plugin.dart';
// Camera scan (single barcode)
final result = await CameraScanApi.scanAll();
print('Code: ${result['code']}, Format: ${result['format']}');
// Camera scan (multi-barcode / multi-angle, ML Kit)
final results = await CameraScanApi.scanMulti();
for (final item in results) {
print('Code: ${item['code']}, Format: ${item['format']}');
}
// Check ML Kit availability
final mlkitAvailable = await CameraScanApi.isMLKitAvailable();
// Hardware scanner (built-in scanner head)
IminScanner.scanStream.listen((event) => print('Scanned: ${event.data}'));
await IminScanner.startListening();
// NFC
IminNfc.tagStream.listen((tag) => print('NFC: ${tag['id']}'));
// Electronic Scale (Android 13+)
await IminScaleNew.connectService();
await IminScaleNew.getData();
Camera Scan API #
Single Scan (ZXing) #
// Quick scan with default formats
String code = await CameraScanApi.scanQuick();
// Scan QR code only
String code = await CameraScanApi.scanQRCode();
// Scan all formats with full result
Map<String, dynamic> result = await CameraScanApi.scanAll();
// Custom scan
Map<String, dynamic> result = await CameraScanApi.scan(
formats: ['QR_CODE', 'EAN_13', 'CODE_128'],
useFlash: true,
beepEnabled: true,
timeout: 10000,
);
Multi Scan (ML Kit + ZXing) #
Supports multi-barcode recognition and any-angle scanning. Auto-fallback to ZXing if ML Kit is unavailable.
// Default multi scan
List<Map<String, dynamic>> results = await CameraScanApi.scanMulti();
// Multi-angle scan (single barcode, any orientation)
final results = await CameraScanApi.scanMulti(const MultiScanOptions(
supportMultiAngle: true,
supportMultiBarcode: false,
));
// Full custom configuration
final results = await CameraScanApi.scanMulti(const MultiScanOptions(
formats: ['QR_CODE', 'EAN_13', 'CODE_128'],
supportMultiBarcode: true,
supportMultiAngle: true,
decodeEngine: DecodeEngine.mlkit, // 0=ZXing, 1=MLKit
fullAreaScan: true,
areaRectRatio: 0.9,
useFlash: false,
beepEnabled: true,
timeout: 30000,
));
// Check ML Kit availability
bool available = await CameraScanApi.isMLKitAvailable();
Documentation #
Complete API Guides #
- Display Module - Secondary display control
- Cashbox Module - Cash drawer operations
- Light Module - LED indicator control
- NFC Module - NFC card reading
- Scanner Module - Hardware barcode scanning
- MSR Module - Magnetic stripe reader
- Scale Module - Electronic scale
- Serial Module - Serial communication
- Segment Module - Digital display
- Floating Window Module - Overlay window
- Camera Module - Camera scanning
- RFID Module - RFID operations
- Device Module - Device information
Example App #
See example directory for complete demo application with all hardware features.
Requirements #
- Flutter >=3.3.0
- Dart >=3.0.0
- Android minSdkVersion 21
- iMin POS device
Permissions #
Add to your app's AndroidManifest.xml as needed:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.INTERNET" />
Support #
License #
BSD-3-Clause License - see LICENSE