2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-08-01 18:21:36 +00:00

Scanner wedge mode (#437)

* Add code_scan_listener package

* Implement wedge controller widget

* Update barcode settings widget

- Allow user to choose which barcode scanner to use

* Fix typo

* Select barcode scanner widget based on user preference

* Fix rendering issues for wedge controller

* Update release notes

* Add unit test for wedge scanner widget

- Required some tweaks to other code

* Use better library

- https://github.com/fuadreza/flutter_barcode_listener
- Fork of https://github.com/shaxxx/flutter_barcode_listener
- Properly handles key "case" issues (shift, essentially)
- Verified that it works correctly for multiple character types

* Local copy of code, rather than relying on package which is not available on pub.dev

* Fix unit test
This commit is contained in:
Oliver
2023-10-25 22:40:49 +11:00
committed by GitHub
parent b6ab9d5da5
commit c641cea369
12 changed files with 411 additions and 4 deletions

View File

@@ -2,6 +2,7 @@ import "package:flutter/material.dart";
import "package:flutter_speed_dial/flutter_speed_dial.dart";
import "package:font_awesome_flutter/font_awesome_flutter.dart";
import "package:inventree/preferences.dart";
import "package:one_context/one_context.dart";
@@ -11,6 +12,7 @@ import "package:inventree/helpers.dart";
import "package:inventree/l10.dart";
import "package:inventree/barcode/camera_controller.dart";
import "package:inventree/barcode/wedge_controller.dart";
import "package:inventree/barcode/controller.dart";
import "package:inventree/barcode/handler.dart";
import "package:inventree/barcode/tones.dart";
@@ -44,6 +46,19 @@ Future<Object?> scanBarcode(BuildContext context, {BarcodeHandler? handler}) asy
InvenTreeBarcodeController controller = CameraBarcodeController(handler);
// Select barcode controller based on user preference
final int barcodeControllerType = await InvenTreeSettingsManager().getValue(INV_BARCODE_SCAN_TYPE, BARCODE_CONTROLLER_CAMERA) as int;
switch (barcodeControllerType) {
case BARCODE_CONTROLLER_WEDGE:
controller = WedgeBarcodeController(handler);
break;
case BARCODE_CONTROLLER_CAMERA:
default:
// Already set as default option
break;
}
return Navigator.of(context).push(
PageRouteBuilder(
pageBuilder: (context, _, __) => controller,