Flutter联系人管理界面插件contactkit_ui的使用

Flutter联系人管理界面插件contactkit_ui的使用

提供联系人功能实现(包含UI)

声明依赖项

如需添加 ContactKitUI 的依赖项,您必须将 pub 库添加到项目中。

pubspec.yaml 文件中添加依赖项:

dependencies:
  contactkit_ui: ^1.0.0

安装依赖项

完成上述步骤后,在项目的根目录下运行以下命令以安装依赖项:

flutter pub get

使用示例

以下是一个完整的示例,展示如何使用 contactkit_ui 插件来实现联系人管理界面。

示例代码

import 'package:flutter/material.dart';
import 'package:contactkit_ui/contactkit_ui.dart'; // 导入 ContactKitUI

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: ContactManagerPage(), // 设置主页为联系人管理页面
    );
  }
}

class ContactManagerPage extends StatefulWidget {
  [@override](/user/override)
  _ContactManagerPageState createState() => _ContactManagerPageState();
}

class _ContactManagerPageState extends State<ContactManagerPage> {
  List<Map<String, dynamic>> contacts = []; // 存储联系人数据

  [@override](/user/override)
  void initState() {
    super.initState();
    fetchContacts(); // 初始化时获取联系人数据
  }

  // 模拟获取联系人数据
  Future<void> fetchContacts() async {
    // 这里可以替换为实际的联系人数据源
    setState(() {
      contacts = [
        {"name": "张三", "phone": "1234567890"},
        {"name": "李四", "phone": "0987654321"},
        {"name": "王五", "phone": "1122334455"},
      ];
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("联系人管理"), // 设置标题
      ),
      body: ListView.builder( // 使用 ListView 显示联系人列表
        itemCount: contacts.length,
        itemBuilder: (context, index) {
          return ListTile(
            leading: CircleAvatar(child: Text(contacts[index]['name'][0])), // 显示头像
            title: Text(contacts[index]['name']), // 显示姓名
            subtitle: Text(contacts[index]['phone']), // 显示电话号码
            onTap: () {
              Navigator.push( // 点击联系人跳转到详细页面
                context,
                MaterialPageRoute(
                  builder: (context) => ContactDetailPage(contact: contacts[index]),
                ),
              );
            },
          );
        },
      ),
      floatingActionButton: FloatingActionButton( // 添加联系人按钮
        onPressed: () {
          Navigator.push(
            context,
            MaterialPageRoute(
              builder: (context) => AddContactPage(),
            ),
          );
        },
        child: Icon(Icons.add),
      ),
    );
  }
}

// 联系人详细页面
class ContactDetailPage extends StatelessWidget {
  final Map<String, dynamic> contact;

  ContactDetailPage({required this.contact});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("联系人详情"),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Text("姓名: ${contact['name']}"),
            Text("电话: ${contact['phone']}"),
          ],
        ),
      ),
    );
  }
}

// 添加联系人页面
class AddContactPage extends StatelessWidget {
  final TextEditingController nameController = TextEditingController();
  final TextEditingController phoneController = TextEditingController();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("添加联系人"),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: [
            TextField(
              controller: nameController,
              decoration: InputDecoration(labelText: "姓名"),
            ),
            TextField(
              controller: phoneController,
              decoration: InputDecoration(labelText: "电话"),
            ),
            ElevatedButton(
              onPressed: () {
                // 模拟保存联系人数据
                Navigator.pop(context);
              },
              child: Text("保存"),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter联系人管理界面插件contactkit_ui的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter联系人管理界面插件contactkit_ui的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


contactkit_ui 是一个用于 Flutter 的联系人管理界面插件,它提供了一个现成的 UI 组件,方便开发者快速集成联系人管理功能。以下是如何使用 contactkit_ui 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 contactkit_ui 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  contactkit_ui: ^0.1.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入包

在你的 Dart 文件中导入 contactkit_ui 包:

import 'package:contactkit_ui/contactkit_ui.dart';

3. 使用 ContactList 组件

contactkit_ui 提供了一个 ContactList 组件,你可以直接在你的应用中使用它来显示联系人列表。

class ContactPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('联系人'),
      ),
      body: ContactList(
        onContactSelected: (contact) {
          // 处理联系人选择事件
          print('选中的联系人: ${contact.displayName}');
        },
      ),
    );
  }
}

4. 处理联系人选择事件

ContactList 组件提供了一个 onContactSelected 回调函数,当用户选择一个联系人时会触发这个回调。你可以在回调中处理联系人选择事件,例如导航到联系人详情页面。

5. 自定义联系人列表

ContactList 组件还提供了一些可选参数,允许你自定义联系人列表的外观和行为。例如,你可以设置 showSearchBar 参数来显示搜索栏,或者设置 contactItemBuilder 来自定义联系人列表项的样式。

ContactList(
  showSearchBar: true,
  contactItemBuilder: (context, contact) {
    return ListTile(
      leading: CircleAvatar(
        backgroundImage: contact.avatar != null ? MemoryImage(contact.avatar!) : null,
        child: contact.avatar == null ? Text(contact.displayName[0]) : null,
      ),
      title: Text(contact.displayName),
      subtitle: Text(contact.phones.isNotEmpty ? contact.phones.first : '无号码'),
    );
  },
  onContactSelected: (contact) {
    print('选中的联系人: ${contact.displayName}');
  },
)

6. 权限处理

在 Android 和 iOS 上,访问联系人需要相应的权限。你需要在 AndroidManifest.xmlInfo.plist 文件中添加相应的权限声明。

Android:

<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />

iOS:

<key>NSContactsUsageDescription</key>
<string>我们需要访问您的联系人以显示联系人列表。</string>
回到顶部