Flutter邀请管理插件at_invitation_flutter的使用

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

Flutter邀请管理插件at_invitation_flutter的使用

概览

at_invitation_flutter 是是一个为希望使用短信或电子邮件邀请联系人到 atPlatform 的Flutter开发者设计的包。 这个开源包用Dart编写,支持Flutter,并遵循 atPlatform 的去中心化、边缘计算模型,具有以下功能:

  • 通过个人数据存储控制数据访问的加密控制
  • 不需要应用后端
  • 端到端加密,只有数据所有者拥有密钥
  • 私密且无监控连接
  • 能够向不在基于 atPlatform 应用的人发送邀请

了解更多工作原理,请阅读 这个概述

开始使用

有三种方式开始使用此包:

  1. 快速启动 - 使用 at_app 创建骨架应用

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

    注意:

    • 只需运行一次 flutter pub global activate
    • Windows上使用 at_app.bat
  2. 从GitHub克隆代码

    git clone https://github.com/atsign-foundation/at_widgets.git
    
  3. 手动将包添加到项目中 更多关于如何手动将此包添加到项目中的信息可以在pub.dev找到:安装

如何工作

设置

initializeInvitationService(
    navkey: scaffoldKey,
    atClientInstance: clientSdkService.atClientServiceInstance?.atClient,
    currentAtSign: activeAtSign,
    webPage: 'https://xxxx',
    rootDomain: MixedConstants.ROOT_DOMAIN);

应用程序还需要处理深链接并处理传入链接参数。 可以使用 uni_links 包来处理这一点。

网页要求 一个包含应用信息如商店链接的网页是必需的。它也需要在提供的 cookieManager.js 文件中提供的一些JavaScript函数。checkAndWriteCookie 函数需要在页面的 onLoad 事件中调用。

注意事项

  • 如果用户禁用了浏览器中的Cookies,此功能将无法工作。
  • 在Android上,Chrome浏览器不支持自动返回到应用的重定向。用户需要点击页面顶部的链接返回到应用。

使用

  • 分享邀请
    onPressed: () {
      shareAndInvite(context, 'welcome');
    }
    
  • 获取邀请
    fetchInviteData(context, queryParameters['key'] ?? '',
        queryParameters['atsign'] ?? '');
    

开源使用和贡献

这是开源代码,所以您可以自由使用它,提出更改或增强建议,甚至创建自己的版本。请参阅 CONTRIBUTING.md 以了解详细的工具、测试设置和提交拉取请求的指南。


示例代码

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

示例应用

at_invitation_flutter 包旨在使通过短信或电子邮件邀请人们进入使用 atProtocol 的的应用变得简单。

尝试一下 该包包括在 example 目录中的一个示例应用,演示了该包的关键功能。要创建一个个性化的副本,请使用 at_app create 或查看GitHub。

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

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

1 回复

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


当然,以下是如何在Flutter项目中集成和使用at_invitation_flutter插件的示例代码。这个插件通常用于管理用户邀请功能,但请注意,由于我无法访问实时的库或具体实现细节,以下代码是基于假设的通用实现方式。实际使用时,请参考该插件的官方文档和API参考。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加at_invitation_flutter依赖:

dependencies:
  flutter:
    sdk: flutter
  at_invitation_flutter: ^latest_version  # 替换为实际最新版本号

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

2. 初始化插件

在你的Flutter应用的入口文件(通常是main.dart)中,初始化插件。这里假设插件提供了一个初始化方法。

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  // 初始化插件
  AtInvitationFlutter.instance.initialize();
  
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Invitation Management',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: InvitationScreen(),
    );
  }
}

3. 使用插件功能

接下来,创建一个屏幕来演示如何使用邀请管理功能。这里假设插件提供了发送邀请和检查邀请状态的方法。

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

class InvitationScreen extends StatefulWidget {
  @override
  _InvitationScreenState createState() => _InvitationScreenState();
}

class _InvitationScreenState extends State<InvitationScreen> {
  final TextEditingController _emailController = TextEditingController();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Invitation Management'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            TextField(
              controller: _emailController,
              decoration: InputDecoration(
                labelText: 'Enter Email',
              ),
            ),
            SizedBox(height: 16),
            ElevatedButton(
              onPressed: () async {
                try {
                  // 发送邀请
                  String invitationLink = await AtInvitationFlutter.instance.sendInvitation(
                    email: _emailController.text,
                  );
                  ScaffoldMessenger.of(context).showSnackBar(
                    SnackBar(content: Text('Invitation sent with link: $invitationLink')),
                  );
                } catch (e) {
                  ScaffoldMessenger.of(context).showSnackBar(
                    SnackBar(content: Text('Failed to send invitation: ${e.message}')),
                  );
                }
              },
              child: Text('Send Invitation'),
            ),
            SizedBox(height: 16),
            ElevatedButton(
              onPressed: () async {
                try {
                  // 检查邀请状态(假设通过邀请链接)
                  String invitationLink = 'your_invitation_link_here'; // 替换为实际的邀请链接
                  bool isAccepted = await AtInvitationFlutter.instance.checkInvitationStatus(invitationLink);
                  ScaffoldMessenger.of(context).showSnackBar(
                    SnackBar(content: Text('Invitation status: $isAccepted')),
                  );
                } catch (e) {
                  ScaffoldMessenger.of(context).showSnackBar(
                    SnackBar(content: Text('Failed to check invitation status: ${e.message}')),
                  );
                }
              },
              child: Text('Check Invitation Status'),
            ),
          ],
        ),
      ),
    );
  }

  @override
  void dispose() {
    _emailController.dispose();
    super.dispose();
  }
}

注意事项

  1. 实际API调用:上面的代码是基于假设的API调用。你需要查阅at_invitation_flutter插件的官方文档,了解实际可用的方法和参数。
  2. 错误处理:在实际应用中,你需要更详细的错误处理逻辑,以处理各种可能的异常情况。
  3. UI/UX:上面的UI只是一个简单的示例,你可能需要根据实际需求进行定制。

结论

以上是如何在Flutter项目中集成和使用at_invitation_flutter插件的基本步骤和示例代码。请确保查阅最新的官方文档和API参考,以获得最准确的信息。

回到顶部