JakubPatrik

expose the binaryData from the jsQR library

@@ -200,7 +200,11 @@ class MobileScannerWebPlugin { @@ -200,7 +200,11 @@ class MobileScannerWebPlugin {
200 200
201 final code = jsQR(imgData.data, canvas.width, canvas.height); 201 final code = jsQR(imgData.data, canvas.width, canvas.height);
202 if (code != null) { 202 if (code != null) {
203 - controller.add({'name': 'barcodeWeb', 'data': code.data}); 203 + controller.add({
  204 + 'name': 'barcodeWeb',
  205 + 'data': code.data,
  206 + 'binaryData': code.binaryData,
  207 + });
204 } 208 }
205 } 209 }
206 } 210 }
1 import 'dart:async'; 1 import 'dart:async';
2 import 'dart:io'; 2 import 'dart:io';
  3 +import 'dart:typed_data';
3 4
4 import 'package:flutter/cupertino.dart'; 5 import 'package:flutter/cupertino.dart';
5 import 'package:flutter/foundation.dart'; 6 import 'package:flutter/foundation.dart';
@@ -89,6 +90,7 @@ class MobileScannerController { @@ -89,6 +90,7 @@ class MobileScannerController {
89 void handleEvent(Map event) { 90 void handleEvent(Map event) {
90 final name = event['name']; 91 final name = event['name'];
91 final data = event['data']; 92 final data = event['data'];
  93 + final binaryData = event['binaryData'];
92 switch (name) { 94 switch (name) {
93 case 'torchState': 95 case 'torchState':
94 final state = TorchState.values[data as int? ?? 0]; 96 final state = TorchState.values[data as int? ?? 0];
@@ -106,7 +108,11 @@ class MobileScannerController { @@ -106,7 +108,11 @@ class MobileScannerController {
106 ); 108 );
107 break; 109 break;
108 case 'barcodeWeb': 110 case 'barcodeWeb':
109 - barcodesController.add(Barcode(rawValue: data as String?)); 111 + final bytes = (binaryData as List).cast<int>();
  112 + barcodesController.add(Barcode(
  113 + rawValue: data as String?,
  114 + rawBytes: Uint8List.fromList(bytes),
  115 + ));
110 break; 116 break;
111 default: 117 default:
112 throw UnimplementedError(); 118 throw UnimplementedError();
1 @JS() 1 @JS()
2 library jsqr; 2 library jsqr;
3 3
  4 +import 'dart:typed_data';
  5 +
4 import 'package:js/js.dart'; 6 import 'package:js/js.dart';
5 7
6 @JS('jsQR') 8 @JS('jsQR')
@@ -9,4 +11,6 @@ external Code? jsQR(dynamic data, int? width, int? height); @@ -9,4 +11,6 @@ external Code? jsQR(dynamic data, int? width, int? height);
9 @JS() 11 @JS()
10 class Code { 12 class Code {
11 external String get data; 13 external String get data;
  14 +
  15 + external Uint8ClampedList get binaryData;
12 } 16 }