import 'package:lszlgl/model/rsp/dict_rsp.dart'; enum DictType { // 天气情况 tqqk('tqqk'), // 监测类别 jclb('jclb'), // 样品等级 ypdj('ypdj'), // 小麦品种优质类型 xmpzyzlx('xmpzyzlx'), // 玉米品种优质类型 ympzyzlx('ympzyzlx'), // 稻谷品种优质类型 dgpzyzlx('dgpzyzlx'), // 大豆品种优质类型 ddyzpzlx('ddyzpzlx'), // 工厂排污类型 gcpwlx('gcpwlx'), // 污染物类型 wrwlx('wrwlx'), // 病虫害类型 bchlx('bchlx'), // 真菌毒素污染类型 zjdswrlx('zjdswrlx'), // 重金属污染类型 zjswrlx('zjswrlx'), // 采样品种 cypz('cypz'), // 检验类型 jylx('jylx'); const DictType(this.type); final String type; } class DictService { DictService._(); static List? _dictList; static List get dictList => _dictList ??= []; static final Map> _dictMap = {}; static void saveDictList(List? list) { if (list == null) return; _dictList = list; // 按类型存储字典 _dictMap.clear(); for (DictRsp dict in list) { if (dict.dictType == null || dict.value == null) continue; Map map = _dictMap[dict.dictType!] ??= {}; map[dict.value!] = dict; } } static DictRsp? getDict(DictType? type, {num? value, String? valueStr}) { if (type == null) return null; String? v; if (valueStr == null) { if (value == null) return null; v = value.toString(); } else { v = valueStr; } return _dictMap[type.type]?[v]; } static String? getLabel(DictType type, {num? value, String? valueStr}) { return getDict(type, value: value, valueStr: valueStr)?.label; } static List? getDictList(DictType? type) { if (type == null) return null; return _dictMap[type.type]?.values.toList(); } static num? getDictFirstNum(DictType type) { var list = getDictList(type); return list?.first.value != null ? num.parse(list!.first.value!) : null; } }