loadMessagesWithKeyword method
- String keywords, {
- @Deprecated('The `sender` parameter is deprecated, use `senders` instead.') String? sender,
- List<
String> ? senders, - int timestamp = -1,
- int count = 20,
- MessageSearchScope searchScope = MessageSearchScope.All,
- EMSearchDirection direction = EMSearchDirection.Up,
~english Loads messages from the local database by the following parameters: keywords, timestamp, the number of messages to retrieve, sender, search scope, and search direction.
Note Pay attention to the memory usage when you retrieve a great number of messages.
Param keywords
The keywords in message.
Param senders
The message sender list. If you do not set this parameter, the SDK ignores this parameter when retrieving messages.
Param timestamp
The starting message timestamp for search.
Param count
The number of messages to retrieve.
Param searchScope
The message search scope. See MessageSearchScope
.
Param direction
The direction in which the message is loaded: EMSearchDirection.
EMSearchDirection.Up
: Gets the messages loaded before the timestamp of the specified message ID.
EMSearchDirection.Down
: Gets the messages loaded after the timestamp of the specified message ID.
Returns The list of retrieved messages.
Throws A description of the exception. See EMError. ~end
~chinese 根据消息中的关键词、消息时间戳、要搜索的消息条数、搜索范围和搜索方向从 SDK 本地数据库中搜索指定数量的消息。
注意:若搜索的消息条数非常大,需要考虑内存消耗。
Param keywords
搜索消息中的关键词。
Param senders
消息发送方列表。若不设置该参数,SDK 搜索消息时会忽略该参数。
Param timestamp
搜索的起始消息时间戳。
Param count
搜索的消息条数。
Param searchScope
消息搜索范围,详见 MessageSearchScope
。
Param direction
消息搜索方向。
Return 消息列表。
Throws 如果有异常会在这里抛出,包含错误码和错误描述,详见 EMError。 ~end
Implementation
Future<List<EMMessage>> loadMessagesWithKeyword(
String keywords, {
@Deprecated('The `sender` parameter is deprecated, use `senders` instead.')
String? sender,
List<String>? senders,
int timestamp = -1,
int count = 20,
MessageSearchScope searchScope = MessageSearchScope.All,
EMSearchDirection direction = EMSearchDirection.Up,
}) async {
Map req = _toJson();
req["keywords"] = keywords;
req['count'] = count;
req['timestamp'] = timestamp;
req['searchScope'] = MessageSearchScope.values.indexOf(searchScope);
req['direction'] = direction.index;
req.putIfNotNull("senders", senders);
req.putIfNotNull("from", 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;
} catch (e) {
rethrow;
}
}