setMessages method
Replaces all existing messages with a new list.
Implementation
void setMessages(List<ChatMessage> messages) {
// Make a defensive copy of the messages
_messages = List<ChatMessage>.from(messages);
// Ensure the ordering is correct based on pagination configuration
if (paginationConfig.reverseOrder) {
// For reverse mode, sort by newest first
// With ListView.builder(reverse: true), newest messages will appear at the bottom
_messages.sort((a, b) => b.createdAt.compareTo(a.createdAt));
} else {
// For chronological mode, sort by oldest first
// With ListView.builder(reverse: false), newest messages will appear at the bottom
_messages.sort((a, b) => a.createdAt.compareTo(b.createdAt));
}
_messageCache = {for (var m in _messages) _getMessageId(m): m};
_currentPage = 1;
notifyListeners();
// Only scroll to bottom if configured to do so
final config = scrollBehaviorConfig;
if (_messages.isNotEmpty && config.autoScrollBehavior != AutoScrollBehavior.never) {
const isUserMessage = false; // Default assumption
_scrollAfterRender(isUserMessage, false, config);
}
}