dict_service.dart 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import 'package:lszlgl/model/rsp/dict_rsp.dart';
  2. enum DictType {
  3. // 天气情况
  4. tqqk('tqqk'),
  5. // 监测类别
  6. jclb('jclb'),
  7. // 样品等级
  8. ypdj('ypdj'),
  9. // 小麦品种优质类型
  10. xmpzyzlx('xmpzyzlx'),
  11. // 玉米品种优质类型
  12. ympzyzlx('ympzyzlx'),
  13. // 稻谷品种优质类型
  14. dgpzyzlx('dgpzyzlx'),
  15. // 大豆品种优质类型
  16. ddyzpzlx('ddyzpzlx'),
  17. // 工厂排污类型
  18. gcpwlx('gcpwlx'),
  19. // 污染物类型
  20. wrwlx('wrwlx'),
  21. // 病虫害类型
  22. bchlx('bchlx'),
  23. // 真菌毒素污染类型
  24. zjdswrlx('zjdswrlx'),
  25. // 重金属污染类型
  26. zjswrlx('zjswrlx'),
  27. // 采样品种
  28. cypz('cypz'),
  29. // 检验类型
  30. jylx('jylx');
  31. const DictType(this.type);
  32. final String type;
  33. }
  34. class DictService {
  35. DictService._();
  36. static List<DictRsp>? _dictList;
  37. static List<DictRsp> get dictList => _dictList ??= [];
  38. static final Map<String, Map<String, DictRsp>> _dictMap = {};
  39. static void saveDictList(List<DictRsp>? list) {
  40. if (list == null) return;
  41. _dictList = list;
  42. // 按类型存储字典
  43. _dictMap.clear();
  44. for (DictRsp dict in list) {
  45. if (dict.dictType == null || dict.value == null) continue;
  46. Map<String, DictRsp> map = _dictMap[dict.dictType!] ??= {};
  47. map[dict.value!] = dict;
  48. }
  49. }
  50. static DictRsp? getDict(DictType? type, {num? value, String? valueStr}) {
  51. if (type == null) return null;
  52. String? v;
  53. if (valueStr == null) {
  54. if (value == null) return null;
  55. v = value.toString();
  56. } else {
  57. v = valueStr;
  58. }
  59. return _dictMap[type.type]?[v];
  60. }
  61. static String? getLabel(DictType type, {num? value, String? valueStr}) {
  62. return getDict(type, value: value, valueStr: valueStr)?.label;
  63. }
  64. static List<DictRsp>? getDictList(DictType? type) {
  65. if (type == null) return null;
  66. return _dictMap[type.type]?.values.toList();
  67. }
  68. static num? getDictFirstNum(DictType type) {
  69. var list = getDictList(type);
  70. return list?.first.value != null ? num.parse(list!.first.value!) : null;
  71. }
  72. }