我正在创建一个聊天应用,并且如果用户连续发送多封邮件,不想一遍又一遍地显示用户头像。
用户消息存储在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;
}
}
但是,这不适用于最新消息或来自同一用户的多于两个消息。 我该如何重写条件以使其按预期工作?
谢谢!
更新:
尝试@Marcel答案并进行更多测试后,我发现另一个问题可能是导致此问题的原因。
map[index + 1] != null
也不正确,即使发送了消息2。仅在发送消息3后为真。
我使用条件函数进行测试:
if (map[index + 1] != null) {
print('!=null');
}
答案 0 :(得分:0)
除了测试0
以外,没有理由您的代码不适用于索引index > 0
。
通过删除它,它应该可以正常工作:
bool _sameUser () {
assert(index >= 0);
assert(map != null);
return map[index + 1] != null && map[index + 1]['fromUser'] == map[index]['fromUser'];
}
由于我假设index
不应小于0
,而map
不应小于null
,因此我将一些条件代码移至了{{1 }}语句。
另外,由于您的assert
表达式是布尔值,因此可以直接将其返回。