Hibok
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 
 

56 行
1.2 KiB

  1. import 'package:chat/utils/MessageMgr.dart';
  2. class UnreadCountProvider {
  3. //未读消息条数管理
  4. Map<int, int> unreadCountMap = {};
  5. //是否有@我的消息
  6. Map<int, int> isHaveAlterme = {};
  7. updateUnreadCount(int sessionId, int count) {
  8. if (unreadCountMap[sessionId] == null) {
  9. unreadCountMap[sessionId] = 0;
  10. }
  11. unreadCountMap[sessionId] += count;
  12. MessageMgr().emit('Update UnreadCount', sessionId);
  13. }
  14. getHavaAltertime(int sessionId) {
  15. return isHaveAlterme[sessionId] ?? null;
  16. }
  17. setAlterMe(int sessionId, int time) {
  18. isHaveAlterme[sessionId] = time;
  19. }
  20. clear() {
  21. unreadCountMap.clear();
  22. }
  23. int getUnreadCount(int sessionId) {
  24. return unreadCountMap[sessionId] ?? 0;
  25. }
  26. bool checkUnreadMsg() {
  27. for (var v in unreadCountMap.values) {
  28. if (v > 0) {
  29. return true;
  30. }
  31. }
  32. return false;
  33. }
  34. signRead(int sessionId) {
  35. print('消除未读标记:$sessionId');
  36. int count = getUnreadCount(sessionId);
  37. isHaveAlterme[sessionId] = null;
  38. if (count > 0) {
  39. unreadCountMap[sessionId] = 0;
  40. MessageMgr().emit('Update UnreadCount', sessionId);
  41. }
  42. }
  43. }