Flutter即时通讯插件netease_corekit_im的使用

Flutter即时通讯插件netease_corekit_im的使用

Netease_corekit_im

Netease_corekit_im 是为 IM Flutter UIKit 组件提供统一初始化、通信路由以及 IM 能力接入的工具。


声明依赖项

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

在应用或模块的 <code>pubspec.yaml</code> 文件中添加所需的依赖项:

dependencies:
  netease_corekit_im: ^1.1.0

完整示例 Demo

以下是一个完整的示例代码,展示如何在 Flutter 项目中使用 netease_corekit_im 插件。

1. 初始化插件

首先,在您的 main.dart 文件中进行初始化。通常在 main() 函数中完成。

import 'package:flutter/material.dart';
import 'package:netease_corekit_im/netease_corekit_im.dart'; // 引入插件

void main() async {
  WidgetsFlutterBinding.ensureInitialized(); // 确保 Flutter 框架已初始化

  // 初始化插件
  await NIMCoreKitIm().initialize(
    appKey: "your_app_key", // 替换为您的网易云信 App Key
    clientType: ClientType.iOS, // 客户端类型(可选 iOS 或 Android)
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(),
    );
  }
}
2. 创建聊天页面

接下来,创建一个简单的聊天页面,展示基本的聊天功能。

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

class _HomePageState extends State<HomePage> {
  final TextEditingController _textController = TextEditingController();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("即时通讯"),
      ),
      body: Column(
        children: [
          Expanded(
            child: ListView.builder(
              itemCount: 10, // 模拟聊天记录
              itemBuilder: (context, index) {
                return ListTile(
                  title: Text("消息 $index"),
                );
              },
            ),
          ),
          Padding(
            padding: const EdgeInsets.all(8.0),
            child: Row(
              children: [
                Expanded(
                  child: TextField(
                    controller: _textController,
                    decoration: InputDecoration(hintText: "输入消息"),
                  ),
                ),
                IconButton(
                  icon: Icon(Icons.send),
                  onPressed: () {
                    // 发送消息逻辑
                    print("发送消息: ${_textController.text}");
                    _textController.clear();
                  },
                ),
              ],
            ),
          ),
        ],
      ),
    );
  }
}

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

1 回复

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


netease_corekit_im 是网易云信提供的一个 Flutter 插件,用于在 Flutter 应用中集成即时通讯(IM)功能。它提供了丰富的 API,支持消息发送、接收、会话管理、群组管理等功能。

以下是使用 netease_corekit_im 插件的基本步骤和示例代码:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  netease_corekit_im: ^latest_version

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

2. 初始化 SDK

在使用 IM 功能之前,需要先初始化 SDK。通常在 main.dart 中进行初始化:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 IM SDK
  await NIMCoreKit.init(
    appKey: 'your_app_key',
  );
  
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter IM Demo',
      home: HomeScreen(),
    );
  }
}

3. 登录 IM 服务器

使用 login 方法登录 IM 服务器:

void loginIM(String account, String token) async {
  try {
    await NIMCoreKit.login(
      account: account,
      token: token,
    );
    print('登录成功');
  } catch (e) {
    print('登录失败: $e');
  }
}

4. 发送消息

使用 sendMessage 方法发送消息:

void sendTextMessage(String sessionId, String text) async {
  try {
    await NIMCoreKit.sendMessage(
      sessionId: sessionId,
      messageType: NIMessageType.text,
      text: text,
    );
    print('消息发送成功');
  } catch (e) {
    print('消息发送失败: $e');
  }
}

5. 接收消息

通过监听 NIMCoreKit.onMessageReceived 来接收消息:

void listenForMessages() {
  NIMCoreKit.onMessageReceived.listen((message) {
    print('收到消息: ${message.text}');
  });
}

6. 管理会话

获取会话列表:

void getSessions() async {
  try {
    List<NIMSession> sessions = await NIMCoreKit.getSessions();
    sessions.forEach((session) {
      print('会话ID: ${session.sessionId}');
    });
  } catch (e) {
    print('获取会话列表失败: $e');
  }
}

7. 退出登录

使用 logout 方法退出登录:

void logoutIM() async {
  try {
    await NIMCoreKit.logout();
    print('退出登录成功');
  } catch (e) {
    print('退出登录失败: $e');
  }
}

8. 其他功能

netease_corekit_im 还支持群组管理、好友管理、消息撤回、已读回执等功能,具体可以参考官方文档。

9. 处理生命周期

在 Flutter 中,建议在 WidgetsBindingObserver 中处理应用的生命周期,以确保 IM SDK 的正确运行:

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

class _HomeScreenState extends State<HomeScreen> with WidgetsBindingObserver {
  [@override](/user/override)
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
  }

  [@override](/user/override)
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }

  [@override](/user/override)
  void didChangeAppLifecycleState(AppLifecycleState state) {
    super.didChangeAppLifecycleState(state);
    if (state == AppLifecycleState.paused) {
      // 应用进入后台
      NIMCoreKit.enterBackground();
    } else if (state == AppLifecycleState.resumed) {
      // 应用回到前台
      NIMCoreKit.enterForeground();
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter IM Demo'),
      ),
      body: Center(
        child: Text('即时通讯示例'),
      ),
    );
  }
}
回到顶部