Flutter即时通讯插件at_chat_flutter的使用

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

Flutter即时通讯插件at_chat_flutter的使用

概述

at_chat_flutter 是一个用于Flutter开发者的即时通讯插件,支持在基于atPlatform构建的应用中添加点对点聊天功能。该开源包由Dart编写,遵循去中心化的边缘计算模型,并具有以下特性:

  • 通过个人数据存储进行数据访问的加密控制
  • 不需要应用后端
  • 端到端加密,只有数据所有者拥有密钥
  • 私有且无监控的连接
  • 点对点聊天

更多关于其工作原理的信息可以参考此概述

开始使用

1. 快速开始 - 使用 at_app 生成骨架应用

你可以使用 at_app create 命令生成一个示例应用模板,然后个性化修改:

$ 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克隆

可以从 GitHub仓库 克隆源代码。其中包含的示例代码与上面提到的模板相同。

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

3. 手动添加包到项目

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

工作原理

设置

聊天服务需要初始化。通常情况下,应用程序首先创建一个 AtClientService 实例,然后用它来初始化聊天服务。

initializeChatService(atClientManager, activeAtSign!,
        rootDomain: AtEnv.rootDomain);

使用

作为底部弹出层

FlatButton(
    onPressed: () {
        scaffoldKey.currentState
        .showBottomSheet((context) => ChatScreen());
    },
    child: Container(
        height: 40,
        child: Text('Open chat in bottom sheet'),
    ),
),

作为屏幕

class ThirdScreen extends StatefulWidget {
  @override
  _ThirdScreenState createState() => _ThirdScreenState();
}

class _ThirdScreenState extends State<ThirdScreen> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Chat Screen')),
      body: ChatScreen(
        height: MediaQuery.of(context).size.height,
        incomingMessageColor: Colors.blue[100],
        outgoingMessageColor: Colors.green[100],
        isScreen: true,
      ),
    );
  }
}

示例Demo

以下是一个完整的示例应用,展示如何集成和使用 at_chat_flutter 插件。

import 'package:flutter/material.dart';
import 'package:at_chat_flutter/at_chat_flutter.dart';
import 'package:at_onboarding_flutter/at_onboarding_flutter.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化onboarding流程
  await AtOnboarding.onboard(
    context: context,
    config: AtOnboardingConfig(
      domain: 'root.atsign.wtf',
      namespace: 'example',
      apiKey: '<your-api-key>',
    ),
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();

  @override
  void initState() {
    super.initState();
    initializeChatService(atClientManager, activeAtSign!, rootDomain: 'root.atsign.wtf');
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      key: _scaffoldKey,
      appBar: AppBar(title: Text('Home Screen')),
      body: Center(
        child: FlatButton(
          onPressed: () {
            _scaffoldKey.currentState?.showBottomSheet((context) => ChatScreen());
          },
          child: Text('Open Chat Bottom Sheet'),
        ),
      ),
    );
  }
}

这个示例展示了如何使用 at_chat_flutter 插件在Flutter应用中实现点对点聊天功能。希望这些信息对你有所帮助!如果有任何问题或建议,请随时反馈。


更多关于Flutter即时通讯插件at_chat_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter即时通讯插件at_chat_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用at_chat_flutter插件来实现即时通讯功能的代码案例。这个插件通常用于构建基于AtSign协议的聊天应用。请注意,你需要先确保你的Flutter环境已经正确配置,并且已经创建了一个Flutter项目。

1. 添加依赖

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

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

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

2. 配置AtSign连接

在使用at_chat_flutter之前,你需要配置AtSign连接。这通常涉及到设置AtClientService,并连接到AtSign网络。

import 'package:at_client/at_client.dart';
import 'package:at_chat_flutter/at_chat_flutter.dart';
import 'package:flutter/material.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  setupAtClientService().then((_) {
    runApp(MyApp());
  });
}

Future<void> setupAtClientService() async {
  // 配置AtClientManager
  AtClientManager atClientManager = AtClientManager(
    rootDomain: 'root.atsign.com',  // 替换为你的根域名
    namespace: 'my_namespace',      // 替换为你的命名空间
    appId: 'my_app_id',             // 替换为你的应用ID
    port: 443,
    commitLogPath: './commit_log/',
    privateKey: 'your_private_key',  // 替换为你的私钥
    env: AtEnvironment.prod,
  );

  // 初始化AtClientService
  await atClientManager.init();
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: ChatScreen(),
    );
  }
}

3. 创建聊天屏幕

接下来,创建一个简单的聊天屏幕,使用at_chat_flutter提供的组件。

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

class ChatScreen extends StatefulWidget {
  @override
  _ChatScreenState createState() => _ChatScreenState();
}

class _ChatScreenState extends State<ChatScreen> {
  late AtChatController atChatController;

  @override
  void initState() {
    super.initState();
    // 初始化AtChatController
    atChatController = AtChatController(
      atSign: '@your_atsign',  // 替换为你的AtSign
      onMessageReceived: (message) {
        // 处理接收到的消息
        print('Received message: ${message.text}');
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Chat Screen'),
      ),
      body: AtChatWidget(
        controller: atChatController,
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () async {
          // 发送消息
          await atChatController.sendMessage(text: 'Hello, AtSign!');
        },
        tooltip: 'Send message',
        child: Icon(Icons.send),
      ),
    );
  }
}

4. 运行应用

确保你的设备或模拟器已经连接,并且你的AtSign已经登录到AtSign网络。然后运行你的Flutter应用:

flutter run

这将启动你的应用,并显示一个包含聊天界面的屏幕。你可以发送和接收消息,这些消息将通过at_chat_flutter插件进行处理。

注意

  • 请确保你使用的at_chat_flutter版本与at_client库兼容。
  • 在实际项目中,你可能需要处理更多的错误情况,例如网络错误、认证错误等。
  • at_chat_flutter插件的API可能会随着版本更新而变化,请参考官方文档以获取最新的使用指南。

这个代码案例提供了一个基本的框架,你可以根据自己的需求进一步扩展和自定义。

回到顶部