loadMessagesWithKeyword method
- String keywords,
- {String? sender,
- int timestamp = -1,
- int count = 20,
- ChatSearchDirection direction = ChatSearchDirection.Up}
Loads messages from the local database by the following parameters: keywords, timestamp, max count, sender, search direction.
Note Pay attention to the memory usage when the maxCount is large.
Param keywords
The keywords in message.
Param sender
The message sender. The param can also be used to search in group chat.
Param timestamp
The timestamp for search.
Param count
The maximum number of messages to search.
Param direction
The direction in which the message is loaded: ChatSearchDirection.
ChatSearchDirection.Up
: Gets the messages loaded before the timestamp of the specified message ID.
ChatSearchDirection.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 ChatError.
Implementation
Future<List<ChatMessage>> loadMessagesWithKeyword(
String keywords, {
String? sender,
int timestamp = -1,
int count = 20,
ChatSearchDirection direction = ChatSearchDirection.Up,
}) async {
Map req = this._toJson();
req["keywords"] = keywords;
req['count'] = count;
req['timestamp'] = timestamp;
req['direction'] = direction == ChatSearchDirection.Up ? "up" : "down";
req.putIfNotNull("sender", sender);
Map<String, dynamic> result = await _emConversationChannel.invokeMethod(
ChatMethodKeys.loadMsgWithKeywords, req);
try {
ChatError.hasErrorFromResult(result);
List<ChatMessage> msgList = [];
result[ChatMethodKeys.loadMsgWithKeywords]?.forEach((element) {
msgList.add(ChatMessage.fromJson(element));
});
return msgList;
} on ChatError catch (e) {
throw e;
}
}