intimacy_util.dart 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. class IntimacyUtil {
  2. IntimacyUtil._();
  3. static final List<IntimacyLevel> intimacyLevels = [
  4. IntimacyLevel(max: 20, min: 0, name: "初相识", median: 10),
  5. IntimacyLevel(max: 40, min: 21, name: "追爱期", median: 30),
  6. IntimacyLevel(max: 60, min: 41, name: "暧昧期", median: 50),
  7. IntimacyLevel(max: 80, min: 61, name: "恋人", median: 70),
  8. IntimacyLevel(max: 90, min: 81, name: "伴侣", median: 85),
  9. IntimacyLevel(max: 100, min: 91, name: "老夫老妻", median: 95),
  10. ];
  11. /// 获取亲密程度名称
  12. static String getIntimacyName(int intimacy) {
  13. for (final level in intimacyLevels) {
  14. if (intimacy >= level.min && intimacy <= level.max) {
  15. return level.name;
  16. }
  17. }
  18. return "未知";
  19. }
  20. /// 获取对应的亲密程度对象
  21. static IntimacyLevel? getIntimacyLevel(int intimacy) {
  22. for (final level in intimacyLevels) {
  23. if (intimacy >= level.min && intimacy <= level.max) {
  24. return level;
  25. }
  26. }
  27. return null;
  28. }
  29. static int getMedianByIndex(int index) {
  30. if (index >= 0 && index < intimacyLevels.length) {
  31. return intimacyLevels[index].median;
  32. }
  33. return 0;
  34. }
  35. }
  36. class IntimacyLevel {
  37. final int max;
  38. final int min;
  39. final String name;
  40. final int median;
  41. const IntimacyLevel({
  42. required this.max,
  43. required this.min,
  44. required this.name,
  45. required this.median,
  46. });
  47. @override
  48. String toString() => 'IntimacyLevel($name: $min-$max)';
  49. }