loadMessagesWithKeyword method
- String keywords,
- {String? sender,
- int timestamp = -1,
- int count = 20,
- MessageSearchScope searchScope = MessageSearchScope.All,
- EMSearchDirection direction = EMSearchDirection.Up}
根据消息中的关键词、消息时间戳、要搜索的消息条数、搜索范围和搜索方向从 SDK 本地数据库中搜索指定数量的消息。
注意:若搜索的消息条数非常大,需要考虑内存消耗。
Param keywords
搜索消息中的关键词。
Param sender
消息发送方。若不设置该参数,SDK 搜索消息时会忽略该参数。
Param timestamp
搜索的起始消息时间戳。
Param count
搜索的消息条数。
Param searchScope
消息搜索范围,详见 MessageSearchScope。
Param direction
消息搜索方向。
Return 消息列表。
Throws 如果有异常会在这里抛出,包含错误码和错误描述,详见 EMError。
Implementation
Future<List<EMMessage>> loadMessagesWithKeyword(
String keywords, {
String? sender,
int timestamp = -1,
int count = 20,
MessageSearchScope searchScope = MessageSearchScope.All,
EMSearchDirection direction = EMSearchDirection.Up,
}) async {
Map req = this._toJson();
req["keywords"] = keywords;
req['count'] = count;
req['timestamp'] = timestamp;
req['searchScope'] = MessageSearchScope.values.indexOf(searchScope);
req['direction'] = direction == EMSearchDirection.Up ? "up" : "down";
req.putIfNotNull("sender", sender);
Map<String, dynamic> result = await _emConversationChannel.invokeMethod(
ChatMethodKeys.loadMsgWithKeywords, req);
try {
EMError.hasErrorFromResult(result);
List<EMMessage> msgList = [];
result[ChatMethodKeys.loadMsgWithKeywords]?.forEach((element) {
msgList.add(EMMessage.fromJson(element));
});
return msgList;
} on EMError catch (e) {
throw e;
}
}