intimacy_util.dart 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import '../data/bean/intimacy_config_info.dart';
  2. class IntimacyUtil {
  3. IntimacyUtil._();
  4. static IntimacyConfigInfo? _configInfo = IntimacyConfigInfo([
  5. IntimacyBean(20, 0, '初相识', 'http://cdn.atmob.com/keyboard/icon/stage1.png'),
  6. IntimacyBean(40, 21, '追爱期ing', 'http://cdn.atmob.com/keyboard/icon/stage2.png'),
  7. IntimacyBean(60, 41, '暧昧期ing', 'http://cdn.atmob.com/keyboard/icon/stage3.png'),
  8. IntimacyBean(80, 61, '热恋期', 'http://cdn.atmob.com/keyboard/icon/stage4.png'),
  9. IntimacyBean(90, 81, '伴侣', 'http://cdn.atmob.com/keyboard/icon/stage5.png'),
  10. IntimacyBean(100, 91, '灵魂伴侣', 'http://cdn.atmob.com/keyboard/icon/stage6.png'),
  11. ]);
  12. static List<IntimacyBean>? intimacyList() {
  13. return _configInfo?.intimacy;
  14. }
  15. /// 设置亲密度配置
  16. static void setConfig(IntimacyConfigInfo? config) {
  17. _configInfo = config;
  18. }
  19. /// 获取亲密度名称
  20. static String getIntimacyName(int intimacy) {
  21. final levels = _configInfo?.intimacy;
  22. if (levels == null || levels.isEmpty) return "?";
  23. for (final level in levels) {
  24. if (intimacy >= (level.min ?? 0) && intimacy <= (level.max ?? 0)) {
  25. return level.name ?? "?";
  26. }
  27. }
  28. return "?";
  29. }
  30. /// 获取当前对应的 IntimacyBean
  31. static IntimacyBean? getIntimacyLevel(int intimacy) {
  32. final levels = _configInfo?.intimacy;
  33. if (levels == null || levels.isEmpty) return null;
  34. for (final level in levels) {
  35. if (intimacy >= (level.min ?? 0) && intimacy <= (level.max ?? 0)) {
  36. return level;
  37. }
  38. }
  39. return null;
  40. }
  41. /// 根据 index 获取中值
  42. static int getMedianByIndex(int index) {
  43. final levels = _configInfo?.intimacy;
  44. if (levels == null || index < 0 || index >= levels.length) return 0;
  45. final level = levels[index];
  46. final min = level.min ?? 0;
  47. final max = level.max ?? 0;
  48. return ((min + max) / 2).round();
  49. }
  50. }