检查地图中是否有连续值?

时间:2019-03-20 12:47:12

标签: oop if-statement dart flutter boolean

我正在创建一个聊天应用,并且如果用户连续发送多封邮件,不想一遍又一遍地显示用户头像。

用户消息存储在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');
}

1 个答案:

答案 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表达式是布尔值,因此可以直接将其返回。

相关问题