Flutter vCard生成与解析插件vcard_vcf的使用
Flutter vCard生成与解析插件vcard_vcf的使用
安装
要使用此插件,需要在pubspec.yaml
文件中添加vcard
作为依赖项。具体操作如下:
dependencies:
vcard: any
然后运行以下命令以获取包:
flutter packages get
使用
下面是一个简单的例子,展示了如何创建一个基本的vCard,并将其保存到文件中或从控制台查看其内容。
/// 导入包
import 'package:vcard/vcard.dart';
/// 创建一个新的vCard
var vCard = VCard();
/// 设置属性
vCard.firstName = 'FirstName';
vCard.middleName = 'MiddleName';
vCard.lastName = 'LastName';
vCard.organization = 'ActivSpaces Labs';
vCard.photo = ''; // 可以通过attachFromUrl或embedFromFile方法设置照片
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.saveToFile('./contact.vcf');
/// 获取格式化的字符串
print(vCard.getFormattedString());
嵌入图像
可以在照片或标志字段中嵌入图像而不是链接到URL,使用base64编码。
// 可以是Windows或Linux/Unix路径结构,支持JPEG、PNG、GIF格式
vCard.photo.embedFromFile('/path/to/file.png');
vCard.logo.embedFromFile('/path/to/file.png');
// 也可以通过base-64编码字符串嵌入图像
vCard.photo.embedFromString('iVBORw0KGgoAAAANSUhEUgAAA2...', 'image/png');
vCard.logo.embedFromString('iVBORw0KGgoAAAANSUhEUgAAA2...', 'image/png');
日期参考
有关如何使用Date
对象来处理生日和周年纪念日的信息,可以参考MDN文档:
MDN Date文档
完整示例
以下是一个完整的vCard示例,所有字段都已填充。
/// 导入包
import 'package:vcard/vcard.dart';
// 创建一个新的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和4.0版本,某些版本只支持某些字段
/// 保存到文件
vCard.saveToFile('./contact/file.vcf');
/// 获取格式化的字符串
print(vCard.getFormattedString());
多个电子邮件、传真及电话示例
email
、otherEmail
、cellPhone
、pagerPhone
、homePhone
、workPhone
、homeFax
、workFax
、otherPhone
都支持数组格式的多个条目。
示例如下:
/// 导入包
import 'package:vcard/vcard.dart';
// 创建一个新的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;
测试
你可以通过以下命令运行VCard单元测试(正在进行中):
flutter test
更多关于Flutter vCard生成与解析插件vcard_vcf的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复