Search code examples
flutterdartgoogle-mlkitdatamatrix

Bar Scanner With Google google_ml_kit: ^0.6.0


Good day, im trying to make a data matrix barcode scanner, im trying to use google_ml_kit: ^0.6.0,

I been trying to follow the instruction in the flutter page https://pub.dev/packages/google_ml_kit. but I have not luck. im new to flutter and dart any help its very appreciate.

inside getBarcodeCode

in the line final List barcodes = await barcodeScanner.processImage(inputImage); I Always get 0 items.

thanks you best,

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();
                  },
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

Solution

  • If you are using ML Kit for barcode, I will suggest use qr_mobile_vision flutter package. It uses Google Vision API for scanning barcodes.