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

Flutter Web使用camcode扫码时移动端Chrome调用摄像头一直加载如何解决

Flutter Web camcode库移动端Chrome摄像头调用异常解决方案
  • 优先排查协议安全限制
    移动端Chrome要求摄像头权限申请必须在HTTPS环境下触发,仅localhost例外。你通过本地IP访问终端运行的开发服务时走的是HTTP协议,会被浏览器直接拦截权限申请流程,导致组件一直加载。
    临时调试可以开启Chrome不安全origin豁免:安卓端Chrome地址栏输入chrome://flags,搜索Insecure origins treated as secure,将你本地开发服务的IP+端口地址填入输入框,启用选项后重启浏览器即可绕过限制。
    正常开发/生产环境需要配置HTTPS,运行Flutter Web时添加SSL相关启动参数即可:
    flutter run -d chrome --web-port=8080 --web-hostname=0.0.0.0 --web-ssl-cert=证书文件路径 --web-ssl-key=密钥文件路径
    无正式证书可生成自签名证书,将证书安装到安卓设备的信任凭据中即可正常访问。
  • 调整摄像头适配参数
    camcode官方示例的默认分辨率配置更适配桌面设备,移动端可能因硬件不支持对应分辨率导致加载失败,可手动指定移动端适配的低分辨率参数:
    CamCode(
      width: MediaQuery.of(context).size.width,
      height: MediaQuery.of(context).size.height,
      // 优先选择720P这类移动端普遍支持的分辨率
      preferredResolution: const Resolution(1280, 720),
      onBarcode: (scannedCode) {
        // 处理扫码逻辑
      },
    )
    
  • 调整权限申请触发时机
    安卓Chrome禁止页面在无用户交互的情况下自动申请敏感权限,不要在页面初始化时直接加载CamCode组件,可以添加一个扫码触发按钮,用户点击后再渲染CamCode组件,避免权限申请被自动拦截。
  • 排查摄像头枚举逻辑
    部分安卓设备默认枚举到的第一个摄像头是前置,可手动指定优先使用后置摄像头,避免调用到不符合预期的摄像头导致加载异常。

内容的提问来源于stack exchange,提问作者aru van housen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:48:03