dict_service.dart 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import 'package:lszlgl/model/rsp/dict_rsp.dart';
  2. enum DictType {
  3. /// 监测类别
  4. jclb('jclb');
  5. const DictType(this.type);
  6. final String type;
  7. }
  8. class DictService {
  9. DictService._();
  10. static DictService? _instance;
  11. static DictService get() => _instance ??= DictService._();
  12. List<DictRsp>? _dictList;
  13. List<DictRsp> get dictList => _dictList ??= [];
  14. final Map<String, Map<String, DictRsp>> _dictMap = {};
  15. void saveDictList(List<DictRsp>? list) {
  16. if (list == null) return;
  17. _dictList = list;
  18. // 按类型存储字典
  19. _dictMap.clear();
  20. for (DictRsp dict in list) {
  21. if (dict.dictType == null || dict.value == null) continue;
  22. Map<String, DictRsp> map = _dictMap[dict.dictType!] ??= {};
  23. map[dict.value!] = dict;
  24. }
  25. }
  26. DictRsp? getLabel(DictType type, {num? value, String? valueStr}) {
  27. String? v;
  28. if (valueStr == null) {
  29. if (value == null) return null;
  30. v = value.toString();
  31. } else {
  32. v = valueStr;
  33. }
  34. return _dictMap[type.type]?[v];
  35. }
  36. }