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

Flutter中如何生成并显示符合GS1标准的DataMatrix条码?

生成GS1 DataMatrix条码的正确方法

要生成符合GS1标准的DataMatrix条码,核心是正确插入FNC1控制字符并配置条码生成器的GS1模式,以下是可行的实现方案:

关键要点

  • GS1 DataMatrix的FNC1对应ASCII 29(GS字符,代码中用\x1D表示),不是{FNC1}、这类文本符号。
  • 必须启用条码生成器的GS1格式支持,否则即使插入了控制字符也会被当作普通DataMatrix处理。

方案1:直接使用BarcodeWidget配置GS1模式

import 'package:barcode_widget/barcode_widget.dart';
import 'package:flutter_pdf/flutter_pdf.dart';

// 在数据开头添加ASCII 29(GS字符)
String gs1Data = "\x1D010460437111281215A&r2L93P2t1";

return pw.BarcodeWidget(
  margin: pw.EdgeInsets.all(24),
  drawText: false,
  // 启用GS1格式支持
  barcode: Barcode.dataMatrix(useGS1Format: true),
  data: gs1Data,
);

方案2:使用DataMatrixEncoder生成GS1条码

import 'package:barcode/barcode.dart';
import 'package:barcode_widget/barcode_widget.dart';
import 'package:flutter_pdf/flutter_pdf.dart';

String rawData = "010460437111281215A&r2L93P2t1";

// 初始化GS1格式的DataMatrix编码器
final encoder = DataMatrixEncoder(
  rawData,
  format: DataMatrixFormat.gs1,
);

// 生成条码并通过BarcodeWidget显示
return pw.BarcodeWidget(
  margin: pw.EdgeInsets.all(24),
  drawText: false,
  barcode: Barcode.dataMatrix(),
  data: encoder.toRawString(),
);

注意事项

  • 部分条码扫描器需要手动开启「GS1解码模式」才能正确识别生成的GS1 DataMatrix条码,生成后请确认扫描器的配置。
  • 不要用可视化的FNC1标记替换实际的ASCII控制字符,扫描器只会识别ASCII 29作为GS1 DataMatrix的起始标识。

内容的提问来源于stack exchange,提问作者Артем Ильинский

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 20:03:16