flutter - 无法使用条码扫描器显示条码的内容
问题描述
我一直在尝试使用条码扫描仪显示商品的条码...我已经编写了用于扫描条码的代码,但由于引发错误而无法显示。该代码能够首先打开相机然后扫描条形码直到这里它工作得很好但是当我试图显示条形码时它会抛出一个异常。
import 'package:flutter/material.dart';
import 'dart:async';
import 'dart:io';
import 'package:barcode_scan/barcode_scan.dart';
import 'package:flutter/services.dart';
class CartItems extends StatefulWidget {
@override
_CartItemsState createState() => _CartItemsState();
}
class _CartItemsState extends State<CartItems> {
String barcode = "";
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(child: Text('Code: ' + barcode)),
floatingActionButton: FloatingActionButton(
onPressed: barcodeScanning,
child: Icon(Icons.add),
),
);
}
Future barcodeScanning() async {
try {
String barcode = BarcodeScanner.scan() as String;
setState(() => this.barcode = barcode);
} on PlatformException catch (e) {
if (e.code == BarcodeScanner.cameraAccessDenied) {
setState(() {
this.barcode = 'No camera permission!';
});
} else {
setState(() => this.barcode = 'Unknown error: $e');
}
} on FormatException {
setState(() =>
this.barcode =
'Nothing captured.');
} catch (e) {
setState(() => this.barcode = 'Unknown error: $e');
}
}
}
请调查我正在努力解决错误的问题。
解决方案
传递从您的扫描仪函数返回的结果。通过这种方式,函数执行并将其发现提供给主上下文,还添加了一个 print() 以在底部查看结果,以查看控制台中可能出现的异常
class CartItems extends StatefulWidget {
@override
_CartItemsState createState() => _CartItemsState();
}
class _CartItemsState extends State<CartItems> {
String barcodeResult = "";
String barcode = "";
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(child: Text('Code: ' + barcode)),
floatingActionButton: FloatingActionButton(
onPressed:(){ barcodeScanning().then((value)
{
setState(()
{barcodeResult = value;})})}// this should work
child: Icon(Icons.add),
),
);
}
Future barcodeScanning() async {
try {
String barcode = BarcodeScanner.scan() as String;
setState(() => this.barcode = barcode);
} on PlatformException catch (e) {
if (e.code == BarcodeScanner.cameraAccessDenied) {
setState(() {
this.barcode = 'No camera permission!';
});
} else {
setState(() => this.barcode = 'Unknown error: $e');
}
} on FormatException {
setState(() =>
this.barcode =
'Nothing captured.');
} catch (e) {
setState(() => this.barcode = 'Unknown error: $e');
}
return barcode;//this
}
}
推荐阅读
- jquery - 如何根据选择的选项在 tr 中添加输入字段 Jquery
- java - 使用相同的 appender 回溯几个记录器
- ruby-on-rails - 我可以在really_destroy 之后重新创建一个对象!它 ?我不想恢复它,而是用相同的电子邮件创建一个新对象
- python - 将 R GET 方法转换为 Python
- json - 如何使用 Jackson ObjectMapper 转义无效的 Mongo 字段名称字符?
- java - Firebase 数据库快照以动态回收查看数组列表
- javascript - 如何将项目按顺序放入数组中?(javascript)
- java - 无法在 build.gradle 中初始化 flyway{}
- c# - 使用转换器按 DataGrid 列中的值更改 DataGrid 行颜色
- c# - 如何在特定打印机中打印文件?