• 注册
  • iOS博客 iOS博客 关注:0 内容:64

    如何从零开始实现Flutter条码扫描器

  • 查看作者
  • 打赏作者
  • 当前位置: 职业司 > iOS开发 > iOS博客 > 正文
    • iOS博客
    • 大约两年前,我写了一篇文章,分享了如何用Dynamsoft Barcode Reader一步步建立一个Flutter条码插件。那时候,Flutter还在开发中,只支持Android和iOS。如今,谷歌已经发布了Flutter 2,它允许开发者从一个代码库中为移动、网络和桌面构建应用程序。如果你想构建跨平台的应用程序,那么从现在开始,值得在Flutter上投入很多精力。由于新的Flutter与旧的Flutter不兼容,我决定重构Flutter条码插件的API,并添加一个新的方法来支持实时的视频流条码扫描。

      Flutter条码SDK插件

      在下面的段落中,我将演示如何开发一个支持从图像文件和图像缓冲区读取条形码的Flutter条形码插件,以及如何将该插件发布到pub.dev。

      使用Dynamsoft条码阅读器开发Flutter条码SDK插件

      我目前的计划是使该插件适用于Android。因此,我创建了如下的插件包。

      flutter create --org com.dynamsoft --template=plugin --platforms=android -a java flutter_barcode_sdk
      复制代码

      为了在插件项目中添加其他平台的代码,如iOS,我可以运行。

      flutter create --template=plugin --platforms=ios .
      复制代码

      插件的API是在lib/flutter_barcode_sdk.dart 文件中定义的,它是Dart代码和平台特定代码之间的桥梁。一个android/src/main/java/com/dynamsoft/flutter_barcode_sdk/FlutterBarcodeSdkPlugin.java 文件被生成,作为Android的入口点。

      Dart代码

      让我们开始使用lib/flutter_barcode_sdk.dart

      第一步是定义一个BarcodeResult 类,它包含条形码格式、结果和坐标点,用于反序列化从平台特定代码返回的JSON数据。

      为图片和视频流场景分别创建方法decodeFile()decodeImageBuffer()

      _convertResults() 函数用于将List<Map<dynamic, dynamic>> 类型转换为<List<BarcodeResult>> 类型。

      Java代码

      当调用Flutter API时,将触发AndroidonMethodCall() 函数。

      以下是特定平台代码的基本步骤。

      1. 从Dart框架中提取参数。
      2. 处理图像数据。
      3. 返回结果。

      decodeImageBuffer 方法是为相机流设计的。为了避免阻塞主线程,我使用SingleThreadExectuor ,在一个工作线程中处理CPU密集型工作。

      发布 Flutter Barcode SDK 插件到 Pub.dev

      在发布插件之前,你最好通过运行命令来分析。

      flutter pub publish --dry-run
      复制代码

      如果没有错误,您可以将包发布到pub.dev。

      flutter pub publish
      复制代码

      我已经成功发布了Flutter条码SDK到pub.dev/packages/fl…。

      插件完成后,是时候用几行Dart代码建立一个条码扫描器应用了。

      首先,我将Flutter相机插件和flutter_barcode_sdk添加到pubspec.yaml 文件中。

      然后,在main.dart 中初始化相机和条码阅读器对象。

      该应用程序由一个相机视图、一个文本小部件和两个按钮小部件组成。

      videoScan() 函数中,我调用startImageStream()来持续获得最新的视频帧并调用条码解码API。

      pictureScan() 函数从图像中读取条形码,并在图片屏幕上显示图像和结果。

      最后,我可以建立并运行该应用程序。

      flutter run
      复制代码

      对Raspberry Pi包装盒上的一维条码和二维码进行识别测试。

      视频条码扫描

      如何从零开始实现Flutter条码扫描器

      图片条码扫描

      如何从零开始实现Flutter条码扫描器

      前提条件

      iOS, Web, 和Windows。

      源代码

      github.com/yushulx/flu…

      请登录之后再进行评论

      登录

      手机阅读天地(APP)

      • 微信公众号
      • 微信小程序
      • 安卓APP
      手机浏览,惊喜多多
      匿名树洞,说我想说!
      问答悬赏,VIP可见!
      密码可见,回复可见!
      即时聊天、群聊互动!
      宠物孵化,赠送礼物!
      动态像框,专属头衔!
      挑战/抽奖,金币送不停!
      赶紧体会下,不会让你失望!
    • 实时动态
    • 签到
    • 做任务
    • 发表内容
    • 偏好设置
    • 到底部
    • 帖子间隔 侧栏位置:
    • 还没有账号?点这里立即注册