Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Flutter 最佳扫码插件

Flutter 最佳扫码插件

原创
作者头像
arcticfox
修改于 2021-05-06 02:20:09
修改于 2021-05-06 02:20:09
4.3K0
举报

长期以来,Flutter都缺乏一个简单易用,功能强大的二维码、条形码等扫码库,需要既能支持相机扫码,也能支持本地图片码识别。为了解决这个问题,我考察了原生的扫码生态,选取了功能强大的HUAWEI ScanKit SDK,对它进行了Flutter插件包封装。

华为的ScanKit SDK既支持Android,也支持iOS,同时还做了扫码界面和图库选择功能,非常适合引入Flutter世界。

仓库地址: flutter_scankit

中文文档

这是一个扫码的Flutter插件,它是HUAWEI ScanKit SDK的Flutter包。HUAWEI ScanKit 是一个强大的库,使用简单,对于模糊污损码识别率高,识码速度超快。

得益于华为在计算机视觉领域能力的积累,Scan Kit可以实现远距离码或小型码的检测和自动放大,同时针对常见复杂扫码场景(如反光、暗光、污损、模糊、柱面)做了针对性识别优化,提升扫码成功率与用户体验。

  • Android
  • iOS

扫码

Scan Kit支持扫描13种全球主流的码制式。如果您的应用只处理部分特定的码制式,您也可以在接口中指定制式以便加快扫码速度。已支持的码制式:

一维码:EAN-8、EAN-13、UPC-A、UPC-E、Codabar、Code 39、Code 93、Code 128、ITF-14 二维码:QR Code、Data Matrix、PDF417、Aztec

支持相机扫码和本地图片码识别。

用法

  1. 配置权限
  2. 处理权限请求
  3. 调用API

配置权限

iOS

将以下内容添加到ios/Runner/Info.plist

代码语言:txt
AI代码解释
复制
    <key>NSCameraUsageDescription</key>
    <string>在此向用户解释你为什么需要这个权限</string>
    <key>NSPhotoLibraryUsageDescription</key>
    <string>在此向用户解释你为什么需要这个权限</string>

注意,替换<string></string>标签的内容,给用户一个需要该权限的理由。

安卓平台不需要配置!

权限请求

在Flutter中,你需要一个插件库来处理权限,这里推荐我的另一个插件库:flutter_easy_permission,详细配置请看 这里

打开ios/Podfile文件,添加如下配置:

代码语言:txt
AI代码解释
复制
target 'Runner' do
  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
  # Add the library of permissions you need here
  pod 'LBXPermission/Camera'
  pod 'LBXPermission/Photo'
end

然后执行命令进行安装。

调用API

代码语言:txt
AI代码解释
复制
  void initState() {
    super.initState();
    scanKit = FlutterScankit()
	 ..addResultListen((val) {
	  // 返回识别结果
      debugPrint("scanning result:$val");
    });

    FlutterEasyPermission().addPermissionCallback(
        onGranted: (requestCode, perms,perm) {
          startScan();
        },
        onDenied: (requestCode, perms,perm, isPermanent) {});
  }

Scan the code:

代码语言:txt
AI代码解释
复制
    // 如果没有权限则请求
    if (!await FlutterEasyPermission.has(perms: _permissions,permsGroup: _permissionGroup)) {
          FlutterEasyPermission.request(perms: _permissions,permsGroup: _permissionGroup);
    } else {
          // 有权限则调用
          startScan();
    }
    
    
Future<void> startScan() async {
    try {
      await scanKit.startScan(scanTypes: [ScanTypes.ALL]);
    } on PlatformException {}
}

关于 FlutterEasyPermission的用法,请查看这里

例子

一个完整的例子,请看 这里

TODO

SDK本身支持自定义扫码UI,但目前插件还未进行深度封装,无法支持自定义页面,后续将抽一点空,通过外接纹理方式进行深度封装,支持直接在Flutter Widget层自定义扫码界面。

插件开发

如果您对Flutter插件开发内容感兴趣,可以去我的网校中查看《Flutter全栈式开发-高级篇》的课程,全网独家深入解析关于Flutter插件开发的方方面面,实战讲解多个案例(包含本插件开发过程)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
暂无评论
推荐阅读
编辑精选文章
换一批
最简单的Flutter权限管理插件
这是Flutter上的一个动态权限处理的插件库,可以让Flutter应用层的开发者以非常简单的API统一处理原生的动态权限。它封装了关于权限的检查、请求,以及权限被永久拒绝时,适当的拉起系统设置页面,提示用户手动打开权限。几乎想不到拒绝使用它的理由。
arcticfox
2021/05/03
2K0
flutter下载图片到本地_禁止拍照上传图片
当索引 > 0 && < 集合长度 -1 , 添加对话框  拍照、选择相册 选项 ,同时添加分割线
全栈程序员站长
2022/11/09
1.3K0
flutter下载图片到本地_禁止拍照上传图片
利用flutter_downloader插件在Flutter中实现文件下载
之前有做一个工具集的微信小程序「开挂Lite」,但是由于小程序自身限制,没有办法实现下载文件的功能,只能把下载链接解析出来。而且受限于微信平台,小程序的审核是一件很麻烦的事情,因此有了将其APP化的想法。
出其东门
2019/07/19
6.6K0
利用flutter_downloader插件在Flutter中实现文件下载
Flutter自制插件之r_scan二维码&条形码扫描(支持文件、url、内存、相机)
二维码作为信息的载体,广泛应用于我们生活的方方面面,例如:使用支付宝支付,二维码加好友,二维码推广等等,能举例的例子多不胜数,而如果你的应用支持二维码的扫描,用户和体验将会翻倍的增长,如果你是应用的开发者,欢迎来使用此二维码扫描插件!并希望能给予项目一个star,谢谢!项目地址:https://github.com/rhymelph/r_scan
rhyme_lph
2020/03/20
2.2K0
Flutter中如何实现扫码
关于barcode_scan这个扫码组件,针对iOS和Android环境,都要进行对应的环境配置。iOS的配置相对简单,Android的配置就比较繁琐了。
拉维
2019/09/16
5.5K0
Flutter_udid 三方库鸿蒙适配之旅:从零到一的深度实践
在数字化浪潮的推动下,跨平台开发框架如 Flutter 凭借其高效、便捷的特性,成为了开发者们的宠儿。而鸿蒙系统的崛起,更是为跨平台开发注入了新的活力。为了助力开发者在鸿蒙生态中快速实现 Flutter_udid 获取设备标识符功能,本文将深入浅出地为大家解析如何适配 Flutter_udid 三方库至鸿蒙平台。
徐建国
2025/04/24
1310
Flutter_udid 三方库鸿蒙适配之旅:从零到一的深度实践
前端技术:一文带你掌握Flutter插件开发新姿势
导语 | 随着Flutter生态的快速发展,越来越多的Flutter插件涌现出来,那么如何开发一个Flutter插件呢?本文以具体的native_image_view插件为例,带你快速掌握Flutter插件的开发。文章作者:赵哲,腾讯游戏运营研发工程师
腾讯云开发者
2020/12/23
2.4K0
前端技术:一文带你掌握Flutter插件开发新姿势
flutter使用dio实现 文件下载并实现进度监听总结
危险权限不仅需要需要在AndroidManifest中配置,还需要在使用前check是否真正拥有权限,以动态申请。
早起的年轻人
2020/06/03
6.6K0
项目需求讨论 - 动态权限申请分析及相关第三方库源码分析
在具体项目开发中,关于Android的动态申请权限的功能,我想大家都见怪不怪了。很多人开发的app中也都使用过这块需求。
青蛙要fly
2018/08/29
2.1K0
项目需求讨论 - 动态权限申请分析及相关第三方库源码分析
Flutter中使用barcode_scan_fix实现二维码扫描
第一步:如下图所示,按第一个红框里所示的路径找到该文件,添加第二个红框和第三个红框里的代码;
越陌度阡
2021/01/29
2.1K0
Flutter中使用barcode_scan_fix实现二维码扫描
Android开发笔记(一百八十三)利用HMS轻松扫描二维码
开源的Android系统实际上只提供基本的系统服务,不提供常见的扩展服务诸如地图、邮箱、搜索、推送、机器学习、应用内支付等,这些扩展服务被谷歌公司打包成GMS套件(全称Google Mobile Service,中文名叫谷歌移动服务)。在海外市场,许多商用App都依赖于GMS提供的服务,手机缺少GMS会使得这些App没法使用,而手机厂商预装GMS套件需要获得谷歌公司授权。2019年华为公司遭到美国制裁,导致华为手机没能获得GMS授权,致使海外市场陷入寒冬。为此,华为公司推出了自主可控的HMS套件(全称Huawei Mobile Service,中文名叫华为移动服务),意图打破制裁。 HMS是华为公司提供的一套App扩展服务框架,它分为两部分,一部分是面向普通用户的预装App,包括花瓣地图、花瓣邮箱、花瓣搜索、花瓣支付等;另一部分是面向开发者的HMS Core,它给开发者提供API接口,用于在App开发时集成相关服务。HMS Core是华为移动服务提供的端、云开放能力的合集,包含华为账号、应用内支付、推送服务、游戏服务、定位服务、地图服务、广告服务和机器学习服务等,它的开源代码仓库地址为https://gitee.com/hms-core,开发者可在该仓库下载对应源码学习。 扫描二维码是HMS的一项基础服务,虽然谷歌公司也提供了zxing扫码框架,但是zxing框架的集成步骤不够简洁,而且它的识别速度偏慢,识别准确率也不高,远不如HMS的扫码服务来得好用。下面介绍如何在App工程中集成HMS的扫码服务。 首先,因为扫码属于第三方服务,所以要修改模块的build.gradle,往dependencies节点添加如下一行配置,表示导入指定版本的扫码库:
aqi00
2022/05/11
1.4K0
Android开发笔记(一百八十三)利用HMS轻松扫描二维码
uni-app App端半屏连续扫码
本文用一个简单的 demo 讲解 App端 半屏连续扫码 的实现方式,包括(条形码、二维码等各种各样的码)。
德育处主任
2022/04/17
1.8K1
uni-app App端半屏连续扫码
Flutter开发之动态权限
众所周知,Android在6.0版本后将权限修改成了动态权限,而iOS则一直使用的是动态权限,所以在Flutter应用开发中如果涉及到一些危险权限,就需要进行动态申请,动态申请权限可以使用Flutter的permission_handler。
xiangzhihong
2022/11/30
2K0
flutter_app_icon_badge 插件鸿蒙适配:实现跨平台应用图标角标管理
作者仓库:https://github.com/badver/flutter_app_icon_badge/
徐建国
2025/06/08
770
flutter_app_icon_badge 插件鸿蒙适配:实现跨平台应用图标角标管理
Flutter 插件鸿蒙化,flutter_native_contact_picker 联系人选择器的跨平台适配实践
作者仓库:https://github.com/jayeshpansheriya/flutter_native_contact_picker
徐建国
2025/04/30
1300
Flutter 插件鸿蒙化,flutter_native_contact_picker 联系人选择器的跨平台适配实践
鸿蒙版 Flutter 库 torch_light 手电筒功能深度适配:跨平台开发者的光明之路
作者仓库:https://github.com/svprdga/torch_light
徐建国
2025/04/26
940
鸿蒙版 Flutter 库 torch_light 手电筒功能深度适配:跨平台开发者的光明之路
微信小程序调用相机或者图库实现扫描二维码或者条码的文档教程
最近在做一个产品项目,程序是需要扫描条形码然后跟后台某个接口返回值,其实微信小程序就有一个扫码识别的API,下面一起来看看:
李洋博客
2022/03/03
4.9K0
微信小程序调用摄像头扫描识别二维码和条形码
给扫描按钮的图片绑定一个事件,点击调用摄像头扫码,扫描成功将数值赋给 input 输入框的 value 值。效果如下图:
德顺
2019/11/13
11.3K0
微信小程序调用摄像头扫描识别二维码和条形码
memory_info:Flutter 插件助力鸿蒙生态,精准获取设备内存信息
作者仓库:https://github.com/MrOlolo/memory_info/tree/master/memory_info
徐建国
2025/06/08
360
memory_info:Flutter 插件助力鸿蒙生态,精准获取设备内存信息
Flutter异常监测与上报
众所周知,软件项目的交付是一个复杂的过程,任何原因都有可能导致交付的失败。很多时候经常遇到的一个现象是,应用在开发测试时没有任何异常,但一旦上线就问题频出。出现这些异常,可能是因为不充分的机型适配或者用户糟糕的网络状况造成的,也可能是Flutter框架自身缺陷造成的,甚至是操作系统底层的问题。
xiangzhihong
2020/04/06
3.2K0
推荐阅读
相关推荐
最简单的Flutter权限管理插件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档