Files
pad_scanner/lib/services/scanner_service.dart
2026-05-15 12:40:10 +08:00

33 lines
854 B
Dart

import 'dart:async';
import 'package:flutter/services.dart';
class ScanResult {
final String barcode;
final String codeType;
ScanResult({required this.barcode, required this.codeType});
}
class ScannerService {
static const _eventChannel = EventChannel('com.example.pad_scanner/scan');
static Stream<ScanResult>? _sharedScanStream;
Stream<ScanResult> get scanResults {
_sharedScanStream ??= _createSharedScanStream();
return _sharedScanStream!;
}
static Stream<ScanResult> _createSharedScanStream() {
return _eventChannel
.receiveBroadcastStream()
.map((event) => event as Map)
.map(
(event) => ScanResult(
barcode: event['barcode'] as String? ?? '',
codeType: event['codeType'] as String? ?? 'UNKNOWN',
),
)
.asBroadcastStream();
}
}