Flutter联系人信息生成插件vcard的使用
Flutter联系人信息生成插件vcard的使用
vCard
通过此插件可以创建vCard文件,用于将联系人信息导入到Outlook、iOS、Mac OS以及Android设备中,无论是从网站还是移动应用程序中。
安装
在pubspec.yaml
文件中添加以下依赖以使用该插件:
dependencies:
vcard: any
然后运行以下命令安装依赖:
flutter packages get
使用
以下是一个简单的示例,展示如何创建一个基本的vCard并将其保存到文件中或从控制台打印其内容。
示例代码
/// 导入插件包
import 'package:vcard/vcard.dart';
void main() {
/// 创建一个新的vCard对象
var vCard = VCard();
/// 设置属性
vCard.firstName = 'FirstName'; // 名
vCard.middleName = 'MiddleName'; // 中间名
vCard.lastName = 'LastName'; // 姓
vCard.organization = 'ActivSpaces Labs'; // 公司名称
vCard.photo.attachFromUrl('https://www.activspaces.com/wp-content/uploads/2019/01/ActivSpaces-Logo_Dark.png', 'PNG'); // 添加头像
vCard.workPhone = 'Work Phone Number'; // 工作电话
vCard.birthday = DateTime.now(); // 生日
vCard.jobTitle = 'Software Developer'; // 职位
vCard.url = 'https://github.com/valerycolong'; // 网站链接
vCard.note = 'Notes on contact'; // 备注
/// 将vCard保存到文件
vCard.saveToFile('./contact.vcf');
/// 打印格式化的vCard字符串
print(vCard.getFormattedString());
}
嵌入图片
可以通过base64编码嵌入图片到photo
或logo
字段中,而不是通过URL链接。
示例代码
// 可以是Windows或Linux/Unix路径结构,并支持JPEG、PNG、GIF格式
vCard.photo.embedFromFile('/path/to/file.png');
vCard.logo.embedFromFile('/path/to/file.png');
// 或者通过base64编码字符串嵌入图片
vCard.photo.embedFromString('iVBORw0KGgoAAAANSUhEUgAAA2...', 'image/png');
vCard.logo.embedFromString('iVBORw0KGgoAAAANSUhEUgAAA2...', 'image/png');
日期参考
有关如何使用Date
对象设置生日和纪念日的详细说明,可以参考 MDN文档。
完整示例
以下是一个完整的示例,展示了如何填充所有字段。
示例代码
/// 导入插件包
import 'package:vcard/vcard.dart';
void main() {
/// 创建一个新的vCard对象
var vCard = VCard();
/// 设置基本属性
vCard.firstName = 'FirstName';
vCard.middleName = 'MiddleName';
vCard.lastName = 'Last Name';
vCard.uid = '6yuuhuhj-c34d-4a1e-8922-bd38a9476a53';
vCard.organization = 'ActivSpaces Labs';
/// 链接到图像
vCard.photo.attachFromUrl('/path/to/image/file.png', 'JPEG');
/// 或者嵌入图像
vCard.photo.attachFromUrl('/path/to/image/file.png');
vCard.workPhone = '312-555-1212';
vCard.birthday = DateTime.now();
vCard.jobTitle = 'Software Developer';
vCard.url = 'https://github.com/valerycolong';
vCard.workUrl = 'https://activspaces.com';
vCard.note = 'Notes on contact';
/// 设置其他重要信息
vCard.nickname = 'Scarface';
vCard.namePrefix = 'Mr.';
vCard.nameSuffix = 'JR';
vCard.gender = 'M';
vCard.anniversary = DateTime.now();
vCard.role = 'Software Development';
/// 设置其他电话号码
vCard.homePhone = 'Home Phone';
vCard.cellPhone = 'Cell Phone';
vCard.pagerPhone = 'Pager Phone';
/// 设置传真号码
vCard.homeFax = 'Home Fax';
vCard.workFax = 'Work Fax';
/// 设置电子邮件地址
vCard.email = 'labs@activspaces.com';
vCard.workEmail = 'hello@activspaces.com';
/// 设置组织的标志或个人标志(也支持嵌入,见上文)
vCard.logo.attachFromUrl('https://www.activspaces.com/wp-content/uploads/2019/01/ActivSpaces-Logo_Dark.png', 'PNG');
/// 设置vCard的来源URL
vCard.source = 'http://example.com/myvcard.vcf';
/// 设置地址信息
vCard.homeAddress.label = 'Home Address';
vCard.homeAddress.street = 'Great Soppo';
vCard.homeAddress.city = 'Buea';
vCard.homeAddress.stateProvince = 'SW';
vCard.homeAddress.postalCode = '00237';
vCard.homeAddress.countryRegion = 'Cameroon';
vCard.homeAddress.type = 'HOME';
vCard.workAddress.label = 'Work Address';
vCard.workAddress.street = 'Molyko';
vCard.workAddress.city = 'Buea';
vCard.workAddress.stateProvince = 'SW';
vCard.workAddress.postalCode = '00237';
vCard.workAddress.countryRegion = 'Cameroon';
vCard.workAddress.type = 'WORK';
/// 设置社交平台URL
vCard.socialUrls['facebook'] = 'https://...';
vCard.socialUrls['linkedIn'] = 'https://...';
vCard.socialUrls['twitter'] = 'https://...';
vCard.socialUrls['flickr'] = 'https://...';
vCard.socialUrls['custom'] = 'https://...';
/// 也可以通过文件嵌入照片而不是通过URL附加
vCard.photo.embedFromFile('photo.jpg');
vCard.logo.embedFromFile('logo.jpg');
vCard.version = '3.0'; // 支持版本:2.1、3.0、4.0,不同版本支持不同的字段
/// 保存到文件
vCard.saveToFile('./contact/file.vcf');
/// 获取格式化后的字符串
print(vCard.getFormattedString());
}
多个电子邮件、传真和电话示例
email
、otherEmail
、cellPhone
、pagerPhone
、homePhone
、workPhone
、homeFax
、workFax
、otherPhone
等字段均支持数组格式的多条记录。
示例代码
/// 导入插件包
import 'package:vcard/vcard.dart';
void main() {
/// 创建一个新的vCard对象
var vCard = VCard();
/// 设置多个电子邮件地址
vCard.email = [
'e.nesser@emailhost.tld',
'e.nesser@emailhost2.tld',
'e.nesser@emailhost3.tld'
];
/// 设置多个手机号码
vCard.cellPhone = [
'312-555-1414',
'312-555-1415',
'312-555-1416'
];
}
Apple AddressBook扩展
可以使用以下Apple AddressBook扩展属性将联系人标记为组织:
示例代码
var vCard = VCard();
vCard.isOrganization = true;
原始来源
此插件是基于Eric J Nesser的vCards-js项目的Dart端口,原始项目地址为:
https://github.com/enesser/vCards-js
测试
可以通过以下命令运行VCard单元测试(目前仍在开发中):
flutter test
更多关于Flutter联系人信息生成插件vcard的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter联系人信息生成插件vcard的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在 Flutter 中,如果你想生成联系人信息并将其导出为 vCard 格式,可以使用 vcard
插件。vCard 是一种电子名片的文件格式标准,通常用于存储和交换联系人信息。
以下是如何在 Flutter 项目中使用 vcard
插件生成和导出 vCard 的步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 vcard
插件的依赖:
dependencies:
flutter:
sdk: flutter
vcard: ^1.0.0
然后运行 flutter pub get
来安装依赖。
2. 导入包
在你的 Dart 文件中导入 vcard
包:
import 'package:vcard/vcard.dart';
3. 创建 vCard 并添加联系人信息
你可以创建一个 vCard
对象,并为其添加联系人信息。以下是一个简单的示例:
void generateVCard() {
// 创建一个 vCard 对象
var vCard = VCard();
// 添加联系人信息
vCard.firstName = 'John';
vCard.lastName = 'Doe';
vCard.email = 'john.doe@example.com';
vCard.cellPhone = '+1234567890';
vCard.workPhone = '+0987654321';
vCard.title = 'Software Engineer';
vCard.url = 'https://example.com';
vCard.note = 'This is a sample vCard';
// 生成 vCard 字符串
String vCardString = vCard.getFormattedString();
// 打印 vCard 字符串
print(vCardString);
// 你可以将 vCard 字符串保存到文件或分享给其他应用
}
4. 保存或分享 vCard
你可以将生成的 vCard 字符串保存到文件或分享给其他应用。以下是一个将 vCard 保存到文件的示例:
import 'dart:io';
void saveVCardToFile(String vCardString) async {
// 获取应用的文档目录
Directory directory = await getApplicationDocumentsDirectory();
String filePath = '${directory.path}/contact.vcf';
// 将 vCard 字符串写入文件
File file = File(filePath);
await file.writeAsString(vCardString);
print('vCard saved to $filePath');
}
5. 完整示例
以下是一个完整的示例,展示了如何生成 vCard 并将其保存到文件:
import 'package:flutter/material.dart';
import 'package:vcard/vcard.dart';
import 'dart:io';
import 'package:path_provider/path_provider.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('vCard Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
generateAndSaveVCard();
},
child: Text('Generate and Save vCard'),
),
),
),
);
}
}
void generateAndSaveVCard() async {
// 创建一个 vCard 对象
var vCard = VCard();
// 添加联系人信息
vCard.firstName = 'John';
vCard.lastName = 'Doe';
vCard.email = 'john.doe@example.com';
vCard.cellPhone = '+1234567890';
vCard.workPhone = '+0987654321';
vCard.title = 'Software Engineer';
vCard.url = 'https://example.com';
vCard.note = 'This is a sample vCard';
// 生成 vCard 字符串
String vCardString = vCard.getFormattedString();
// 获取应用的文档目录
Directory directory = await getApplicationDocumentsDirectory();
String filePath = '${directory.path}/contact.vcf';
// 将 vCard 字符串写入文件
File file = File(filePath);
await file.writeAsString(vCardString);
print('vCard saved to $filePath');
}
6. 运行应用
运行你的 Flutter 应用,点击按钮生成并保存 vCard 文件。你可以在设备的文件系统中找到生成的 .vcf
文件。
7. 分享 vCard
如果你想分享生成的 vCard,可以使用 share
插件。首先,在 pubspec.yaml
中添加 share
插件的依赖:
dependencies:
share: ^2.0.4
然后,使用以下代码分享 vCard:
import 'package:share/share.dart';
void shareVCard(String vCardString) {
Share.share(vCardString, subject: 'Contact.vcf');
}