问题描述
美好的一天, 我正在尝试制作数据矩阵条码扫描仪,我正在尝试使用 google_ml_kit:^0.6.0,
我一直在尝试按照颤振页面 https://pub.dev/packages/google_ml_kit 中的说明进行操作。但我没有运气。我是新手,非常感谢您的帮助。
在 getBarcodeCode 内
在最后的列表条码=等待barcodeScanner.processImage(inputimage); 我总是得到 0 个项目。
谢谢你,
import 'dart:developer';
import 'package:Flutter/foundation.dart';
import 'package:Flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:google_ml_kit/google_ml_kit.dart';
import 'dart:io';
class DashBoard extends StatefulWidget {
static String id = 'DashBoard';
const DashBoard({Key? key}) : super(key: key);
@override
_DashBoardState createState() => _DashBoardState();
}
class _DashBoardState extends State<DashBoard> {
getBarcodeCode(var filePath)async {
final inputimage = Inputimage.fromFile(filePath);
final barcodeScanner = GoogleMlKit.vision.barcodeScanner();
final List<Barcode> barcodes = await barcodeScanner.processImage(inputimage);
for (Barcode barcode in barcodes) {
final String? rawValue = barcode.value.rawValue;
log(rawValue.toString());
}
barcodeScanner.close();
}
_imgFromCamera() async {
final picker = ImagePicker();
PickedFile? pickedFile = await picker.getimage(source: ImageSource.camera,imageQuality: 50);
var imageFile = File(pickedFile!.path);
getBarcodeCode(imageFile);
}
_imgFromgallery() async {
final picker = ImagePicker();
PickedFile? pickedFile = await picker.getimage(source: ImageSource.gallery,imageQuality: 50);
var imageFile = File(pickedFile!.path);
getBarcodeCode(imageFile);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: SafeArea(
child: Container(
child: Wrap(
children: <Widget>[
ListTile(
leading: new Icon(Icons.photo_library),title: new Text('Photo Library'),onTap: () {
_imgFromgallery();
}),ListTile(
leading: new Icon(Icons.photo_camera),title: new Text('Camera'),onTap: () {
_imgFromCamera();
},),],);
}
}
解决方法
如果您使用 ML Kit 作为条形码,我会建议使用 qr_mobile_vision flutter 包。它使用 Google Vision API 来扫描条形码。