Flutter联系人分组管理插件at_contacts_group_flutter的使用

发布于 1周前 作者 songsunli 来自 Flutter

Flutter联系人分组管理插件at_contacts_group_flutter的使用

概述

at_contacts_group_flutter 是一个用于Flutter开发者的插件,旨在为基于 atPlatform 的应用程序添加联系人分组功能。这个开源包由Dart编写,支持Flutter,并遵循去中心化和边缘计算模型。

主要特性

  • 数据访问通过个人数据存储进行加密控制。
  • 无需应用后端。
  • 端到端加密,只有数据所有者拥有密钥。
  • 私有且无监控的连接。
  • 创建和管理群组。

快速开始

选项1:快速启动 - 使用 at_app 生成骨架应用

通过四个命令可以创建一个个性化副本:

$ flutter pub global activate at_app 
$ at_app create --sample=<package ID> <app name> 
$ cd <app name>
$ flutter run

注意:

  1. 只需运行一次 flutter pub global activate
  2. 在Windows上使用 at_app.bat

选项2:从GitHub克隆

可以从 GitHub仓库 克隆源代码。

$ git clone https://github.com/atsign-foundation/at_widgets.git

选项3:手动添加包到项目

pub.dev 上找到详细的手动添加说明。

设置与使用

初始化

需要初始化联系人服务和群组服务:

initializeContactsService(rootDomain: AtEnv.rootDomain);
initializeGroupService(rootDomain: AtEnv.rootDomain);

导航到群组列表

通过以下代码导航到群组列表:

Navigator.of(context).push(MaterialPageRoute(
    builder: (BuildContext context) => GroupList(),
));

示例代码

以下是完整的示例代码,展示如何使用 at_contacts_group_flutter 包:

import 'package:flutter/material.dart';
import 'package:at_contacts_group_flutter/at_contacts_group_flutter.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Contact Groups Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Contact Groups'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  @override
  void initState() {
    super.initState();
    initializeContactsService(rootDomain: "root.atsign.wtf");
    initializeGroupService(rootDomain: "root.atsign.wtf");
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.of(context).push(MaterialPageRoute(
                builder: (BuildContext context) => GroupList(),
            ));
          },
          child: Text('Go to Group List'),
        ),
      ),
    );
  }
}

开源使用与贡献

这是开源代码,您可以随意使用、建议更改或增强,甚至创建自己的版本。详细指南请参阅 CONTRIBUTING.md


以上内容展示了如何使用 at_contacts_group_flutter 插件来实现联系人分组管理功能,并提供了详细的示例代码帮助您快速上手。希望这些信息对您有所帮助!


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

1 回复

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


当然,下面是一个关于如何使用at_contacts_group_flutter插件来管理联系人分组的示例代码。假设你已经设置好了Flutter开发环境,并且已经在pubspec.yaml文件中添加了at_contacts_group_flutter依赖。

首先,确保你的pubspec.yaml文件中包含以下依赖:

dependencies:
  flutter:
    sdk: flutter
  at_contacts_group_flutter: ^最新版本号  # 请替换为实际的最新版本号

然后,运行flutter pub get来安装依赖。

接下来,在你的Flutter项目中,你可以按照以下步骤使用at_contacts_group_flutter插件来管理联系人分组。

1. 导入插件

在你的Dart文件中导入插件:

import 'package:at_contacts_group_flutter/at_contacts_group_flutter.dart';

2. 初始化插件

通常,你会在应用的入口文件(例如main.dart)中初始化插件。这里假设你已经有了一个AtClientService实例来与AtSign进行通信。

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 假设你已经有了AtClientService实例
  final AtClientService atClientService = AtClientService();
  await atClientService.init('你的@sign', '密钥');

  // 初始化联系人分组管理插件
  final ContactsGroupPlugin contactsGroupPlugin = ContactsGroupPlugin(atClientService: atClientService);

  runApp(MyApp(contactsGroupPlugin: contactsGroupPlugin));
}

3. 使用插件功能

在你的应用逻辑中,你可以使用contactsGroupPlugin来管理联系人分组。例如,获取分组列表、创建新分组、添加联系人到分组等。

class MyApp extends StatefulWidget {
  final ContactsGroupPlugin contactsGroupPlugin;

  MyApp({required this.contactsGroupPlugin});

  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  List<Group> groupList = [];

  @override
  void initState() {
    super.initState();
    _fetchGroups();
  }

  Future<void> _fetchGroups() async {
    try {
      groupList = await widget.contactsGroupPlugin.fetchGroups();
      setState(() {});
    } catch (e) {
      print('Error fetching groups: $e');
    }
  }

  Future<void> _createGroup() async {
    final String groupName = 'Family';
    try {
      await widget.contactsGroupPlugin.createGroup(groupName);
      _fetchGroups();
    } catch (e) {
      print('Error creating group: $e');
    }
  }

  Future<void> _addGroupMember(String groupId, String contactId) async {
    try {
      await widget.contactsGroupPlugin.addGroupMember(groupId, contactId);
      print('Added contact to group');
    } catch (e) {
      print('Error adding contact to group: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Contacts Group Management'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            children: [
              ElevatedButton(
                onPressed: _createGroup,
                child: Text('Create Group'),
              ),
              SizedBox(height: 20),
              Expanded(
                child: ListView.builder(
                  itemCount: groupList.length,
                  itemBuilder: (context, index) {
                    final Group group = groupList[index];
                    return Card(
                      child: ListTile(
                        title: Text(group.name),
                        subtitle: Text('ID: ${group.id}'),
                        trailing: IconButton(
                          icon: Icon(Icons.add),
                          onPressed: () {
                            // 这里你需要有一个contactId来添加到分组中
                            String contactId = 'some_contact_id'; // 替换为实际的联系人ID
                            _addGroupMember(group.id, contactId);
                          },
                        ),
                      ),
                    );
                  },
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

注意事项

  1. 错误处理:在实际应用中,你应该添加更多的错误处理逻辑来确保应用的健壮性。
  2. UI设计:上述代码中的UI设计非常简单,你可能需要根据实际需求进行定制。
  3. AtSign和密钥:确保你已经正确配置了AtSign和密钥,以便插件能够与AtSign网络进行通信。

以上代码展示了如何使用at_contacts_group_flutter插件来管理联系人分组。你可以根据自己的需求进一步扩展和定制这些功能。

回到顶部