flutter could not find com.google.android.gms.vision.barcode when using flutter_barcode_scanner

464

Please make sure you have added these permissions in your app/src/main/AndroidManifest.xml

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />

<application ...>
...
</application>
Share:
464
marwa nam
Author by

marwa nam

Updated on January 01, 2023

Comments

  • marwa nam
    marwa nam over 1 year

    I have this error when using flutter_barcode_scanner :

    Local module descriptor class for com.google.android.gms.vision.barcode not found. Error loading optional module com.google.android.gms.vision.barcode: com.google.android.gms.dynamite.DynamiteModule$LoadingException: No acceptable module found. Local version is 0 and remote version is 0. Local module descriptor class for com.google.android.gms.vision.dynamite.barcode not found. D/ViewRootImpl@9677bb1BarcodeCaptureActivity: ViewPostIme pointer 0

    could any one help me please!

    how to reproduce : 1- I just run the example provided with package 2- select scan barcode 3- the app ask for permission -> accept giving the permission 4- the scanner keep scan and did not catch the barcode 5- the error appear in android studio in the run tab

    main.dart

      import 'dart:async';
    
    import 'package:flutter/material.dart';
    import 'package:flutter/services.dart';
    import 'package:flutter_barcode_scanner/flutter_barcode_scanner.dart';
    
    void main() => runApp(MyApp());
    
    class MyApp extends StatefulWidget {
      @override
      _MyAppState createState() => _MyAppState();
    }
    
    class _MyAppState extends State<MyApp> {
      String _scanBarcode = 'Unknown';
    
      @override
      void initState() {
        super.initState();
      }
    
      Future<void> startBarcodeScanStream() async {
        FlutterBarcodeScanner.getBarcodeStreamReceiver(
                '#ff6666', 'Cancel', true, ScanMode.BARCODE)!
            .listen((barcode) => print(barcode));
      }
    
      Future<void> scanQR() async {
        String barcodeScanRes;
        // Platform messages may fail, so we use a try/catch PlatformException.
        try {
          barcodeScanRes = await FlutterBarcodeScanner.scanBarcode(
              '#ff6666', 'Cancel', true, ScanMode.QR);
          print(barcodeScanRes);
        } on PlatformException {
          barcodeScanRes = 'Failed to get platform version.';
        }
    
        // If the widget was removed from the tree while the asynchronous platform
        // message was in flight, we want to discard the reply rather than calling
        // setState to update our non-existent appearance.
        if (!mounted) return;
    
        setState(() {
          _scanBarcode = barcodeScanRes;
        });
      }
    
      // Platform messages are asynchronous, so we initialize in an async method.
      Future<void> scanBarcodeNormal() async {
        String barcodeScanRes;
        // Platform messages may fail, so we use a try/catch PlatformException.
        try {
          barcodeScanRes = await FlutterBarcodeScanner.scanBarcode(
              '#ff6666', 'Cancel', true, ScanMode.BARCODE);
          print(barcodeScanRes);
        } on PlatformException {
          barcodeScanRes = 'Failed to get platform version.';
        }
    
        // If the widget was removed from the tree while the asynchronous platform
        // message was in flight, we want to discard the reply rather than calling
        // setState to update our non-existent appearance.
        if (!mounted) return;
    
        setState(() {
          _scanBarcode = barcodeScanRes;
        });
      }
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
            home: Scaffold(
                appBar: AppBar(title: const Text('Barcode scan')),
                body: Builder(builder: (BuildContext context) {
                  return Container(
                      alignment: Alignment.center,
                      child: Flex(
                          direction: Axis.vertical,
                          mainAxisAlignment: MainAxisAlignment.center,
                          children: <Widget>[
                            ElevatedButton(
                                onPressed: () => scanBarcodeNormal(),
                                child: Text('Start barcode scan')),
                            ElevatedButton(
                                onPressed: () => scanQR(),
                                child: Text('Start QR scan')),
                            ElevatedButton(
                                onPressed: () => startBarcodeScanStream(),
                                child: Text('Start barcode scan stream')),
                            Text('Scan result : $_scanBarcode\n',
                                style: TextStyle(fontSize: 20))
                          ]));
                })));
      }
    }
    
    • Sneaky Polar Bear
      Sneaky Polar Bear over 2 years
      Could you post the code (even though it is provided with the package). It will make it easier for SO users to help.
    • marwa nam
      marwa nam over 2 years
      ok , I will provide it