searchMsgFromDB method

  1. @Deprecated('Use EMChatManager.loadMessagesWithKeyword instead.')
Future<List<EMMessage>> searchMsgFromDB(
  1. String keywords,
  2. {int timestamp = -1,
  3. int maxCount = 20,
  4. String from = '',
  5. EMSearchDirection direction = EMSearchDirection.Up}
)

根据传入的参数从本地存储中搜索指定数量的消息。

注意:当 maxCount 非常大时,需要考虑内存消耗,目前限制一次最多搜索 400 条数据。

Param keywords 关键词。

Param timestamp 搜索消息的时间点,Unix 时间戳。

Param maxCount 搜索结果的最大条数。

Param from 搜索来自某人或者某群的消息,一般是指会话 ID。

Return 获取的消息列表。

Throws 如果有异常会在这里抛出,包含错误码和错误描述,详见 EMError

Implementation

@Deprecated('Use EMChatManager.loadMessagesWithKeyword instead.')

///
///
///
/// 根据传入的参数从本地存储中搜索指定数量的消息。
///
/// 注意:当 maxCount 非常大时,需要考虑内存消耗,目前限制一次最多搜索 400 条数据。
///
/// Param [keywords] 关键词。
///
/// Param [timestamp] 搜索消息的时间点,Unix 时间戳。
///
/// Param [maxCount] 搜索结果的最大条数。
///
/// Param [from] 搜索来自某人或者某群的消息,一般是指会话 ID。
///
/// **Return**  获取的消息列表。
///
/// **Throws**  如果有异常会在这里抛出,包含错误码和错误描述,详见 [EMError]。
///
Future<List<EMMessage>> searchMsgFromDB(
  String keywords, {
  int timestamp = -1,
  int maxCount = 20,
  String from = '',
  EMSearchDirection direction = EMSearchDirection.Up,
}) async {
  Map req = Map();
  req['keywords'] = keywords;
  req['timestamp'] = timestamp;
  req['maxCount'] = maxCount;
  req['from'] = from;
  req['direction'] = direction == EMSearchDirection.Up ? "up" : "down";

  Map result =
      await ChatChannel.invokeMethod(ChatMethodKeys.searchChatMsgFromDB, req);
  try {
    EMError.hasErrorFromResult(result);
    List<EMMessage> list = [];
    result[ChatMethodKeys.searchChatMsgFromDB]?.forEach((element) {
      list.add(EMMessage.fromJson(element));
    });
    return list;
  } on EMError catch (e) {
    throw e;
  }
}