Flutter联系人信息处理插件vcard_maintained的使用
Flutter联系人信息处理插件vcard_maintained的使用
安装
要使用此插件,您需要在 pubspec.yaml
文件中添加 vcard_maintained
依赖项,如下所示:
dependencies:
vcard_maintained: any
然后运行以下命令来获取依赖项:
flutter packages get
使用
下面是一个简单的示例,展示了如何创建一个基本的vCard,并将其保存到文件中,或者从控制台查看其内容。
/// 导入包
import 'package:vcard_maintained/vcard_maintained.dart';
/// 创建一个新的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.saveToFile('./contact.vcf');
/// 获取格式化的字符串
print(vCard.getFormattedString());
嵌入图像
您可以使用base64编码将图像嵌入到照片或徽标字段中,而不是通过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参考可以在以下链接中找到:
MDN Date Object Reference
完整示例
以下示例展示了如何填充所有字段的vCard。
/// 导入包
import 'package:vcard_maintained/vcard_maintained.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('https://www.activspaces.com/wp-content/uploads/2019/01/ActivSpaces-Logo_Dark.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_maintained/vcard_maintained.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;
原始来源
这是由Eric J Nesser编写的vCards-js包的dart端口。 原始源码
测试
您可以运行VCard单元测试(正在进行中):
flutter test
更多关于Flutter联系人信息处理插件vcard_maintained的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter联系人信息处理插件vcard_maintained的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
vcard_maintained
是一个用于在 Flutter 应用中处理 vCard 格式联系人信息的插件。它可以帮助你解析和生成 vCard 文件,从而轻松地读取和写入联系人信息。
以下是如何在 Flutter 项目中使用 vcard_maintained
插件的步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 vcard_maintained
插件的依赖:
dependencies:
flutter:
sdk: flutter
vcard_maintained: ^1.0.0 # 请确保使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 vcard_maintained
插件:
import 'package:vcard_maintained/vcard_maintained.dart';
3. 解析 vCard 文件
你可以使用 VCardParser
来解析 vCard 文件。假设你有一个 vCard 文件的内容作为字符串,你可以这样解析它:
void parseVCard(String vCardContent) {
var vCard = VCard();
vCard.parse(vCardContent);
print('Name: ${vCard.firstName} ${vCard.lastName}');
print('Email: ${vCard.email}');
print('Phone: ${vCard.phone}');
print('Address: ${vCard.address}');
// 你可以访问其他属性,如 organization, title, etc.
}
4. 生成 vCard 文件
你也可以使用 vcard_maintained
插件来生成 vCard 文件。以下是一个简单的例子:
void generateVCard() {
var vCard = VCard();
vCard.firstName = 'John';
vCard.lastName = 'Doe';
vCard.email = 'john.doe@example.com';
vCard.phone = '123-456-7890';
vCard.address = '123 Main St, City, Country';
String vCardString = vCard.getFormattedString();
print(vCardString);
}
5. 保存 vCard 文件
如果你想将生成的 vCard 保存到文件中,可以使用 dart:io
库:
import 'dart:io';
void saveVCardToFile(String vCardString, String filePath) {
File(filePath).writeAsStringSync(vCardString);
}
6. 读取 vCard 文件
同样,你可以从文件中读取 vCard 内容并解析它:
void readAndParseVCard(String filePath) {
String vCardContent = File(filePath).readAsStringSync();
parseVCard(vCardContent);
}
7. 处理多个 vCard
如果你有一个包含多个 vCard 的文件,你可以按如下方式处理:
void parseMultipleVCards(String vCardContent) {
var vCards = vCardContent.split('END:VCARD');
for (var vCardString in vCards) {
if (vCardString.trim().isNotEmpty) {
var vCard = VCard();
vCard.parse(vCardString);
print('Name: ${vCard.firstName} ${vCard.lastName}');
}
}
}
8. 处理更多属性
vcard_maintained
插件支持许多 vCard 属性,如 organization
, title
, url
, note
, birthday
, 等等。你可以根据需要访问和设置这些属性。
void setAdditionalProperties() {
var vCard = VCard();
vCard.organization = 'Example Corp';
vCard.title = 'Software Engineer';
vCard.url = 'https://example.com';
vCard.note = 'This is a sample note.';
vCard.birthday = DateTime(1990, 1, 1);
print(vCard.getFormattedString());
}
9. 处理照片
vcard_maintained
插件还支持处理联系人照片。你可以将照片以 base64 编码的形式添加到 vCard 中:
void addPhotoToVCard() {
var vCard = VCard();
vCard.firstName = 'John';
vCard.lastName = 'Doe';
// 假设你有一个 base64 编码的图片
String base64Image = '...'; // 你的 base64 图片数据
vCard.photo = base64Image;
print(vCard.getFormattedString());
}