You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter移动Web应用条码扫描异常,ai_barcode插件无法识别条码如何解决?

问题原因

你当前使用的ai_barcode插件未实现Web端的条码解码逻辑,仅完成了Web侧的相机预览渲染,所以会出现预览正常但无法识别条码、拿不到扫描结果的问题。另外你当前代码注释了scannerViewCreated回调,就算插件支持Web,也无法在视图初始化完成后正确启动扫描流程,也是异常原因之一。

解决方案

方案一:替换为支持Web端的扫码插件(推荐)

直接使用原生适配Web端的跨端扫码插件,无需额外适配即可同时支持Android、iOS、Web端扫码。
示例代码如下:

import 'package:flutter/material.dart';
import 'package:mobile_scanner/mobile_scanner.dart';

class WebBarcodeScannerPage extends StatefulWidget {
  const WebBarcodeScannerPage({super.key});

  @override
  State<WebBarcodeScannerPage> createState() => _WebBarcodeScannerPageState();
}

class _WebBarcodeScannerPageState extends State<WebBarcodeScannerPage> {
  final MobileScannerController controller = MobileScannerController();
  String _debugText = 'debug';

  @override
  void dispose() {
    controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Column(
        children: [
          Text(_debugText),
          Expanded(
            child: MobileScanner(
              controller: controller,
              onDetect: (capture) {
                final List<Barcode> barcodes = capture.barcodes;
                for (final barcode in barcodes) {
                  final String? code = barcode.rawValue;
                  if (code != null) {
                    setState(() {
                      _debugText = code;
                    });
                    // 拿到结果后可以按需停止扫描
                    controller.stop();
                  }
                }
              },
            ),
          ),
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceAround,
            children: [
              TextButton(
                onPressed: () => controller.start(),
                child: const Text('开始扫描'),
              ),
              TextButton(
                onPressed: () => controller.stop(),
                child: const Text('停止扫描'),
              ),
            ],
          )
        ],
      ),
    );
  }
}

注意事项

  • Web端使用需要满足HTTPS环境要求,本地localhost调试不受此限制
  • 首次使用会触发相机权限申请,用户授权后才能正常启动扫描

方案二:基于ai_barcode自定义Web解码逻辑

如果必须使用现有ai_barcode插件,需要手动集成Web端解码能力:

  • 在Web侧引入前端扫码解码库
  • 自定义获取相机预览流的每一帧,传入解码库进行识别
  • 识别到结果后通过MethodChannel回传给Flutter层
    该方案需要同时编写前端和Flutter层的适配代码,开发成本较高,不推荐优先选用。

内容的提问来源于stack exchange,提问作者Matt Sharp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 18:06:00