Skip to content

Commit

Permalink
Merge pull request #571 from inventree/barcode-scan-fix
Browse files Browse the repository at this point in the history
Barcode scan fix
  • Loading branch information
SchrodingersGat authored Dec 11, 2024
2 parents e95c35e + 8f80220 commit 0ef72dc
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 7 deletions.
3 changes: 2 additions & 1 deletion assets/release_notes.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
### 0.17.1 - January 2025
### 0.17.1 - December 2024
---

- Fixes barcode scanning bug which prevents scanning of DataMatrix codes
- Adds "assigned to me" filter for Purchase Order list
- Adds "assigned to me" filter for Sales Order list

Expand Down
39 changes: 33 additions & 6 deletions lib/barcode/camera_controller.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import "dart:math";
import "dart:typed_data";

import "package:flutter/material.dart";
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
import "package:inventree/app_colors.dart";
Expand Down Expand Up @@ -93,17 +95,36 @@ class _CameraBarcodeControllerState extends InvenTreeBarcodeControllerState {
return;
}

String barcode_data = code?.text ?? "";
Uint8List raw_data = code?.rawBytes ?? Uint8List(0);

// Reconstruct barcode from raw data
String barcode;

if (raw_data.isNotEmpty) {
barcode = "";

final buffer = StringBuffer();

for (int i = 0; i < raw_data.length; i++) {
buffer.writeCharCode(raw_data[i]);
}

barcode = buffer.toString();

} else {
barcode = code?.text ?? "";
}

if (mounted) {
setState(() {
scanned_code = barcode_data;
scanning_paused = barcode_data.isNotEmpty;
scanned_code = barcode;
scanning_paused = barcode.isNotEmpty;
});
}

if (barcode_data.isNotEmpty) {
handleBarcodeData(barcode_data).then((_) {
if (barcode.isNotEmpty) {

handleBarcodeData(barcode).then((_) {
if (!single_scanning && mounted) {
// Resume next scan
setState(() {
Expand Down Expand Up @@ -182,13 +203,19 @@ class _CameraBarcodeControllerState extends InvenTreeBarcodeControllerState {

String info_text = scanning_paused ? L10().barcodeScanPaused : L10().barcodeScanPause;

String text = scanned_code.isNotEmpty ? scanned_code : info_text;

if (text.length > 50) {
text = text.substring(0, 50) + "...";
}

return SafeArea(
child: Align(
alignment: Alignment.bottomCenter,
child: Padding(
padding: EdgeInsets.all(10),
child: Text(
scanned_code.isNotEmpty ? scanned_code : info_text,
text,
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
Expand Down

0 comments on commit 0ef72dc

Please sign in to comment.