37 changed files with 892 additions and 408 deletions
			
			
		| @ -1,10 +1,45 @@ | ||||
| # This file tracks properties of this Flutter project. | ||||
| # Used by Flutter tool to assess capabilities and perform upgrades etc. | ||||
| # | ||||
| # This file should be version controlled and should not be manually edited. | ||||
| # This file should be version controlled. | ||||
| 
 | ||||
| version: | ||||
|   revision: 7e9793dee1b85a243edd0e06cb1658e98b077561 | ||||
|   revision: 135454af32477f815a7525073027a3ff9eff1bfd | ||||
|   channel: stable | ||||
| 
 | ||||
| project_type: app | ||||
| 
 | ||||
| # Tracks metadata for the flutter migrate command | ||||
| migration: | ||||
|   platforms: | ||||
|     - platform: root | ||||
|       create_revision: 135454af32477f815a7525073027a3ff9eff1bfd | ||||
|       base_revision: 135454af32477f815a7525073027a3ff9eff1bfd | ||||
|     - platform: android | ||||
|       create_revision: 135454af32477f815a7525073027a3ff9eff1bfd | ||||
|       base_revision: 135454af32477f815a7525073027a3ff9eff1bfd | ||||
|     - platform: ios | ||||
|       create_revision: 135454af32477f815a7525073027a3ff9eff1bfd | ||||
|       base_revision: 135454af32477f815a7525073027a3ff9eff1bfd | ||||
|     - platform: linux | ||||
|       create_revision: 135454af32477f815a7525073027a3ff9eff1bfd | ||||
|       base_revision: 135454af32477f815a7525073027a3ff9eff1bfd | ||||
|     - platform: macos | ||||
|       create_revision: 135454af32477f815a7525073027a3ff9eff1bfd | ||||
|       base_revision: 135454af32477f815a7525073027a3ff9eff1bfd | ||||
|     - platform: web | ||||
|       create_revision: 135454af32477f815a7525073027a3ff9eff1bfd | ||||
|       base_revision: 135454af32477f815a7525073027a3ff9eff1bfd | ||||
|     - platform: windows | ||||
|       create_revision: 135454af32477f815a7525073027a3ff9eff1bfd | ||||
|       base_revision: 135454af32477f815a7525073027a3ff9eff1bfd | ||||
| 
 | ||||
|   # User provided section | ||||
| 
 | ||||
|   # List of Local paths (relative to this file) that should be | ||||
|   # ignored by the migrate tool. | ||||
|   # | ||||
|   # Files that are not part of the templates will be ignored by default. | ||||
|   unmanaged_files: | ||||
|     - 'lib/main.dart' | ||||
|     - 'ios/Runner.xcodeproj/project.pbxproj' | ||||
|  | ||||
| @ -0,0 +1,6 @@ | ||||
| package com.markosyan.example | ||||
| 
 | ||||
| import io.flutter.embedding.android.FlutterActivity | ||||
| 
 | ||||
| class MainActivity: FlutterActivity() { | ||||
| } | ||||
| After Width: | Height: | Size: 917 B | 
| After Width: | Height: | Size: 5.2 KiB | 
| After Width: | Height: | Size: 8.1 KiB | 
| After Width: | Height: | Size: 5.5 KiB | 
| After Width: | Height: | Size: 20 KiB | 
| @ -0,0 +1,58 @@ | ||||
| <!DOCTYPE html> | ||||
| <html> | ||||
| <head> | ||||
|   <!-- | ||||
|     If you are serving your web app in a path other than the root, change the | ||||
|     href value below to reflect the base path you are serving from. | ||||
| 
 | ||||
|     The path provided below has to start and end with a slash "/" in order for | ||||
|     it to work correctly. | ||||
| 
 | ||||
|     For more details: | ||||
|     * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base | ||||
| 
 | ||||
|     This is a placeholder for base href that will be replaced by the value of | ||||
|     the `--base-href` argument provided to `flutter build`. | ||||
|   --> | ||||
|   <base href="$FLUTTER_BASE_HREF"> | ||||
| 
 | ||||
|   <meta charset="UTF-8"> | ||||
|   <meta content="IE=Edge" http-equiv="X-UA-Compatible"> | ||||
|   <meta name="description" content="A new Flutter project."> | ||||
| 
 | ||||
|   <!-- iOS meta tags & icons --> | ||||
|   <meta name="apple-mobile-web-app-capable" content="yes"> | ||||
|   <meta name="apple-mobile-web-app-status-bar-style" content="black"> | ||||
|   <meta name="apple-mobile-web-app-title" content="example"> | ||||
|   <link rel="apple-touch-icon" href="icons/Icon-192.png"> | ||||
| 
 | ||||
|   <!-- Favicon --> | ||||
|   <link rel="icon" type="image/png" href="favicon.png"/> | ||||
| 
 | ||||
|   <title>example</title> | ||||
|   <link rel="manifest" href="manifest.json"> | ||||
| 
 | ||||
|   <script> | ||||
|     // The value below is injected by flutter build, do not touch. | ||||
|     var serviceWorkerVersion = null; | ||||
|   </script> | ||||
|   <!-- This script adds the flutter initialization JS code --> | ||||
|   <script src="flutter.js" defer></script> | ||||
| </head> | ||||
| <body> | ||||
|   <script> | ||||
|     window.addEventListener('load', function(ev) { | ||||
|       // Download main.dart.js | ||||
|       _flutter.loader.loadEntrypoint({ | ||||
|         serviceWorker: { | ||||
|           serviceWorkerVersion: serviceWorkerVersion, | ||||
|         } | ||||
|       }).then(function(engineInitializer) { | ||||
|         return engineInitializer.initializeEngine(); | ||||
|       }).then(function(appRunner) { | ||||
|         return appRunner.runApp(); | ||||
|       }); | ||||
|     }); | ||||
|   </script> | ||||
| </body> | ||||
| </html> | ||||
| @ -0,0 +1,35 @@ | ||||
| { | ||||
|     "name": "example", | ||||
|     "short_name": "example", | ||||
|     "start_url": ".", | ||||
|     "display": "standalone", | ||||
|     "background_color": "#0175C2", | ||||
|     "theme_color": "#0175C2", | ||||
|     "description": "A new Flutter project.", | ||||
|     "orientation": "portrait-primary", | ||||
|     "prefer_related_applications": false, | ||||
|     "icons": [ | ||||
|         { | ||||
|             "src": "icons/Icon-192.png", | ||||
|             "sizes": "192x192", | ||||
|             "type": "image/png" | ||||
|         }, | ||||
|         { | ||||
|             "src": "icons/Icon-512.png", | ||||
|             "sizes": "512x512", | ||||
|             "type": "image/png" | ||||
|         }, | ||||
|         { | ||||
|             "src": "icons/Icon-maskable-192.png", | ||||
|             "sizes": "192x192", | ||||
|             "type": "image/png", | ||||
|             "purpose": "maskable" | ||||
|         }, | ||||
|         { | ||||
|             "src": "icons/Icon-maskable-512.png", | ||||
|             "sizes": "512x512", | ||||
|             "type": "image/png", | ||||
|             "purpose": "maskable" | ||||
|         } | ||||
|     ] | ||||
| } | ||||
| @ -1,10 +1,95 @@ | ||||
| export 'generated_bindings.dart'; | ||||
| export 'src/logic/zxing.dart'; | ||||
| export 'src/ui/dynamic_scanner_overlay.dart'; | ||||
| export 'src/ui/fixed_scanner_overlay.dart'; | ||||
| export 'src/ui/reader_widget.dart'; | ||||
| export 'src/ui/scanner_overlay.dart'; | ||||
| export 'src/ui/writer_widget.dart'; | ||||
| export 'src/utils/extentions.dart'; | ||||
| export 'src/utils/image_converter.dart'; | ||||
| export 'src/utils/messages.dart'; | ||||
| import 'dart:typed_data'; | ||||
| 
 | ||||
| import 'package:camera/camera.dart'; | ||||
| import 'src/models/models.dart'; | ||||
| 
 | ||||
| import 'zxing_cross.dart' | ||||
|     if (dart.library.io) 'zxing_mobile.dart' | ||||
|     if (dart.library.html) 'zxing_web.dart'; | ||||
| 
 | ||||
| export 'src/models/models.dart'; | ||||
| export 'src/ui/ui.dart'; | ||||
| 
 | ||||
| final Zxing zx = Zxing(); | ||||
| 
 | ||||
| abstract class Zxing { | ||||
|   /// factory constructor to return the correct implementation. | ||||
|   factory Zxing() => getZxing(); | ||||
| 
 | ||||
|   String version() => ''; | ||||
|   void setLogEnabled(bool enabled) {} | ||||
|   String barcodeFormatName(int format) => ''; | ||||
| 
 | ||||
|   Encode encodeBarcode( | ||||
|     String contents, { | ||||
|     int format = Format.qrCode, | ||||
|     int width = 300, | ||||
|     int height = 300, | ||||
|     int margin = 0, | ||||
|     int eccLevel = 0, | ||||
|   }); | ||||
| 
 | ||||
|   /// Starts reading barcode from the camera | ||||
|   Future<void> startCameraProcessing(); | ||||
| 
 | ||||
|   /// Stops reading barcode from the camera | ||||
|   void stopCameraProcessing(); | ||||
| 
 | ||||
|   /// Reads barcode from the camera | ||||
|   Future<Code> processCameraImage( | ||||
|     CameraImage image, { | ||||
|     Params? params, | ||||
|   }); | ||||
| 
 | ||||
|   /// Reads barcode from String image path | ||||
|   Future<Code?> readBarcodeImagePathString( | ||||
|     String path, { | ||||
|     Params? params, | ||||
|   }); | ||||
| 
 | ||||
|   /// Reads barcode from XFile image path | ||||
|   Future<Code?> readBarcodeImagePath( | ||||
|     XFile path, { | ||||
|     Params? params, | ||||
|   }); | ||||
| 
 | ||||
|   /// Reads barcode from image url | ||||
|   Future<Code?> readBarcodeImageUrl( | ||||
|     String url, { | ||||
|     Params? params, | ||||
|   }); | ||||
| 
 | ||||
| // Reads barcode from Uint8List image bytes | ||||
|   Code readBarcode( | ||||
|     Uint8List bytes, { | ||||
|     required int width, | ||||
|     required int height, | ||||
|     Params? params, | ||||
|   }); | ||||
| 
 | ||||
|   /// Reads barcodes from String image path | ||||
|   Future<List<Code>> readBarcodesImagePathString( | ||||
|     String path, { | ||||
|     Params? params, | ||||
|   }); | ||||
| 
 | ||||
|   /// Reads barcodes from XFile image path | ||||
|   Future<List<Code>> readBarcodesImagePath( | ||||
|     XFile path, { | ||||
|     Params? params, | ||||
|   }); | ||||
| 
 | ||||
|   /// Reads barcodes from image url | ||||
|   Future<List<Code>> readBarcodesImageUrl( | ||||
|     String url, { | ||||
|     Params? params, | ||||
|   }); | ||||
| 
 | ||||
|   /// Reads barcodes from Uint8List image bytes | ||||
|   List<Code> readBarcodes( | ||||
|     Uint8List bytes, { | ||||
|     required int width, | ||||
|     required int height, | ||||
|     Params? params, | ||||
|   }); | ||||
| } | ||||
|  | ||||
| @ -1,20 +1,22 @@ | ||||
| part of 'zxing.dart'; | ||||
| 
 | ||||
| // Encode a string into a barcode | ||||
| EncodeResult encodeBarcode( | ||||
| Encode zxingEncodeBarcode( | ||||
|   String contents, { | ||||
|   int format = Format.QRCode, | ||||
|   int format = Format.qrCode, | ||||
|   int width = 300, | ||||
|   int height = 300, | ||||
|   int margin = 0, | ||||
|   int eccLevel = 0, | ||||
| }) { | ||||
|   return bindings.encodeBarcode( | ||||
|   return bindings | ||||
|       .encodeBarcode( | ||||
|         contents.toNativeUtf8().cast<Char>(), | ||||
|         width, | ||||
|         height, | ||||
|         format, | ||||
|         margin, | ||||
|         eccLevel, | ||||
|   ); | ||||
|       ) | ||||
|       .toEncode(); | ||||
| } | ||||
|  | ||||
| @ -1,100 +1,72 @@ | ||||
| part of 'zxing.dart'; | ||||
| 
 | ||||
| /// Reads barcodes from String image path | ||||
| Future<List<CodeResult>> readBarcodesImagePathString( | ||||
| Future<List<Code>> zxingReadBarcodesImagePathString( | ||||
|   String path, { | ||||
|   int format = Format.Any, | ||||
|   int cropWidth = 0, | ||||
|   int cropHeight = 0, | ||||
|   bool tryHarder = false, | ||||
|   bool tryRotate = true, | ||||
|   Params? params, | ||||
| }) => | ||||
|     readBarcodesImagePath( | ||||
|     zxingReadBarcodesImagePath( | ||||
|       XFile(path), | ||||
|       format: format, | ||||
|       cropWidth: cropWidth, | ||||
|       cropHeight: cropHeight, | ||||
|       tryHarder: tryHarder, | ||||
|       tryRotate: tryRotate, | ||||
|       params: params, | ||||
|     ); | ||||
| 
 | ||||
| /// Reads barcodes from XFile image path | ||||
| Future<List<CodeResult>> readBarcodesImagePath( | ||||
| Future<List<Code>> zxingReadBarcodesImagePath( | ||||
|   XFile path, { | ||||
|   int format = Format.Any, | ||||
|   int cropWidth = 0, | ||||
|   int cropHeight = 0, | ||||
|   bool tryHarder = false, | ||||
|   bool tryRotate = true, | ||||
|   Params? params, | ||||
| }) async { | ||||
|   final Uint8List imageBytes = await path.readAsBytes(); | ||||
|   final imglib.Image? image = imglib.decodeImage(imageBytes); | ||||
|   if (image == null) { | ||||
|     return <CodeResult>[]; | ||||
|     return <Code>[]; | ||||
|   } | ||||
|   return readBarcodes( | ||||
|   return zxingReadBarcodes( | ||||
|     image.getBytes(format: imglib.Format.luminance), | ||||
|     width: image.width, | ||||
|     height: image.height, | ||||
|     format: format, | ||||
|     cropWidth: cropWidth, | ||||
|     cropHeight: cropHeight, | ||||
|     tryHarder: tryHarder, | ||||
|     tryRotate: tryRotate, | ||||
|     params: params, | ||||
|   ); | ||||
| } | ||||
| 
 | ||||
| /// Reads barcodes from image url | ||||
| Future<List<CodeResult>> readBarcodesImageUrl( | ||||
| Future<List<Code>> zxingReadBarcodesImageUrl( | ||||
|   String url, { | ||||
|   int format = Format.Any, | ||||
|   int cropWidth = 0, | ||||
|   int cropHeight = 0, | ||||
|   bool tryHarder = false, | ||||
|   bool tryRotate = true, | ||||
|   Params? params, | ||||
| }) async { | ||||
|   final Uint8List imageBytes = | ||||
|       (await NetworkAssetBundle(Uri.parse(url)).load(url)).buffer.asUint8List(); | ||||
|   final imglib.Image? image = imglib.decodeImage(imageBytes); | ||||
|   if (image == null) { | ||||
|     return <CodeResult>[]; | ||||
|     return <Code>[]; | ||||
|   } | ||||
|   return readBarcodes( | ||||
|   return zxingReadBarcodes( | ||||
|     image.getBytes(format: imglib.Format.luminance), | ||||
|     width: image.width, | ||||
|     height: image.height, | ||||
|     format: format, | ||||
|     cropWidth: cropWidth, | ||||
|     cropHeight: cropHeight, | ||||
|     tryHarder: tryHarder, | ||||
|     tryRotate: tryRotate, | ||||
|     params: params, | ||||
|   ); | ||||
| } | ||||
| 
 | ||||
| /// Reads barcodes from Uint8List image bytes | ||||
| List<CodeResult> readBarcodes( | ||||
| List<Code> zxingReadBarcodes( | ||||
|   Uint8List bytes, { | ||||
|   required int width, | ||||
|   required int height, | ||||
|   int format = Format.Any, | ||||
|   int cropWidth = 0, | ||||
|   int cropHeight = 0, | ||||
|   bool tryHarder = false, | ||||
|   bool tryRotate = true, | ||||
|   Params? params, | ||||
| }) { | ||||
|   final CodeResults result = bindings.readBarcodes( | ||||
|     bytes.allocatePointer(), | ||||
|     format, | ||||
|     params?.format ?? Format.any, | ||||
|     width, | ||||
|     height, | ||||
|     cropWidth, | ||||
|     cropHeight, | ||||
|     tryHarder ? 1 : 0, | ||||
|     tryRotate ? 1 : 0, | ||||
|     params?.cropWidth ?? 0, | ||||
|     params?.cropHeight ?? 0, | ||||
|     params?.tryHarder ?? false ? 1 : 0, | ||||
|     params?.tryRotate ?? true ? 1 : 0, | ||||
|   ); | ||||
|   final List<CodeResult> results = <CodeResult>[]; | ||||
|   final List<Code> results = <Code>[]; | ||||
|   for (int i = 0; i < result.count; i++) { | ||||
|     results.add(result.results.elementAt(i).ref); | ||||
|     results.add(result.results.elementAt(i).ref.toCode()); | ||||
|   } | ||||
|   return results; | ||||
| } | ||||
|  | ||||
| @ -0,0 +1,20 @@ | ||||
| import 'dart:typed_data'; | ||||
| 
 | ||||
| import 'position.dart'; | ||||
| 
 | ||||
| // Represents a barcode code | ||||
| class Code { | ||||
|   Code( | ||||
|     this.isValid, | ||||
|     this.text, | ||||
|     this.rawBytes, | ||||
|     this.format, | ||||
|     this.position, | ||||
|   ); | ||||
| 
 | ||||
|   bool isValid; // Whether the code is valid | ||||
|   String? text; // The text of the code | ||||
|   Uint8List? rawBytes; // The raw bytes of the code | ||||
|   int? format; // The format of the code | ||||
|   Position? position; // The position of the code | ||||
| } | ||||
| @ -0,0 +1,20 @@ | ||||
| import 'dart:typed_data'; | ||||
| 
 | ||||
| // Encapsulates the result of encoding a barcode. | ||||
| class Encode { | ||||
|   Encode( | ||||
|     this.isValid, | ||||
|     this.format, | ||||
|     this.text, | ||||
|     this.data, | ||||
|     this.length, | ||||
|     this.error, | ||||
|   ); | ||||
| 
 | ||||
|   bool isValid; // Whether the code is valid | ||||
|   int? format; // The format of the code | ||||
|   String? text; // The text of the code | ||||
|   Uint32List? data; // The raw bytes of the code | ||||
|   int? length; // The length of the raw bytes | ||||
|   String? error; // The error message | ||||
| } | ||||
| @ -0,0 +1,82 @@ | ||||
| // Format Enumerates barcode formats known to this package. | ||||
| abstract class Format { | ||||
|   // Used as a return value if no valid barcode has been detected | ||||
|   static const int none = 0; | ||||
| 
 | ||||
|   static const int aztec = 1 << 0; // Aztec (2D) | ||||
|   static const int codabar = 1 << 1; // Codabar (1D) | ||||
|   static const int code39 = 1 << 2; // Code39 (1D) | ||||
|   static const int code93 = 1 << 3; // Code93 (1D) | ||||
|   static const int code128 = 1 << 4; // Code128 (1D) | ||||
|   static const int dataBar = 1 << 5; // GS1 DataBar | ||||
|   static const int dataBarExpanded = 1 << 6; // GS1 DataBar Expanded | ||||
|   static const int dataMatrix = 1 << 7; // DataMatrix (2D) | ||||
|   static const int ean8 = 1 << 8; // EAN-8 (1D) | ||||
|   static const int ean13 = 1 << 9; // EAN-13 (1D) | ||||
|   static const int itf = 1 << 10; // ITF (Interleaved Two of Five) (1D) | ||||
|   static const int maxiCode = 1 << 11; // MaxiCode (2D) | ||||
|   static const int pdf417 = 1 << 12; // PDF417 (1D) or (2D) | ||||
|   static const int qrCode = 1 << 13; // QR Code (2D) | ||||
|   static const int upca = 1 << 14; // UPC-A (1D) | ||||
|   static const int upce = 1 << 15; // UPC-E (1D) | ||||
| 
 | ||||
|   static const int oneDCodes = codabar | | ||||
|       code39 | | ||||
|       code93 | | ||||
|       code128 | | ||||
|       ean8 | | ||||
|       ean13 | | ||||
|       itf | | ||||
|       dataBar | | ||||
|       dataBarExpanded | | ||||
|       upca | | ||||
|       upce; | ||||
|   static const int twoDCodes = aztec | dataMatrix | maxiCode | pdf417 | qrCode; | ||||
|   static const int any = oneDCodes | twoDCodes; | ||||
| } | ||||
| 
 | ||||
| extension CodeFormat on Format { | ||||
|   String get name => formatNames[this] ?? 'Unknown'; | ||||
| 
 | ||||
|   static final List<int> writerFormats = <int>[ | ||||
|     Format.qrCode, | ||||
|     Format.dataMatrix, | ||||
|     Format.aztec, | ||||
|     Format.pdf417, | ||||
|     Format.codabar, | ||||
|     Format.code39, | ||||
|     Format.code93, | ||||
|     Format.code128, | ||||
|     Format.ean8, | ||||
|     Format.ean13, | ||||
|     Format.itf, | ||||
|     Format.upca, | ||||
|     Format.upce, | ||||
|     // Format.dataBar, | ||||
|     // Format.dataBarExpanded, | ||||
|     // Format.maxiCode, | ||||
|   ]; | ||||
| } | ||||
| 
 | ||||
| final Map<int, String> formatNames = <int, String>{ | ||||
|   Format.none: 'None', | ||||
|   Format.aztec: 'Aztec', | ||||
|   Format.codabar: 'CodaBar', | ||||
|   Format.code39: 'Code39', | ||||
|   Format.code93: 'Code93', | ||||
|   Format.code128: 'Code128', | ||||
|   Format.dataBar: 'DataBar', | ||||
|   Format.dataBarExpanded: 'DataBarExpanded', | ||||
|   Format.dataMatrix: 'DataMatrix', | ||||
|   Format.ean8: 'EAN8', | ||||
|   Format.ean13: 'EAN13', | ||||
|   Format.itf: 'ITF', | ||||
|   Format.maxiCode: 'MaxiCode', | ||||
|   Format.pdf417: 'PDF417', | ||||
|   Format.qrCode: 'QR Code', | ||||
|   Format.upca: 'UPCA', | ||||
|   Format.upce: 'UPCE', | ||||
|   Format.oneDCodes: 'OneD', | ||||
|   Format.twoDCodes: 'TwoD', | ||||
|   Format.any: 'Any', | ||||
| }; | ||||
| @ -1,3 +1,4 @@ | ||||
| // Contains the messages used in the app | ||||
| class Messages { | ||||
|   const Messages({ | ||||
|     this.createButton = 'Create', | ||||
| @ -0,0 +1,6 @@ | ||||
| export 'code.dart'; | ||||
| export 'encode.dart'; | ||||
| export 'format.dart'; | ||||
| export 'messages.dart'; | ||||
| export 'params.dart'; | ||||
| export 'position.dart'; | ||||
| @ -0,0 +1,22 @@ | ||||
| import 'dart:core'; | ||||
| 
 | ||||
| import 'format.dart'; | ||||
| 
 | ||||
| // Represents the parameters for decoding a barcode | ||||
| class Params { | ||||
|   Params({ | ||||
|     this.format = Format.any, | ||||
|     this.cropWidth = 0, | ||||
|     this.cropHeight = 0, | ||||
|     this.tryHarder = false, | ||||
|     this.tryRotate = true, | ||||
|     this.tryInverted = false, | ||||
|   }); | ||||
| 
 | ||||
|   int format; | ||||
|   int cropWidth; | ||||
|   int cropHeight; | ||||
|   bool tryHarder; | ||||
|   bool tryRotate; | ||||
|   bool tryInverted; | ||||
| } | ||||
| @ -0,0 +1,22 @@ | ||||
| /// Represents the position of a barcode in an image. | ||||
| class Position { | ||||
|   Position( | ||||
|     this.topLeftX, | ||||
|     this.topLeftY, | ||||
|     this.topRightX, | ||||
|     this.topRightY, | ||||
|     this.bottomLeftX, | ||||
|     this.bottomLeftY, | ||||
|     this.bottomRightX, | ||||
|     this.bottomRightY, | ||||
|   ); | ||||
| 
 | ||||
|   int topLeftX; // x coordinate of top left corner of barcode | ||||
|   int topLeftY; // y coordinate of top left corner of barcode | ||||
|   int topRightX; // x coordinate of top right corner of barcode | ||||
|   int topRightY; // y coordinate of top right corner of barcode | ||||
|   int bottomLeftX; // x coordinate of bottom left corner of barcode | ||||
|   int bottomLeftY; // y coordinate of bottom left corner of barcode | ||||
|   int bottomRightX; // x coordinate of bottom right corner of barcode | ||||
|   int bottomRightY; // y coordinate of bottom right corner of barcode | ||||
| } | ||||
| @ -0,0 +1,5 @@ | ||||
| export 'dynamic_scanner_overlay.dart'; | ||||
| export 'fixed_scanner_overlay.dart'; | ||||
| export 'reader_widget.dart'; | ||||
| export 'scanner_overlay.dart'; | ||||
| export 'writer_widget.dart'; | ||||
| @ -0,0 +1,4 @@ | ||||
| import 'flutter_zxing.dart'; | ||||
| 
 | ||||
| Zxing getZxing() => throw UnsupportedError( | ||||
|     'Cannot create an instance of FlutterZxing on the current platform.'); | ||||
| @ -0,0 +1,149 @@ | ||||
| import 'dart:typed_data'; | ||||
| 
 | ||||
| import 'package:camera/camera.dart'; | ||||
| 
 | ||||
| import 'flutter_zxing.dart'; | ||||
| import 'src/logic/zxing.dart'; | ||||
| 
 | ||||
| export 'generated_bindings.dart'; | ||||
| export 'src/logic/zxing.dart'; | ||||
| export 'src/models/models.dart'; | ||||
| export 'src/utils/extentions.dart'; | ||||
| export 'src/utils/image_converter.dart'; | ||||
| 
 | ||||
| Zxing getZxing() => ZxingMobile(); | ||||
| 
 | ||||
| class ZxingMobile implements Zxing { | ||||
|   ZxingMobile(); | ||||
| 
 | ||||
|   @override | ||||
|   String version() => zxingVersion(); | ||||
| 
 | ||||
|   @override | ||||
|   void setLogEnabled(bool enabled) => setZxingLogEnabled(enabled); | ||||
| 
 | ||||
|   @override | ||||
|   String barcodeFormatName(int format) => zxingBarcodeFormatName(format); | ||||
| 
 | ||||
|   @override | ||||
|   Encode encodeBarcode( | ||||
|     String contents, { | ||||
|     int format = Format.qrCode, | ||||
|     int width = 300, | ||||
|     int height = 300, | ||||
|     int margin = 0, | ||||
|     int eccLevel = 0, | ||||
|   }) => | ||||
|       zxingEncodeBarcode( | ||||
|         contents, | ||||
|         format: format, | ||||
|         width: width, | ||||
|         height: height, | ||||
|         margin: margin, | ||||
|         eccLevel: eccLevel, | ||||
|       ); | ||||
| 
 | ||||
|   @override | ||||
|   Future<void> startCameraProcessing() => zxingStartCameraProcessing(); | ||||
| 
 | ||||
|   @override | ||||
|   void stopCameraProcessing() => zxingStopCameraProcessing(); | ||||
| 
 | ||||
|   @override | ||||
|   Future<Code> processCameraImage( | ||||
|     CameraImage image, { | ||||
|     Params? params, | ||||
|   }) => | ||||
|       zxingProcessCameraImage( | ||||
|         image, | ||||
|         params: params, | ||||
|       ); | ||||
| 
 | ||||
|   @override | ||||
|   Future<Code?> readBarcodeImagePathString( | ||||
|     String path, { | ||||
|     Params? params, | ||||
|   }) => | ||||
|       zxingReadBarcodeImagePathString( | ||||
|         path, | ||||
|         params: params, | ||||
|       ); | ||||
| 
 | ||||
|   @override | ||||
|   Future<Code?> readBarcodeImagePath( | ||||
|     XFile path, { | ||||
|     Params? params, | ||||
|   }) => | ||||
|       zxingReadBarcodeImagePath( | ||||
|         path, | ||||
|         params: params, | ||||
|       ); | ||||
| 
 | ||||
|   @override | ||||
|   Future<Code?> readBarcodeImageUrl( | ||||
|     String url, { | ||||
|     Params? params, | ||||
|   }) => | ||||
|       zxingReadBarcodeImageUrl( | ||||
|         url, | ||||
|         params: params, | ||||
|       ); | ||||
| 
 | ||||
|   @override | ||||
|   Code readBarcode( | ||||
|     Uint8List bytes, { | ||||
|     required int width, | ||||
|     required int height, | ||||
|     Params? params, | ||||
|   }) => | ||||
|       zxingReadBarcode( | ||||
|         bytes, | ||||
|         width: width, | ||||
|         height: height, | ||||
|         params: params, | ||||
|       ); | ||||
| 
 | ||||
|   @override | ||||
|   Future<List<Code>> readBarcodesImagePathString( | ||||
|     String path, { | ||||
|     Params? params, | ||||
|   }) => | ||||
|       zxingReadBarcodesImagePathString( | ||||
|         path, | ||||
|         params: params, | ||||
|       ); | ||||
| 
 | ||||
|   @override | ||||
|   Future<List<Code>> readBarcodesImagePath( | ||||
|     XFile path, { | ||||
|     Params? params, | ||||
|   }) => | ||||
|       zxingReadBarcodesImagePath( | ||||
|         path, | ||||
|         params: params, | ||||
|       ); | ||||
| 
 | ||||
|   @override | ||||
|   Future<List<Code>> readBarcodesImageUrl( | ||||
|     String url, { | ||||
|     Params? params, | ||||
|   }) => | ||||
|       zxingReadBarcodesImageUrl( | ||||
|         url, | ||||
|         params: params, | ||||
|       ); | ||||
| 
 | ||||
|   @override | ||||
|   List<Code> readBarcodes( | ||||
|     Uint8List bytes, { | ||||
|     required int width, | ||||
|     required int height, | ||||
|     Params? params, | ||||
|   }) => | ||||
|       zxingReadBarcodes( | ||||
|         bytes, | ||||
|         width: width, | ||||
|         height: height, | ||||
|         params: params, | ||||
|       ); | ||||
| } | ||||
| @ -0,0 +1,104 @@ | ||||
| import 'dart:typed_data'; | ||||
| 
 | ||||
| import 'package:camera/camera.dart'; | ||||
| 
 | ||||
| import 'flutter_zxing.dart'; | ||||
| 
 | ||||
| Zxing getZxing() => ZxingWeb(); | ||||
| 
 | ||||
| class ZxingWeb implements Zxing { | ||||
|   ZxingWeb(); | ||||
| 
 | ||||
|   @override | ||||
|   String version() => 'Unsupported'; | ||||
| 
 | ||||
|   @override | ||||
|   void setLogEnabled(bool enabled) {} | ||||
| 
 | ||||
|   @override | ||||
|   String barcodeFormatName(int format) => 'Unsupported'; | ||||
| 
 | ||||
|   @override | ||||
|   Encode encodeBarcode( | ||||
|     String contents, { | ||||
|     int format = Format.qrCode, | ||||
|     int width = 300, | ||||
|     int height = 300, | ||||
|     int margin = 0, | ||||
|     int eccLevel = 0, | ||||
|   }) => | ||||
|       throw UnimplementedError(); | ||||
| 
 | ||||
|   @override | ||||
|   Future<void> startCameraProcessing() => throw UnimplementedError(); | ||||
| 
 | ||||
|   @override | ||||
|   void stopCameraProcessing() => throw UnimplementedError(); | ||||
| 
 | ||||
|   @override | ||||
|   Future<Code> processCameraImage( | ||||
|     CameraImage image, { | ||||
|     Params? params, | ||||
|   }) => | ||||
|       throw UnimplementedError(); | ||||
| 
 | ||||
|   @override | ||||
|   Future<Code?> readBarcodeImagePathString( | ||||
|     String path, { | ||||
|     Params? params, | ||||
|   }) => | ||||
|       throw UnimplementedError(); | ||||
| 
 | ||||
|   @override | ||||
|   Future<Code?> readBarcodeImagePath( | ||||
|     XFile path, { | ||||
|     Params? params, | ||||
|   }) => | ||||
|       throw UnimplementedError(); | ||||
| 
 | ||||
|   @override | ||||
|   Future<Code?> readBarcodeImageUrl( | ||||
|     String url, { | ||||
|     Params? params, | ||||
|   }) => | ||||
|       throw UnimplementedError(); | ||||
| 
 | ||||
|   @override | ||||
|   Code readBarcode( | ||||
|     Uint8List bytes, { | ||||
|     required int width, | ||||
|     required int height, | ||||
|     Params? params, | ||||
|   }) => | ||||
|       throw UnimplementedError(); | ||||
| 
 | ||||
|   @override | ||||
|   Future<List<Code>> readBarcodesImagePathString( | ||||
|     String path, { | ||||
|     Params? params, | ||||
|   }) => | ||||
|       throw UnimplementedError(); | ||||
| 
 | ||||
|   @override | ||||
|   Future<List<Code>> readBarcodesImagePath( | ||||
|     XFile path, { | ||||
|     Params? params, | ||||
|   }) => | ||||
|       throw UnimplementedError(); | ||||
| 
 | ||||
|   @override | ||||
|   Future<List<Code>> readBarcodesImageUrl( | ||||
|     String url, { | ||||
|     Params? params, | ||||
|   }) => | ||||
|       throw UnimplementedError(); | ||||
| 
 | ||||
|   @override | ||||
|   List<Code> readBarcodes( | ||||
|     Uint8List bytes, { | ||||
|     required int width, | ||||
|     required int height, | ||||
|     Params? params, | ||||
|   }) => | ||||
|       throw UnimplementedError(); | ||||
| } | ||||
					Loading…
					
					
				
		Reference in new issue