onMessage method
dynamic
onMessage(
- dynamic data
Implementation
onMessage(dynamic data) {
try {
if (kDebugMode) {
print('socket:: data $data');
}
var message = (data['message'] as List)
.map((d) => Message.fromJson(d))
.where((element) => element.role == 'assistance')
.firstOrNull;
if (kDebugMode) {
print('socket:: message $message');
print('socket:: messageId ${message?.id}');
}
if (message != null && data['replyMode'] == 'auto') {
var messageExists =
value.messages?.any((e) => e.id == message.id) ?? false;
var messages = messageExists
? value.messages?.map((e) => e.id == message.id ? message : e)
: [...?value.messages, message];
// messages.re
if (kDebugMode) {
for (Message item in messages!) {
print('socket:: ${item.id}');
}
}
// messages.sort
value = value.copyWith(isLoading: false, messages: messages?.toList());
Future.delayed(const Duration(milliseconds: 500), () {
scrollController.jumpTo(scrollController.position.maxScrollExtent);
});
}
} catch (error) {
if (kDebugMode) {
print('socket:: error $error');
print(error);
}
}
}