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
- π§ GitHub Issues
- π iMin Website
License
BSD-3-Clause License - see LICENSE
Libraries
- imin_hardware_plugin
- iMin Hardware Plugin