Я создаю приложение чата и не хочу отображать аватар пользователя снова и снова, если пользователь отправляет несколько сообщений подряд.
Пользовательские сообщения хранятся в Map
, где самое новое сообщение имеет индекс 0
.
Чтобы проверить, отправлено ли сообщение с номером index
тем же лицом, что и ранее, я использую следующий метод:
bool _sameUser () {
if (index > 0 && map != null && map[index + 1] != null && map[index + 1]['fromUser’] == map[index][‘fromUser’]) {
return true;
} else {
return false;
}
}
Однако это не работает для самого нового сообщения или если имеется более двух сообщений от одного пользователя.
Как я могу переписать условное, чтобы оно работало как задумано?
Спасибо!
UPDATE:
После попытки @Marcel ответить и проверить больше, я обнаружил, что это может быть связано с другой проблемой.
map[index + 1] != null
неверно, даже если сообщение 2 отправлено. Истинно только после отправки сообщения 3.
Я проверяю с условным в функции:
if (map[index + 1] != null) {
print('!=null');
}