Coder Social home page Coder Social logo

flutter_qr_reader's Introduction

flutter_qr_reader

QR code (scan code / picture) recognition (AndroidView/UiKitView)

DEMO

demo

demo

Getting Started

import 'package:flutter_qr_reader/flutter_qr_reader.dart';

// 识别图片
final String data = await FlutterQrReader.imgScan(File);

// 嵌入视图
QrReaderView(
  width: 320,
  height: 350,
  callback: (container) {},
)
// 打开手电筒
..setFlashlight
// 开始扫码
..startCamera
// 结束扫码
..stopCamera

For IOS

Opt-in to the embedded views preview by adding a boolean property to the app's Info.plist file with the key io.flutter.embedded_views_preview and the value YES.

<key>io.flutter.embedded_views_preview</key>
<string>YES</string>

And you will need provide the description of camera's permission to work properly, otherwise will crash your app.

  <key>NSCameraUsageDescription</key>
	<string>The porpuse explaining why you will use the camera</string>

Built-in UI

Widget build(BuildContext context) {
    return new Scaffold(
      body: QrcodeReaderView(key: qrViewKey, onScan: onScan),
    );
}

GlobalKey<QrcodeReaderViewState> qrViewKey = GlobalKey();

Future onScan(String data) async {
    await showCupertinoDialog(
      context: context,
      builder: (context) {
        return CupertinoAlertDialog(
          title: Text("扫码结果"),
          content: Text(data),
          actions: <Widget>[
            CupertinoDialogAction(
              child: Text("确认"),
              onPressed: () => Navigator.pop(context),
            )
          ],
        );
      },
    );
    qrViewKey.currentState.startScan();
}

flutter_qr_reader's People

Contributors

hetian9288 avatar katekko avatar liewjuntung avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

flutter_qr_reader's Issues

提交google play提示相机权限导致很多设备不支持

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature android:name="android.hardware.camera.flash" />

这些需要设置为 android:required="false"

<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.camera.flash" android:required="false"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>

Can I use it on android.x now?

error message:
Error on line 2, column 91: Mapping values are not allowed here. Did you miss a colon earlier?


2 │ description: QR code (scan QRCode and picture) recognition 锛圓ndroidView/UiKitView锛?version: 1.0.1
│ ^

pub get failed (65)

dependencie is this repo with branch master:latest

android 获取权限后直接闪退

java.lang.NoSuchMethodError: No static method open(I)Lcom/google/zxing/client/android/camera/open/OpenCamera; in class Lcom/google/zxing/client/android/camera/open/OpenCameraInterface; or its super classes (declaration of 'com.google.zxing.client.android.camera.open.OpenCameraInterface' appears in /data/app/com.xxx.xxxx-xxxxx==/base.apk)
at com.google.zxing.client.android.camera.CameraManager.openDriver(CameraManager.java:107)
at me.hetian.flutter_qr_reader.readerView.QRCodeReaderView.surfaceCreated(QRCodeReaderView.java:225)
at android.view.SurfaceView.updateSurface(SurfaceView.java:709)
at android.view.SurfaceView$2.onPreDraw(SurfaceView.java:144)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:977)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2433)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1452)
.......

使用例子中的独立UI扫描之后,无法返回

使用例子中的独立UI扫描之后,无法返回,点确定后,还是停留在扫描界面,ScanViewDemo,
把这个 print('上下文pContext8888:${context}');
_key.currentState.startScan();
Navigator.pop(context,data);
把这两个放在showCupertinoDialog方法外,会出现黑屏的现像,这个插件作者维护吗??
await showCupertinoDialog();

识别区域问题

在框外面的也会被识别,如果有两个条码离得很近就会导致误识别

scanBoxRatio 无效的问题

看了一下源,该参数并没有使用,是否是漏掉了?

return Material(
      color: Colors.black,
      child: LayoutBuilder(builder: (context, constraints) {
        final qrScanSize = constraints.maxWidth * 0.85;  // <----- 0.85替换成scanBoxRatio ?
        final mediaQuery = MediaQuery.of(context);
        if (constraints.maxHeight < qrScanSize * 1.5) {
          print("建议高度与扫码区域高度比大于1.5");
        }
        return Stack(

https://app.leanboard.io/board/185b96a3-7cf6-4334-ac05-5834411dad6a

flutter build apk时候报错

Error: /System/Volumes/Data/workspace/wehanyu/hanyu.mobile/build/flutter_qr_reader/.transforms/e55697754438333e595390c36b769fe2/classes/classes.dex, Type com.google.zxing.client.android.camera.open.OpenCameraInterface is defined multiple times: /System/Volumes/Data/workspace/wehanyu/hanyu.mobile/build/flutter_qr_reader/.transforms/e55697754438333e595390c36b769fe2/classes/classes.dex, /System/Volumes/Data/workspace/wehanyu/hanyu.mobile/build/app/intermediates/external_libs_dex/release/out/classes2.dex

在release模式下报错,无法运行

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:preReleaseBuild'.

Android dependency 'androidx.versionedparcelable:versionedparcelable' has different version for the compile (1.0.0-rc01) and runtime (1.0.0) classpath. You should manually set the same version via DependencyResolution

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 1s
The built failed likely due to AndroidX incompatibilities in a plugin. The tool is about to try using Jetfier to solve the incompatibility.
Building plugin audioplayers...
Running Gradle task 'assembleAarRelease'...
Built build/app/outputs/repo.
Building plugin camera...
Running Gradle task 'assembleAarRelease'...
Built build/app/outputs/repo.
Building plugin connectivity...
Running Gradle task 'assembleAarRelease'...

Task :assembleAarRelease UP-TO-DATE
Task :preBuild UP-TO-DATE
Task :preReleaseBuild UP-TO-DATE
Task :compileReleaseAidl NO-SOURCE
Task :compileReleaseRenderscript UP-TO-DATE
Task :checkReleaseManifest UP-TO-DATE
Task :generateReleaseBuildConfig
Task :generateReleaseResValues UP-TO-DATE
Task :generateReleaseResources UP-TO-DATE
Task :packageReleaseResources
Task :processReleaseManifest
Task :generateReleaseRFile UP-TO-DATE
Task :prepareLintJar UP-TO-DATE
Task :generateReleaseSources
Task :javaPreCompileRelease UP-TO-DATE

Task :compileReleaseJavaWithJavac FAILED

Task :mergeReleaseConsumerProguardFiles UP-TO-DATE
Task :mergeReleaseShaders
Task :compileReleaseShaders UP-TO-DATE
Task :generateReleaseAssets UP-TO-DATE
Task :packageReleaseAssets
Task :packageReleaseRenderscript NO-SOURCE
Task :processReleaseJavaRes NO-SOURCE
Task :compileReleaseNdk NO-SOURCE
Task :mergeReleaseJniLibFolders
Task :transformNativeLibsWithMergeJniLibsForRelease UP-TO-DATE
Task :transformNativeLibsWithStripDebugSymbolForRelease UP-TO-DATE
Task :transformNativeLibsWithSyncJniLibsForRelease UP-TO-DATE
18 actionable tasks: 7 executed, 11 up-to-date
/Users/luckysmg/flutter/.pub-cache/hosted/pub.dartlang.org/connectivity-0.4.5/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityPlugin.java:31: 错误: 无法访问LifecycleOwner
*********************************************************
setupChannels(binding.getFlutterEngine().getDartExecutor(), binding.getApplicationContext());
WARNING: This version of connectivity will break your Android build if it or its dependencies aren't compatible with AndroidX.
^
找不到android.arch.lifecycle.LifecycleOwner的类文件
注: /Users/luckysmg/flutter/.pub-cache/hosted/pub.dartlang.org/connectivity-0.4.5/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityBroadcastReceiver.java使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
See https://goo.gl/CP92wY for more information on the problem and how to fix it.
1 个错误

FAILURE: Build failed with an exception.

  • What went wrong:
    This warning prints for all Android build failures. The real root cause of the error may be unrelated.
    Execution failed for task ':compileReleaseJavaWithJavac'.

Compilation failed; see the compiler error output for details.

     *********************************************************
  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 1s

Finished with error: The plugin connectivity could not be built due to the issue above.

Flutter compile warning

I'm using flutter master branch up-to-date. The warning is the following one:

Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: /home/yaymalaga/.pub-cache/hosted/pub.dartlang.org/flutter_qr_reader-1.0.2/android/src/main/java/me/hetian/flutter_qr_reader/factorys/QrReaderFactory.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

扫描二维码,不能连续扫描

独立ui——识别二维码——扫描结果——点击弹框中的好:再扫描二维码,不会弹出框(页面返回后,再进来可以识别)

条形码识别的问题

扫码的时候,条形码直接扫码不能识别,从图库中选择条形码可以识别

ios 卡顿

在 ios 上第一次打开扫一扫页面会有一下明显的卡顿。

扫码进入详情页面熄屏几分钟,然后再回退无法重启扫描

rt 。调用_key.currentState.startScan();扫码页面依旧处于假死状态。
日志报 startPreview: attempt to use a locked camera from a different process (old pid 0, new pid 28876)
Failed to handle method call java.lang.RuntimeException: startPreview failed at android.hardware.Camera.startPreview(Native Method)。抛出异常Unhandled Exception: PlatformException(error, startPreview failed, null)

mCameraStateCallback is null

一加5 - Android 10.0.2

项目案例: ScanViewDemo.dart,扫描完成后,再开始 _key.currentState.startScan(); 就无法识别二维码了,后台log提示mCameraStateCallback is null

摄像头的权限问题

打开相册的插件已经处理了权限,可以把摄像头的也处理下,省得单独写了

startScan isn't continued after scanned. 首次扫描有结果后无法继续扫描

When camera is running, log will print like this:
E/Camera-JNI(10103): copyAndPost: off=0, size=1382400 msg=10
After done scan at onScan like demo and run startScan, camera seems paused and not scanning, with no log printed further.

当相机调用时,会输出如上log,但当识别完成后再次启动startScan,相机看起来未正常继续调用而被暂停,log也没有继续输出。

flutter doctor:

[√] Flutter (Channel unknown, v1.5.4-hotfix.2, on Microsoft Windows [Version 10.0.18362.175], locale zh-CN)
[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)

扫码成功后,我点击确认,再次扫码就不行了,一直识别不了

问题:我运行了你的demo,扫码成功后,我点击确认,再次扫码就不行了,一直识别不了。
一些建议:
1.添加扫描条形码
2.把独立UI的那个扫码框单独出来,不需要其他按钮,这样我就可以自由布局哈,设计师在怎么设计我都不怕了。
3.添加生成二维码的功能
4.扫描成功后可以添加一个声音提示

暂时想到的就这么多,
有了这几功能后,这就强大了,难得是国人开发的插件哈!中文表达就是快乐哈!

flutter升级至v1.12.13+hotfix.5后无法正常构建

flutter doctor -v

[✓] Flutter (Channel stable, v1.12.13+hotfix.5, on Mac OS X 10.15.2 19C57,
locale zh-Hans-CN)
• Flutter version 1.12.13+hotfix.5 at /Users/kuubee/Desktop/dev/flutter
• Framework revision 27321ebbad (4 weeks ago), 2019-12-10 18:15:01 -0800
• Engine revision 2994f7e1e6
• Dart version 2.7.0

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
• Android SDK at /Users/kuubee/Library/Android/sdk
• Android NDK location not configured (optional; useful for native profiling
support)
• Platform android-29, build-tools 29.0.2
• Java binary at: /Applications/Android
Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build
1.8.0_202-release-1483-b49-5587405)
• All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.3)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 11.3, Build version 11C29
• CocoaPods version 1.8.4

[✓] Android Studio (version 3.5)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 40.2.2
• Dart plugin version 191.8580
• Java version OpenJDK Runtime Environment (build
1.8.0_202-release-1483-b49-5587405)

[✓] Connected device (1 available)
• Android SDK built for x86 • emulator-5554 • android-x86 • Android 9 (API
28) (emulator)

flutter run

/Users/kuubee/Desktop/project/jiena/unity_admin/android/app/src/debug/AndroidManifest.xml:22:18-91 Error:
Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
is also present at [androidx.core:core:1.0.1] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
Suggestion: add 'tools:replace="android:appComponentFactory"' to element at AndroidManifest.xml:12:5-37:19 to override.

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:processDebugManifest'.

Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
is also present at [androidx.core:core:1.0.1] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
Suggestion: add 'tools:replace="android:appComponentFactory"' to element at AndroidManifest.xml:12:5-37:19 to override.

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 9s
The built failed likely due to AndroidX incompatibilities in a plugin. The tool is about to try using Jetfier to solve the incompatibility.
Building plugin flutter_qr_reader...
Running Gradle task 'assembleAarRelease'...
WARNING: The option setting 'android.enableR8=true' is experimental and unsupported.
The current default is 'false'
Consider disabling R8 by removing 'android.enableR8=true' from your gradle.properties before publishing your app.

FAILURE: Build failed with an exception.

  • What went wrong:
    A problem occurred configuring root project 'flutter_qr_reader'.

SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 0s

Finished with error: The plugin flutter_qr_reader could not be built due to the issue above.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.