You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tanlongsheng 23215cfc06 修改聊天记录 2 years ago
..
android add 2 years ago
ios add 2 years ago
lib 修改聊天记录 2 years ago
LICENSE add 2 years ago
README.md add 2 years ago
pubspec.yaml add 2 years ago

README.md

chat_storage_sqlite

SQLite存储插件,用于存储聊天记录并支持分页查询。

功能特点

  • 使用SQLite数据库存储聊天记录
  • 提供分页查询功能,可指定获取对应页码的记录
  • 支持按会话ID组织和查询聊天记录
  • 提供添加、查询、删除等基本操作

使用方法

保存聊天记录

import 'package:chat_storage/chat_storage.dart';

// 保存一条聊天记录
final result = await ChatStorage.saveMessage(
  sessionId: 'session_123',
  message: '你好,这是一条测试消息',
  sender: 'user',
  metadata: '{"timestamp": 1630000000000}' // 可选的元数据,支持JSON字符串
);

if (result['success']) {
  print('消息保存成功,ID: ${result['id']}');
} else {
  print('消息保存失败: ${result['error']}');
}

获取聊天记录(支持分页)

// 获取指定会话的聊天记录,支持分页
final pagedResult = await ChatStorage.getMessages(
  sessionId: 'session_123',
  page: 1,      // 当前页码,从1开始
  pageSize: 20, // 每页记录数
);

// 使用结果
print('总记录数: ${pagedResult.totalCount}');
print('总页数: ${pagedResult.totalPages}');
print('当前页: ${pagedResult.page}');

// 遍历消息列表
for (var message in pagedResult.messages) {
  print('ID: ${message.id}');
  print('发送者: ${message.sender}');
  print('内容: ${message.message}');
  print('时间: ${message.timestamp}');
  print('---');
}

删除聊天记录

// 方式1:删除指定ID的消息
final deleteResult1 = await ChatStorage.deleteMessages(
  messageIds: [1, 2, 3],
);

// 方式2:删除整个会话的所有消息
final deleteResult2 = await ChatStorage.deleteMessages(
  sessionId: 'session_123',
);

// 方式3:清空整个数据库
final clearResult = await ChatStorage.clearDatabase();

注意事项

  • 插件会自动创建和管理SQLite数据库,无需手动初始化
  • 所有操作都是异步的,请使用async/await处理返回结果
  • 插件内部已处理异常情况,但建议在使用时添加适当的错误处理