如何在Flutter中生成可用于保存联系人信息的二维码
解决方案:用qr_flutter生成联系人二维码
联系人二维码的核心是vCard格式的文本内容——二维码本身仍是文本类型,但扫码工具识别到vCard格式后会自动触发保存联系人的操作。你完全可以用qr_flutter实现需求,只需先构建符合标准的vCard字符串,再传入生成二维码即可。
步骤1:构建vCard格式字符串
vCard是通用的联系人信息交换格式,以下是基础示例,可根据需求扩展字段:
BEGIN:VCARD VERSION:3.0 FN:张三 TEL;TYPE=CELL:+8613800138000 EMAIL:zhangsan@example.com ADR;TYPE=WORK:;;北京市朝阳区XX大厦;;100020;中国 ORG:XX科技有限公司 TITLE:产品经理 END:VCARD
关键字段说明:
BEGIN:VCARD和END:VCARD:格式首尾标记,必须包含VERSION:3.0:指定vCard版本,推荐用3.0兼容性最好FN:联系人全名TEL;TYPE=CELL:手机号码,TYPE可标记为WORK(工作电话)等EMAIL:邮箱地址ADR:联系地址,分号分隔不同部分(国家/地区、城市、街道等)ORG:所属公司TITLE:职位
步骤2:用qr_flutter生成二维码
将构建好的vCard字符串作为data参数传入QrImageView即可:
import 'package:qr_flutter/qr_flutter.dart'; class ContactQrPage extends StatelessWidget { @override Widget build(BuildContext context) { // 自定义联系人信息的vCard final String contactVCard = '''BEGIN:VCARD VERSION:3.0 FN:张三 TEL;TYPE=CELL:+8613800138000 EMAIL:zhangsan@example.com ADR;TYPE=WORK:;;北京市朝阳区XX大厦;;100020;中国 ORG:XX科技有限公司 TITLE:产品经理 END:VCARD'''; return Scaffold( appBar: AppBar(title: Text('联系人二维码')), body: Center( child: QrImageView( data: contactVCard, version: QrVersions.auto, size: 250.0, backgroundColor: Colors.white, ), ), ); } }
注意事项
- 确保vCard格式严格遵循标准,不要出现多余的换行或空格,否则扫码工具可能无法识别
- 不同扫码工具对vCard字段的支持略有差异,优先保留
FN、TEL这类核心字段 - 若需要动态生成(比如从用户输入获取联系人信息),可通过字符串拼接构建vCard内容
内容的提问来源于stack exchange,提问作者Vipul waghmare
相关产品推荐
相关产品推荐

