intimacy_util.dart 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import '../data/bean/intimacy_config_info.dart';
  2. class IntimacyUtil {
  3. IntimacyUtil._();
  4. static IntimacyConfigInfo? _configInfo;
  5. static List<IntimacyBean>? intimacyList() {
  6. return _configInfo?.intimacy;
  7. }
  8. /// 设置亲密度配置
  9. static void setConfig(IntimacyConfigInfo? config) {
  10. _configInfo = config;
  11. }
  12. /// 获取亲密度名称
  13. static String getIntimacyName(int intimacy) {
  14. final levels = _configInfo?.intimacy;
  15. if (levels == null || levels.isEmpty) return "未知";
  16. for (final level in levels) {
  17. if (intimacy >= (level.min ?? 0) && intimacy <= (level.max ?? 0)) {
  18. return level.name ?? "未知";
  19. }
  20. }
  21. return "未知";
  22. }
  23. /// 获取当前对应的 IntimacyBean
  24. static IntimacyBean? getIntimacyLevel(int intimacy) {
  25. final levels = _configInfo?.intimacy;
  26. if (levels == null || levels.isEmpty) return null;
  27. for (final level in levels) {
  28. if (intimacy >= (level.min ?? 0) && intimacy <= (level.max ?? 0)) {
  29. return level;
  30. }
  31. }
  32. return null;
  33. }
  34. /// 根据 index 获取中值
  35. static int getMedianByIndex(int index) {
  36. final levels = _configInfo?.intimacy;
  37. if (levels == null || index < 0 || index >= levels.length) return 0;
  38. final level = levels[index];
  39. final min = level.min ?? 0;
  40. final max = level.max ?? 0;
  41. return ((min + max) / 2).round();
  42. }
  43. }