使用 Google google_ml_kit 的条形扫描仪:^0.6.0

问题描述

美好的一天, 我正在尝试制作数据矩阵条码扫描仪,我正在尝试使用 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 来扫描条形码。