Flutter即时通讯插件chat360_flutter_sdk的使用

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

Flutter即时通讯插件chat360_flutter_sdk的使用

本指南将详细介绍如何在Flutter项目中使用chat360_flutter_sdk插件。通过这个插件,您可以轻松地为您的应用添加即时通讯功能。

安装

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

dependencies:
  chat360_flutter_sdk: ^0.0.1

然后运行flutter pub get来获取插件。

使用示例

以下是一个完整的示例,展示了如何在Flutter应用中使用chat360_flutter_sdk插件。

示例代码
import 'package:chat360_flutter_sdk/chat360_flutter_sdk_method_channel.dart';
import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:chat360_flutter_sdk/chat360_flutter_sdk.dart';

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

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = '未知';
  final _chat360FlutterSdkPlugin = Chat360FlutterSdk();
  final chat360 = Chat360();
  String botId = "9af90d6f-43c2-4f94-a021-66c2f1611e67";

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  // 平台消息是异步的,所以我们初始化在一个异步方法中。
  Future<void> initPlatformState() async {
    String platformVersion;
    // 平台消息可能失败,所以我们使用try/catch处理PlatformException。
    // 我们还处理消息可能返回null的情况。
    try {
      platformVersion = await chat360.getPlatformVersion() ?? '未知平台版本';
    } on PlatformException {
      platformVersion = '获取平台版本失败。';
    }

    // 如果小部件在异步平台消息还在飞行时从树中移除,我们希望丢弃回复而不是调用setState来更新我们的不存在的外观。
    if (!mounted) return;

    setState(() {
      _platformVersion = platformVersion;
    });
    chat360.setBotId(botId);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        backgroundColor: Colors.white,
        appBar: AppBar(
          backgroundColor: Colors.deepPurple.shade500,
          title: Padding(
            padding: const EdgeInsets.only(top: 40, bottom: 40, left: 20),
            child: const Text('Chat360DemoApp', style: TextStyle(fontSize: 26, fontWeight: FontWeight.w900)),
          ),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.spaceAround,
            children: [
              Row(mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  Padding(
                    padding: const EdgeInsets.only(left: 20, right: 20),
                    child: Image.asset('assets/Chat360Logo1.png', width: 300,),
                  )
                ],
              ),
              // Text('Running on: $_platformVersion\n'),
              ElevatedButton(
                  style: ElevatedButton.styleFrom(
                    primary: Colors.deepPurple.shade500,
                    shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10),),
                    fixedSize: Size(350, 80)
                  ),
                  onPressed: () {
                    Map<String, String>? meta = {"user_type": "is_guest", "mobile_no": "9876367957", "referral_code": "abcd123"};
                    chat360.startChatbot(botId!, meta);
                  },
                  child: Padding(
                    padding: const EdgeInsets.all(16.0),
                    child: const Text("开始聊天", style: TextStyle(fontSize: 30)),
                  ))
            ],
          ),
        ),
      ),
    );
  }
}

代码解释

  1. 导入必要的包

    import 'package:chat360_flutter_sdk/chat360_flutter_sdk_method_channel.dart';
    import 'package:flutter/material.dart';
    import 'dart:async';
    import 'package:flutter/services.dart';
    import 'package:chat360_flutter_sdk/chat360_flutter_sdk.dart';
    
  2. 初始化主应用

    void main() {
      runApp(const MyApp());
    }
    
  3. 定义主应用状态类

    class MyApp extends StatefulWidget {
      const MyApp({super.key});
    
      [@override](/user/override)
      State<MyApp> createState() => _MyAppState();
    }
    
  4. 初始化状态

    class _MyAppState extends State<MyApp> {
      String _platformVersion = '未知';
      final _chat360FlutterSdkPlugin = Chat360FlutterSdk();
      final chat360 = Chat360();
      String botId = "9af90d6f-43c2-4f94-a021-66c2f1611e67";
    
      [@override](/user/override)
      void initState() {
        super.initState();
        initPlatformState();
      }
    
  5. 异步初始化平台状态

    Future<void> initPlatformState() async {
      String platformVersion;
      try {
        platformVersion = await chat360.getPlatformVersion() ?? '未知平台版本';
      } on PlatformException {
        platformVersion = '获取平台版本失败。';
      }
      if (!mounted) return;
      setState(() {
        _platformVersion = platformVersion;
      });
      chat360.setBotId(botId);
    }
    
  6. 构建应用界面

    [@override](/user/override)
    Widget build(BuildContext context) {
      return MaterialApp(
        home: Scaffold(
          backgroundColor: Colors.white,
          appBar: AppBar(
            backgroundColor: Colors.deepPurple.shade500,
            title: Padding(
              padding: const EdgeInsets.only(top: 40, bottom: 40, left: 20),
              child: const Text('Chat360DemoApp', style: TextStyle(fontSize: 26, fontWeight: FontWeight.w900)),
            ),
          ),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.spaceAround,
              children: [
                Row(mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    Padding(
                      padding: const EdgeInsets.only(left: 20, right: 20),
                      child: Image.asset('assets/Chat360Logo1.png', width: 300,),
                    )
                  ],
                ),
                ElevatedButton(
                    style: ElevatedButton.styleFrom(
                      primary: Colors.deepPurple.shade500,
                      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10),),
                      fixedSize: Size(350, 80)
                    ),
                    onPressed: () {
                      Map<String, String>? meta = {"user_type": "is_guest", "mobile_no": "9876367957", "referral_code": "abcd123"};
                      chat360.startChatbot(botId!, meta);
                    },
                    child: Padding(
                      padding: const EdgeInsets.all(16.0),
                      child: const Text("开始聊天", style: TextStyle(fontSize: 30)),
                    ))
              ],
            ),
          ),
        ),
      );
    }
    

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

1 回复

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


当然,下面是一个关于如何使用Flutter即时通讯插件chat360_flutter_sdk的示例代码案例。这个示例将展示如何初始化SDK、登录用户以及发送和接收消息的基本流程。

首先,确保你已经在pubspec.yaml文件中添加了chat360_flutter_sdk依赖:

dependencies:
  flutter:
    sdk: flutter
  chat360_flutter_sdk: ^最新版本号

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

1. 初始化SDK

在你的main.dart文件中,首先导入必要的包并初始化SDK:

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化SDK,这里假设你有初始化所需的配置信息
  Chat360.initialize(
    appId: '你的App ID',
    appKey: '你的App Key',
    serverUrl: '你的服务器URL',
  );

  runApp(MyApp());
}

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

2. 用户登录

ChatScreen中,实现用户登录逻辑:

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

class _ChatScreenState extends State<ChatScreen> {
  String? userId;
  String? accessToken;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Chat Screen'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: () async {
                // 这里假设你已经有一个登录界面或方法获取了userId和accessToken
                // 调用SDK的登录方法
                bool loginSuccess = await Chat360.login(userId: userId!, accessToken: accessToken!);
                if (loginSuccess) {
                  // 登录成功,进入聊天界面或显示聊天列表
                  ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('登录成功')));
                } else {
                  // 登录失败
                  ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('登录失败')));
                }
              },
              child: Text('登录'),
            ),
            // 假设登录成功后显示聊天界面(这里简单展示一个文本)
            if (userId != null && accessToken != null)
              Expanded(
                child: ChatRoom(),
              ),
          ],
        ),
      ),
    );
  }
}

3. 发送和接收消息

ChatRoom组件中实现发送和接收消息的逻辑:

class ChatRoom extends StatefulWidget {
  @override
  _ChatRoomState createState() => _ChatRoomState();
}

class _ChatRoomState extends State<ChatRoom> {
  final TextEditingController _messageController = TextEditingController();
  final List<Message> _messages = [];

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Expanded(
          child: ListView.builder(
            itemCount: _messages.length,
            itemBuilder: (context, index) {
              Message message = _messages[index];
              return ListTile(
                title: Text(message.text),
                subtitle: Text(message.senderId),
              );
            },
          ),
        ),
        TextField(
          controller: _messageController,
          decoration: InputDecoration(labelText: '发送消息'),
          onSubmitted: (value) async {
            // 发送消息
            bool sendSuccess = await Chat360.sendMessage(
              conversationId: '目标会话ID', // 这里需要替换为实际的会话ID
              text: value,
              senderId: '当前用户ID', // 这里假设已经登录并获取了用户ID
            );

            if (sendSuccess) {
              // 添加本地消息记录(实际应用中可能需要从服务器获取并更新消息列表)
              Message newMessage = Message(
                text: value,
                senderId: '当前用户ID',
                timestamp: DateTime.now().toIso8601String(),
              );
              setState(() {
                _messages.insert(0, newMessage); // 将新消息插入到列表顶部
              });
              _messageController.clear();
            } else {
              ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('消息发送失败')));
            }
          },
        ),
      ],
    );
  }
}

// 假设有一个Message类来表示消息
class Message {
  String text;
  String senderId;
  String timestamp;

  Message({required this.text, required this.senderId, required this.timestamp});
}

注意

  1. 依赖版本:确保使用chat360_flutter_sdk的最新版本,并且根据官方文档调整初始化参数和方法调用。
  2. 错误处理:示例代码省略了许多错误处理和边界情况的处理,实际开发中需要根据需求完善。
  3. UI设计:示例代码中的UI设计非常基础,实际开发中需要根据产品需求进行UI设计和优化。
  4. 会话管理:示例代码中假设已经有一个会话ID,实际开发中需要实现会话管理逻辑,包括创建会话、获取会话列表等。

这个示例展示了如何使用chat360_flutter_sdk进行基本的即时通讯功能,但实际应用中可能需要更复杂的逻辑和更多的功能,如文件传输、群聊、消息状态管理等。建议参考chat360_flutter_sdk的官方文档和示例代码进行深入学习和开发。

回到顶部