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? _sharedScanStream; Stream get scanResults { _sharedScanStream ??= _createSharedScanStream(); return _sharedScanStream!; } static Stream _createSharedScanStream() { return _eventChannel .receiveBroadcastStream() .map((event) => event as Map) .map( (event) => ScanResult( barcode: event['barcode'] as String? ?? '', codeType: event['codeType'] as String? ?? 'UNKNOWN', ), ) .asBroadcastStream(); } }